tensorstudio 1.5.0__tar.gz → 1.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/CHANGELOG.md +13 -0
  2. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/CMakeLists.txt +1 -1
  3. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/PKG-INFO +2 -2
  4. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/README.md +1 -1
  5. tensorstudio-1.5.1/benchmarks/results.md +343 -0
  6. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/autograd/coverage.md +1 -1
  7. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/core/api-reference.md +5 -0
  8. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/core/broadcasting.md +6 -4
  9. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/hardware/cpu-backend.md +1 -1
  10. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/index.md +1 -1
  11. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/interchange/onnx.md +1 -1
  12. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/interchange/serialization.md +1 -1
  13. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/nn/training.md +1 -1
  14. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/performance/benchmarks.md +1 -1
  15. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/release/publishing.md +4 -4
  16. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/release/versioning.md +2 -2
  17. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/roadmap/roadmap.md +3 -2
  18. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/version.hpp +1 -1
  19. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/pyproject.toml +1 -1
  20. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/_version.py +1 -1
  21. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bind_tensor.cpp +45 -10
  22. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/dtype.cpp +8 -1
  23. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/ops.cpp +12 -3
  24. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/shape.cpp +17 -5
  25. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/tensor.cpp +3 -1
  26. tensorstudio-1.5.1/tests/test_errors.py +61 -0
  27. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_import.py +1 -1
  28. tensorstudio-1.5.0/benchmarks/results.md +0 -343
  29. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.gitattributes +0 -0
  30. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.github/workflows/ci.yml +0 -0
  31. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.github/workflows/publish-testpypi.yml +0 -0
  32. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.github/workflows/publish.yml +0 -0
  33. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.github/workflows/wheels.yml +0 -0
  34. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.gitignore +0 -0
  35. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/.pre-commit-config.yaml +0 -0
  36. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/CONTRIBUTING.md +0 -0
  37. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/LICENSE +0 -0
  38. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/SECURITY.md +0 -0
  39. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmark_all.py +0 -0
  40. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/__init__.py +0 -0
  41. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_activations.py +0 -0
  42. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_autograd.py +0 -0
  43. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_conv2d.py +0 -0
  44. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_elementwise.py +0 -0
  45. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_matmul.py +0 -0
  46. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_pooling.py +0 -0
  47. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_reductions.py +0 -0
  48. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_tensor_ops.py +0 -0
  49. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/bench_training_loop.py +0 -0
  50. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/benchmark_report.py +0 -0
  51. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/results_conv2d.md +0 -0
  52. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/results_matmul.md +0 -0
  53. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/results_pooling.md +0 -0
  54. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/results_reductions.md +0 -0
  55. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/benchmarks/results_tensor_ops.md +0 -0
  56. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/autograd/gradient-notes.md +0 -0
  57. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/autograd/overview.md +0 -0
  58. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/core/native-cpp-core.md +0 -0
  59. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/core/tensors.md +0 -0
  60. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/data/dataloader-patterns.md +0 -0
  61. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/data/datasets-and-dataloaders.md +0 -0
  62. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/data/tensor-datasets.md +0 -0
  63. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/development/contributing.md +0 -0
  64. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/development/cpp-first.md +0 -0
  65. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/getting-started/installation.md +0 -0
  66. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/getting-started/quickstart.md +0 -0
  67. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/getting-started/source-build.md +0 -0
  68. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/hardware/linux.md +0 -0
  69. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/hardware/macos.md +0 -0
  70. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/hardware/windows.md +0 -0
  71. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/interchange/model-formats.md +0 -0
  72. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/interchange/numpy-interop.md +0 -0
  73. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/interchange/trusted-serialization.md +0 -0
  74. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/nn/modules.md +0 -0
  75. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/nn/optimizers.md +0 -0
  76. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/nn/overview.md +0 -0
  77. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/performance/optimization.md +0 -0
  78. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/performance/profiling.md +0 -0
  79. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/project/checkpoints.md +0 -0
  80. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/project/project-layout.md +0 -0
  81. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/project/workflows.md +0 -0
  82. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/release/checklist.md +0 -0
  83. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/roadmap/milestones.md +0 -0
  84. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/roadmap/priorities.md +0 -0
  85. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/vision/dataset-creation.md +0 -0
  86. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/docs/vision/overview.md +0 -0
  87. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/basic_tensor_ops.py +0 -0
  88. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/export_onnx.py +0 -0
  89. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/image_folder_classification.py +0 -0
  90. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/linear_regression.py +0 -0
  91. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/project_training.py +0 -0
  92. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/save_load_model.py +0 -0
  93. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/tiny_mlp.py +0 -0
  94. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/examples/vision_classifier.py +0 -0
  95. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/autograd.hpp +0 -0
  96. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/device.hpp +0 -0
  97. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/dtype.hpp +0 -0
  98. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/errors.hpp +0 -0
  99. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/module.hpp +0 -0
  100. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/ops.hpp +0 -0
  101. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/optim.hpp +0 -0
  102. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/random.hpp +0 -0
  103. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/serialization.hpp +0 -0
  104. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/shape.hpp +0 -0
  105. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/storage.hpp +0 -0
  106. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/include/tensorstudio/tensor.hpp +0 -0
  107. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/mkdocs.yml +0 -0
  108. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/_C.pyi +0 -0
  109. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/__init__.py +0 -0
  110. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/autograd.py +0 -0
  111. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/data/__init__.py +0 -0
  112. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/data/dataloader.py +0 -0
  113. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/data/dataset.py +0 -0
  114. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/dtypes.py +0 -0
  115. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/errors.py +0 -0
  116. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/grad_mode.py +0 -0
  117. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/interchange/__init__.py +0 -0
  118. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/interchange/onnx.py +0 -0
  119. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/math.py +0 -0
  120. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/__init__.py +0 -0
  121. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/functional.py +0 -0
  122. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/losses.py +0 -0
  123. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/modules.py +0 -0
  124. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/ops.py +0 -0
  125. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/__init__.py +0 -0
  126. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/adam.py +0 -0
  127. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/adamw.py +0 -0
  128. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/lr_scheduler.py +0 -0
  129. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/sgd.py +0 -0
  130. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/utils.py +0 -0
  131. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/project/__init__.py +0 -0
  132. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/project/checkpoint.py +0 -0
  133. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/project/config.py +0 -0
  134. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/project/trainer.py +0 -0
  135. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/py.typed +0 -0
  136. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/serialization.py +0 -0
  137. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/tensor.py +0 -0
  138. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/typing.py +0 -0
  139. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/__init__.py +0 -0
  140. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/datasets.py +0 -0
  141. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/io.py +0 -0
  142. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/metrics.py +0 -0
  143. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/models.py +0 -0
  144. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/transforms.py +0 -0
  145. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/visualization.py +0 -0
  146. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bind_autograd.cpp +0 -0
  147. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bind_nn.cpp +0 -0
  148. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bind_ops.cpp +0 -0
  149. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bind_optim.cpp +0 -0
  150. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bindings.cpp +0 -0
  151. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/bindings/bindings.hpp +0 -0
  152. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/autograd.cpp +0 -0
  153. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/device.cpp +0 -0
  154. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/errors.cpp +0 -0
  155. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/module.cpp +0 -0
  156. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/optim.cpp +0 -0
  157. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/random.cpp +0 -0
  158. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/serialization.cpp +0 -0
  159. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/src/core/storage.cpp +0 -0
  160. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/test_all.py +0 -0
  161. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_autograd.py +0 -0
  162. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_benchmark_report.py +0 -0
  163. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_broadcasting.py +0 -0
  164. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_data.py +0 -0
  165. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_indexing.py +0 -0
  166. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_interchange.py +0 -0
  167. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_nn.py +0 -0
  168. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_numpy_interop.py +0 -0
  169. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_ops.py +0 -0
  170. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_optim.py +0 -0
  171. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_project.py +0 -0
  172. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_serialization.py +0 -0
  173. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_tensor.py +0 -0
  174. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_views.py +0 -0
  175. {tensorstudio-1.5.0 → tensorstudio-1.5.1}/tests/test_vision.py +0 -0
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 1.5.1 - 2026-07-07
6
+
7
+ - Completed the next ordered correctness-roadmap item with clearer native
8
+ shape, dtype, and indexing error messages.
9
+ - Broadcasting errors now include the mismatched axis and dimensions.
10
+ - Reshape errors now include requested element counts and inferred-shape
11
+ context.
12
+ - DType errors now validate Python dtype inputs and list supported dtype names
13
+ and aliases.
14
+ - Indexing errors now include tensor shape/rank context and the unsupported
15
+ Python index type/value where practical.
16
+ - Added focused regression tests for the improved diagnostics.
17
+
5
18
  ## 1.5.0 - 2026-07-07
6
19
 
7
20
  - Completed the next ordered correctness-roadmap item with native C++ view and
@@ -1,6 +1,6 @@
1
1
  cmake_minimum_required(VERSION 3.18)
2
2
 
3
- project(tensorstudio VERSION 1.5.0 LANGUAGES CXX)
3
+ project(tensorstudio VERSION 1.5.1 LANGUAGES CXX)
4
4
 
5
5
  find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
6
6
  set(PYBIND11_FINDPYTHON ON)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: tensorstudio
3
- Version: 1.5.0
3
+ Version: 1.5.1
4
4
  Summary: TensorStudio is a compact C++ tensor and autograd engine with a Python API for learning, experimentation, and lightweight ML workloads.
5
5
  Keywords: tensor,autograd,machine-learning,cpp,pybind11
6
6
  Author: TensorStudio contributors
@@ -71,7 +71,7 @@ Description-Content-Type: text/markdown
71
71
  TensorStudio is a compact C++ tensor and autograd engine with a Python API for
72
72
  learning, experimentation, and lightweight ML workloads.
73
73
 
74
- TensorStudio `1.5.0` is a CPU-only stable API foundation. It is eager-only,
74
+ TensorStudio `1.5.1` is a CPU-only stable API foundation. It is eager-only,
75
75
  intentionally small, and not a replacement for mature ML frameworks.
76
76
 
77
77
  ## Install
@@ -7,7 +7,7 @@
7
7
  TensorStudio is a compact C++ tensor and autograd engine with a Python API for
8
8
  learning, experimentation, and lightweight ML workloads.
9
9
 
10
- TensorStudio `1.5.0` is a CPU-only stable API foundation. It is eager-only,
10
+ TensorStudio `1.5.1` is a CPU-only stable API foundation. It is eager-only,
11
11
  intentionally small, and not a replacement for mature ML frameworks.
12
12
 
13
13
  ## Install
@@ -0,0 +1,343 @@
1
+ # TensorStudio Benchmark Results
2
+
3
+ These benchmarks are local references, not marketing claims.
4
+ TensorStudio is compared on CPU only and uses the same shapes and dtype.
5
+
6
+ ## Environment
7
+
8
+ - Platform: `Windows-10-10.0.26200-SP0`
9
+ - Processor: `Intel64 Family 6 Model 158 Stepping 10, GenuineIntel`
10
+ - Python: `3.10.11`
11
+ - TensorStudio: `1.5.1`
12
+ - NumPy: `1.26.4`
13
+ - TensorFlow CPU eager: unavailable (not installed)
14
+ - PyTorch CPU: unavailable (not installed)
15
+ - JAX CPU dispatch: available (0.6.2)
16
+
17
+ ## Summary
18
+
19
+ - TensorStudio wins versus NumPy: `21`
20
+ - TensorStudio losses versus NumPy: `82`
21
+ - TensorStudio wins versus JAX CPU dispatch: `84`
22
+ - TensorStudio losses versus JAX CPU dispatch: `14`
23
+
24
+ TensorStudio beat NumPy on at least one local benchmark case. See the detailed table before making any narrow performance claim.
25
+
26
+ ## Detailed Results
27
+
28
+ | category | operation | shape | library | median ms | mean ms | min ms | max ms | std ms | TS vs NumPy | TS vs TensorFlow | TS vs PyTorch | TS vs JAX | win vs NumPy | win vs TensorFlow | win vs PyTorch | win vs JAX | fastest library | result |
29
+ |---|---|---:|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---|---|---|---|---|---|
30
+ | elementwise | add | `(1,)` | TensorStudio | 0.0046 | 0.0046 | 0.0044 | 0.0049 | 0.0002 | 0.1463 | n/a | n/a | 2.5621 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
31
+ | elementwise | add | `(1,)` | NumPy | 0.0007 | 0.0007 | 0.0006 | 0.0007 | 0.0000 | 0.1463 | n/a | n/a | 2.5621 | no | n/a | n/a | yes | NumPy | NumPy baseline |
32
+ | elementwise | add | `(1,)` | JAX CPU dispatch | 0.0118 | 0.0121 | 0.0116 | 0.0133 | 0.0006 | 0.1463 | n/a | n/a | 2.5621 | no | n/a | n/a | yes | NumPy | reference |
33
+ | elementwise | sub | `(1,)` | TensorStudio | 0.0026 | 0.0027 | 0.0025 | 0.0031 | 0.0002 | 0.2657 | n/a | n/a | 4.7203 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
34
+ | elementwise | sub | `(1,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2657 | n/a | n/a | 4.7203 | no | n/a | n/a | yes | NumPy | NumPy baseline |
35
+ | elementwise | sub | `(1,)` | JAX CPU dispatch | 0.0124 | 0.0129 | 0.0116 | 0.0157 | 0.0015 | 0.2657 | n/a | n/a | 4.7203 | no | n/a | n/a | yes | NumPy | reference |
36
+ | elementwise | mul | `(1,)` | TensorStudio | 0.0025 | 0.0027 | 0.0024 | 0.0034 | 0.0004 | 0.2737 | n/a | n/a | 4.6423 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
37
+ | elementwise | mul | `(1,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2737 | n/a | n/a | 4.6423 | no | n/a | n/a | yes | NumPy | NumPy baseline |
38
+ | elementwise | mul | `(1,)` | JAX CPU dispatch | 0.0116 | 0.0120 | 0.0113 | 0.0129 | 0.0007 | 0.2737 | n/a | n/a | 4.6423 | no | n/a | n/a | yes | NumPy | reference |
39
+ | elementwise | div | `(1,)` | TensorStudio | 0.0026 | 0.0026 | 0.0025 | 0.0028 | 0.0002 | 0.2761 | n/a | n/a | 3.4863 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
40
+ | elementwise | div | `(1,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0008 | 0.0000 | 0.2761 | n/a | n/a | 3.4863 | no | n/a | n/a | yes | NumPy | NumPy baseline |
41
+ | elementwise | div | `(1,)` | JAX CPU dispatch | 0.0089 | 0.0089 | 0.0087 | 0.0093 | 0.0002 | 0.2761 | n/a | n/a | 3.4863 | no | n/a | n/a | yes | NumPy | reference |
42
+ | elementwise | chain_relu((x*2+1)/3) | `(1,)` | TensorStudio | 0.0097 | 0.0098 | 0.0096 | 0.0100 | 0.0002 | 0.5552 | n/a | n/a | 8.9392 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
43
+ | elementwise | chain_relu((x*2+1)/3) | `(1,)` | NumPy | 0.0054 | 0.0054 | 0.0053 | 0.0055 | 0.0001 | 0.5552 | n/a | n/a | 8.9392 | no | n/a | n/a | yes | NumPy | NumPy baseline |
44
+ | elementwise | chain_relu((x*2+1)/3) | `(1,)` | JAX CPU dispatch | 0.0866 | 0.0879 | 0.0853 | 0.0946 | 0.0034 | 0.5552 | n/a | n/a | 8.9392 | no | n/a | n/a | yes | NumPy | reference |
45
+ | elementwise | add | `(8,)` | TensorStudio | 0.0026 | 0.0026 | 0.0025 | 0.0028 | 0.0001 | 0.2500 | n/a | n/a | 4.5588 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
46
+ | elementwise | add | `(8,)` | NumPy | 0.0006 | 0.0006 | 0.0006 | 0.0007 | 0.0000 | 0.2500 | n/a | n/a | 4.5588 | no | n/a | n/a | yes | NumPy | NumPy baseline |
47
+ | elementwise | add | `(8,)` | JAX CPU dispatch | 0.0117 | 0.0135 | 0.0112 | 0.0174 | 0.0026 | 0.2500 | n/a | n/a | 4.5588 | no | n/a | n/a | yes | NumPy | reference |
48
+ | elementwise | sub | `(8,)` | TensorStudio | 0.0026 | 0.0027 | 0.0025 | 0.0029 | 0.0001 | 0.2685 | n/a | n/a | 4.3732 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
49
+ | elementwise | sub | `(8,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0008 | 0.0000 | 0.2685 | n/a | n/a | 4.3732 | no | n/a | n/a | yes | NumPy | NumPy baseline |
50
+ | elementwise | sub | `(8,)` | JAX CPU dispatch | 0.0114 | 0.0115 | 0.0109 | 0.0122 | 0.0004 | 0.2685 | n/a | n/a | 4.3732 | no | n/a | n/a | yes | NumPy | reference |
51
+ | elementwise | mul | `(8,)` | TensorStudio | 0.0026 | 0.0026 | 0.0025 | 0.0028 | 0.0001 | 0.2685 | n/a | n/a | 4.3188 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
52
+ | elementwise | mul | `(8,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2685 | n/a | n/a | 4.3188 | no | n/a | n/a | yes | NumPy | NumPy baseline |
53
+ | elementwise | mul | `(8,)` | JAX CPU dispatch | 0.0114 | 0.0114 | 0.0112 | 0.0116 | 0.0002 | 0.2685 | n/a | n/a | 4.3188 | no | n/a | n/a | yes | NumPy | reference |
54
+ | elementwise | div | `(8,)` | TensorStudio | 0.0025 | 0.0025 | 0.0025 | 0.0026 | 0.0000 | 0.2907 | n/a | n/a | 3.4709 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
55
+ | elementwise | div | `(8,)` | NumPy | 0.0007 | 0.0009 | 0.0007 | 0.0013 | 0.0002 | 0.2907 | n/a | n/a | 3.4709 | no | n/a | n/a | yes | NumPy | NumPy baseline |
56
+ | elementwise | div | `(8,)` | JAX CPU dispatch | 0.0088 | 0.0088 | 0.0086 | 0.0090 | 0.0001 | 0.2907 | n/a | n/a | 3.4709 | no | n/a | n/a | yes | NumPy | reference |
57
+ | elementwise | chain_relu((x*2+1)/3) | `(8,)` | TensorStudio | 0.0096 | 0.0096 | 0.0096 | 0.0097 | 0.0001 | 0.5616 | n/a | n/a | 9.0605 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
58
+ | elementwise | chain_relu((x*2+1)/3) | `(8,)` | NumPy | 0.0054 | 0.0055 | 0.0052 | 0.0061 | 0.0003 | 0.5616 | n/a | n/a | 9.0605 | no | n/a | n/a | yes | NumPy | NumPy baseline |
59
+ | elementwise | chain_relu((x*2+1)/3) | `(8,)` | JAX CPU dispatch | 0.0872 | 0.0877 | 0.0853 | 0.0922 | 0.0024 | 0.5616 | n/a | n/a | 9.0605 | no | n/a | n/a | yes | NumPy | reference |
60
+ | elementwise | add | `(32,)` | TensorStudio | 0.0027 | 0.0028 | 0.0026 | 0.0030 | 0.0002 | 0.2932 | n/a | n/a | 4.6597 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
61
+ | elementwise | add | `(32,)` | NumPy | 0.0008 | 0.0008 | 0.0007 | 0.0009 | 0.0001 | 0.2932 | n/a | n/a | 4.6597 | no | n/a | n/a | yes | NumPy | NumPy baseline |
62
+ | elementwise | add | `(32,)` | JAX CPU dispatch | 0.0125 | 0.0126 | 0.0114 | 0.0139 | 0.0009 | 0.2932 | n/a | n/a | 4.6597 | no | n/a | n/a | yes | NumPy | reference |
63
+ | elementwise | sub | `(32,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0028 | 0.0001 | 0.2489 | n/a | n/a | 4.3298 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
64
+ | elementwise | sub | `(32,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0008 | 0.0000 | 0.2489 | n/a | n/a | 4.3298 | no | n/a | n/a | yes | NumPy | NumPy baseline |
65
+ | elementwise | sub | `(32,)` | JAX CPU dispatch | 0.0118 | 0.0119 | 0.0115 | 0.0122 | 0.0002 | 0.2489 | n/a | n/a | 4.3298 | no | n/a | n/a | yes | NumPy | reference |
66
+ | elementwise | mul | `(32,)` | TensorStudio | 0.0028 | 0.0028 | 0.0026 | 0.0030 | 0.0001 | 0.2489 | n/a | n/a | 4.3641 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
67
+ | elementwise | mul | `(32,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2489 | n/a | n/a | 4.3641 | no | n/a | n/a | yes | NumPy | NumPy baseline |
68
+ | elementwise | mul | `(32,)` | JAX CPU dispatch | 0.0120 | 0.0124 | 0.0118 | 0.0138 | 0.0007 | 0.2489 | n/a | n/a | 4.3641 | no | n/a | n/a | yes | NumPy | reference |
69
+ | elementwise | div | `(32,)` | TensorStudio | 0.0026 | 0.0027 | 0.0026 | 0.0028 | 0.0001 | 0.2810 | n/a | n/a | 3.3462 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
70
+ | elementwise | div | `(32,)` | NumPy | 0.0007 | 0.0008 | 0.0007 | 0.0008 | 0.0000 | 0.2810 | n/a | n/a | 3.3462 | no | n/a | n/a | yes | NumPy | NumPy baseline |
71
+ | elementwise | div | `(32,)` | JAX CPU dispatch | 0.0088 | 0.0088 | 0.0087 | 0.0091 | 0.0002 | 0.2810 | n/a | n/a | 3.3462 | no | n/a | n/a | yes | NumPy | reference |
72
+ | elementwise | chain_relu((x*2+1)/3) | `(32,)` | TensorStudio | 0.0097 | 0.0096 | 0.0096 | 0.0097 | 0.0000 | 0.5735 | n/a | n/a | 9.0016 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
73
+ | elementwise | chain_relu((x*2+1)/3) | `(32,)` | NumPy | 0.0055 | 0.0058 | 0.0054 | 0.0068 | 0.0005 | 0.5735 | n/a | n/a | 9.0016 | no | n/a | n/a | yes | NumPy | NumPy baseline |
74
+ | elementwise | chain_relu((x*2+1)/3) | `(32,)` | JAX CPU dispatch | 0.0870 | 0.0872 | 0.0857 | 0.0895 | 0.0013 | 0.5735 | n/a | n/a | 9.0016 | no | n/a | n/a | yes | NumPy | reference |
75
+ | elementwise | add | `(128,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0028 | 0.0001 | 0.2499 | n/a | n/a | 4.1616 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
76
+ | elementwise | add | `(128,)` | NumPy | 0.0007 | 0.0007 | 0.0006 | 0.0009 | 0.0001 | 0.2499 | n/a | n/a | 4.1616 | no | n/a | n/a | yes | NumPy | NumPy baseline |
77
+ | elementwise | add | `(128,)` | JAX CPU dispatch | 0.0114 | 0.0115 | 0.0113 | 0.0117 | 0.0002 | 0.2499 | n/a | n/a | 4.1616 | no | n/a | n/a | yes | NumPy | reference |
78
+ | elementwise | sub | `(128,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0027 | 0.0000 | 0.2668 | n/a | n/a | 4.3693 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
79
+ | elementwise | sub | `(128,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0008 | 0.0000 | 0.2668 | n/a | n/a | 4.3693 | no | n/a | n/a | yes | NumPy | NumPy baseline |
80
+ | elementwise | sub | `(128,)` | JAX CPU dispatch | 0.0116 | 0.0116 | 0.0112 | 0.0118 | 0.0002 | 0.2668 | n/a | n/a | 4.3693 | no | n/a | n/a | yes | NumPy | reference |
81
+ | elementwise | mul | `(128,)` | TensorStudio | 0.0026 | 0.0026 | 0.0026 | 0.0027 | 0.0000 | 0.2675 | n/a | n/a | 4.5237 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
82
+ | elementwise | mul | `(128,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2675 | n/a | n/a | 4.5237 | no | n/a | n/a | yes | NumPy | NumPy baseline |
83
+ | elementwise | mul | `(128,)` | JAX CPU dispatch | 0.0118 | 0.0118 | 0.0117 | 0.0120 | 0.0001 | 0.2675 | n/a | n/a | 4.5237 | no | n/a | n/a | yes | NumPy | reference |
84
+ | elementwise | div | `(128,)` | TensorStudio | 0.0028 | 0.0030 | 0.0026 | 0.0040 | 0.0005 | 0.2712 | n/a | n/a | 3.1160 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
85
+ | elementwise | div | `(128,)` | NumPy | 0.0008 | 0.0009 | 0.0007 | 0.0014 | 0.0002 | 0.2712 | n/a | n/a | 3.1160 | no | n/a | n/a | yes | NumPy | NumPy baseline |
86
+ | elementwise | div | `(128,)` | JAX CPU dispatch | 0.0088 | 0.0098 | 0.0086 | 0.0140 | 0.0021 | 0.2712 | n/a | n/a | 3.1160 | no | n/a | n/a | yes | NumPy | reference |
87
+ | elementwise | chain_relu((x*2+1)/3) | `(128,)` | TensorStudio | 0.0101 | 0.0101 | 0.0100 | 0.0103 | 0.0001 | 0.5357 | n/a | n/a | 8.7850 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
88
+ | elementwise | chain_relu((x*2+1)/3) | `(128,)` | NumPy | 0.0054 | 0.0054 | 0.0054 | 0.0055 | 0.0000 | 0.5357 | n/a | n/a | 8.7850 | no | n/a | n/a | yes | NumPy | NumPy baseline |
89
+ | elementwise | chain_relu((x*2+1)/3) | `(128,)` | JAX CPU dispatch | 0.0889 | 0.0907 | 0.0872 | 0.0963 | 0.0032 | 0.5357 | n/a | n/a | 8.7850 | no | n/a | n/a | yes | NumPy | reference |
90
+ | elementwise | add | `(1024,)` | TensorStudio | 0.0032 | 0.0031 | 0.0030 | 0.0032 | 0.0001 | 0.3721 | n/a | n/a | 4.5073 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
91
+ | elementwise | add | `(1024,)` | NumPy | 0.0012 | 0.0011 | 0.0009 | 0.0012 | 0.0001 | 0.3721 | n/a | n/a | 4.5073 | no | n/a | n/a | yes | NumPy | NumPy baseline |
92
+ | elementwise | add | `(1024,)` | JAX CPU dispatch | 0.0142 | 0.0149 | 0.0123 | 0.0192 | 0.0024 | 0.3721 | n/a | n/a | 4.5073 | no | n/a | n/a | yes | NumPy | reference |
93
+ | elementwise | sub | `(1024,)` | TensorStudio | 0.0030 | 0.0030 | 0.0030 | 0.0031 | 0.0000 | 0.3246 | n/a | n/a | 4.5470 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
94
+ | elementwise | sub | `(1024,)` | NumPy | 0.0010 | 0.0010 | 0.0010 | 0.0010 | 0.0000 | 0.3246 | n/a | n/a | 4.5470 | no | n/a | n/a | yes | NumPy | NumPy baseline |
95
+ | elementwise | sub | `(1024,)` | JAX CPU dispatch | 0.0137 | 0.0142 | 0.0116 | 0.0176 | 0.0020 | 0.3246 | n/a | n/a | 4.5470 | no | n/a | n/a | yes | NumPy | reference |
96
+ | elementwise | mul | `(1024,)` | TensorStudio | 0.0031 | 0.0030 | 0.0029 | 0.0031 | 0.0001 | 0.3336 | n/a | n/a | 4.8682 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
97
+ | elementwise | mul | `(1024,)` | NumPy | 0.0010 | 0.0010 | 0.0010 | 0.0010 | 0.0000 | 0.3336 | n/a | n/a | 4.8682 | no | n/a | n/a | yes | NumPy | NumPy baseline |
98
+ | elementwise | mul | `(1024,)` | JAX CPU dispatch | 0.0149 | 0.0146 | 0.0125 | 0.0169 | 0.0017 | 0.3336 | n/a | n/a | 4.8682 | no | n/a | n/a | yes | NumPy | reference |
99
+ | elementwise | div | `(1024,)` | TensorStudio | 0.0032 | 0.0033 | 0.0032 | 0.0038 | 0.0002 | 0.6986 | n/a | n/a | 3.1039 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
100
+ | elementwise | div | `(1024,)` | NumPy | 0.0022 | 0.0023 | 0.0022 | 0.0023 | 0.0000 | 0.6986 | n/a | n/a | 3.1039 | no | n/a | n/a | yes | NumPy | NumPy baseline |
101
+ | elementwise | div | `(1024,)` | JAX CPU dispatch | 0.0100 | 0.0105 | 0.0097 | 0.0128 | 0.0012 | 0.6986 | n/a | n/a | 3.1039 | no | n/a | n/a | yes | NumPy | reference |
102
+ | elementwise | chain_relu((x*2+1)/3) | `(1024,)` | TensorStudio | 0.0119 | 0.0130 | 0.0118 | 0.0171 | 0.0021 | 0.6389 | n/a | n/a | 11.5433 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
103
+ | elementwise | chain_relu((x*2+1)/3) | `(1024,)` | NumPy | 0.0076 | 0.0075 | 0.0072 | 0.0077 | 0.0002 | 0.6389 | n/a | n/a | 11.5433 | no | n/a | n/a | yes | NumPy | NumPy baseline |
104
+ | elementwise | chain_relu((x*2+1)/3) | `(1024,)` | JAX CPU dispatch | 0.1371 | 0.1317 | 0.1147 | 0.1389 | 0.0089 | 0.6389 | n/a | n/a | 11.5433 | no | n/a | n/a | yes | NumPy | reference |
105
+ | elementwise | add | `(4096,)` | TensorStudio | 0.0065 | 0.0075 | 0.0049 | 0.0130 | 0.0029 | 0.4728 | n/a | n/a | 3.2641 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
106
+ | elementwise | add | `(4096,)` | NumPy | 0.0031 | 0.0030 | 0.0026 | 0.0035 | 0.0003 | 0.4728 | n/a | n/a | 3.2641 | no | n/a | n/a | yes | NumPy | NumPy baseline |
107
+ | elementwise | add | `(4096,)` | JAX CPU dispatch | 0.0212 | 0.0228 | 0.0160 | 0.0296 | 0.0049 | 0.4728 | n/a | n/a | 3.2641 | no | n/a | n/a | yes | NumPy | reference |
108
+ | elementwise | sub | `(4096,)` | TensorStudio | 0.0049 | 0.0050 | 0.0048 | 0.0054 | 0.0002 | 0.3232 | n/a | n/a | 3.1234 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
109
+ | elementwise | sub | `(4096,)` | NumPy | 0.0016 | 0.0016 | 0.0016 | 0.0016 | 0.0000 | 0.3232 | n/a | n/a | 3.1234 | no | n/a | n/a | yes | NumPy | NumPy baseline |
110
+ | elementwise | sub | `(4096,)` | JAX CPU dispatch | 0.0153 | 0.0160 | 0.0130 | 0.0204 | 0.0028 | 0.3232 | n/a | n/a | 3.1234 | no | n/a | n/a | yes | NumPy | reference |
111
+ | elementwise | mul | `(4096,)` | TensorStudio | 0.0049 | 0.0049 | 0.0047 | 0.0050 | 0.0001 | 0.3132 | n/a | n/a | 2.8687 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
112
+ | elementwise | mul | `(4096,)` | NumPy | 0.0015 | 0.0015 | 0.0015 | 0.0016 | 0.0000 | 0.3132 | n/a | n/a | 2.8687 | no | n/a | n/a | yes | NumPy | NumPy baseline |
113
+ | elementwise | mul | `(4096,)` | JAX CPU dispatch | 0.0141 | 0.0140 | 0.0126 | 0.0155 | 0.0010 | 0.3132 | n/a | n/a | 2.8687 | no | n/a | n/a | yes | NumPy | reference |
114
+ | elementwise | div | `(4096,)` | TensorStudio | 0.0057 | 0.0057 | 0.0056 | 0.0061 | 0.0002 | 0.2883 | n/a | n/a | 1.8886 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
115
+ | elementwise | div | `(4096,)` | NumPy | 0.0016 | 0.0016 | 0.0016 | 0.0016 | 0.0000 | 0.2883 | n/a | n/a | 1.8886 | no | n/a | n/a | yes | NumPy | NumPy baseline |
116
+ | elementwise | div | `(4096,)` | JAX CPU dispatch | 0.0107 | 0.0112 | 0.0101 | 0.0136 | 0.0012 | 0.2883 | n/a | n/a | 1.8886 | no | n/a | n/a | yes | NumPy | reference |
117
+ | elementwise | chain_relu((x*2+1)/3) | `(4096,)` | TensorStudio | 0.0191 | 0.0192 | 0.0189 | 0.0195 | 0.0003 | 0.5461 | n/a | n/a | 5.8840 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
118
+ | elementwise | chain_relu((x*2+1)/3) | `(4096,)` | NumPy | 0.0104 | 0.0106 | 0.0102 | 0.0117 | 0.0005 | 0.5461 | n/a | n/a | 5.8840 | no | n/a | n/a | yes | NumPy | NumPy baseline |
119
+ | elementwise | chain_relu((x*2+1)/3) | `(4096,)` | JAX CPU dispatch | 0.1121 | 0.1135 | 0.1055 | 0.1250 | 0.0068 | 0.5461 | n/a | n/a | 5.8840 | no | n/a | n/a | yes | NumPy | reference |
120
+ | elementwise | add | `(16384,)` | TensorStudio | 0.0127 | 0.0133 | 0.0123 | 0.0160 | 0.0014 | 0.2819 | n/a | n/a | 1.0329 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
121
+ | elementwise | add | `(16384,)` | NumPy | 0.0036 | 0.0036 | 0.0036 | 0.0036 | 0.0000 | 0.2819 | n/a | n/a | 1.0329 | no | n/a | n/a | yes | NumPy | NumPy baseline |
122
+ | elementwise | add | `(16384,)` | JAX CPU dispatch | 0.0132 | 0.0156 | 0.0126 | 0.0239 | 0.0043 | 0.2819 | n/a | n/a | 1.0329 | no | n/a | n/a | yes | NumPy | reference |
123
+ | elementwise | sub | `(16384,)` | TensorStudio | 0.0095 | 0.0095 | 0.0095 | 0.0096 | 0.0000 | 0.3980 | n/a | n/a | 1.3705 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
124
+ | elementwise | sub | `(16384,)` | NumPy | 0.0038 | 0.0038 | 0.0038 | 0.0038 | 0.0000 | 0.3980 | n/a | n/a | 1.3705 | no | n/a | n/a | yes | NumPy | NumPy baseline |
125
+ | elementwise | sub | `(16384,)` | JAX CPU dispatch | 0.0131 | 0.0139 | 0.0125 | 0.0184 | 0.0022 | 0.3980 | n/a | n/a | 1.3705 | no | n/a | n/a | yes | NumPy | reference |
126
+ | elementwise | mul | `(16384,)` | TensorStudio | 0.0095 | 0.0096 | 0.0095 | 0.0096 | 0.0000 | 0.3896 | n/a | n/a | 1.8563 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
127
+ | elementwise | mul | `(16384,)` | NumPy | 0.0037 | 0.0037 | 0.0037 | 0.0038 | 0.0000 | 0.3896 | n/a | n/a | 1.8563 | no | n/a | n/a | yes | NumPy | NumPy baseline |
128
+ | elementwise | mul | `(16384,)` | JAX CPU dispatch | 0.0177 | 0.0169 | 0.0129 | 0.0218 | 0.0035 | 0.3896 | n/a | n/a | 1.8563 | no | n/a | n/a | yes | NumPy | reference |
129
+ | elementwise | div | `(16384,)` | TensorStudio | 0.0132 | 0.0132 | 0.0131 | 0.0132 | 0.0000 | 0.3201 | n/a | n/a | 0.8437 | no | n/a | n/a | no | NumPy | loss vs NumPy |
130
+ | elementwise | div | `(16384,)` | NumPy | 0.0042 | 0.0044 | 0.0042 | 0.0050 | 0.0003 | 0.3201 | n/a | n/a | 0.8437 | no | n/a | n/a | no | NumPy | NumPy baseline |
131
+ | elementwise | div | `(16384,)` | JAX CPU dispatch | 0.0111 | 0.0113 | 0.0111 | 0.0118 | 0.0003 | 0.3201 | n/a | n/a | 0.8437 | no | n/a | n/a | no | NumPy | reference |
132
+ | elementwise | chain_relu((x*2+1)/3) | `(16384,)` | TensorStudio | 0.0431 | 0.0433 | 0.0428 | 0.0442 | 0.0005 | 0.4885 | n/a | n/a | 3.3933 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
133
+ | elementwise | chain_relu((x*2+1)/3) | `(16384,)` | NumPy | 0.0210 | 0.0213 | 0.0210 | 0.0220 | 0.0004 | 0.4885 | n/a | n/a | 3.3933 | no | n/a | n/a | yes | NumPy | NumPy baseline |
134
+ | elementwise | chain_relu((x*2+1)/3) | `(16384,)` | JAX CPU dispatch | 0.1462 | 0.1470 | 0.1383 | 0.1534 | 0.0057 | 0.4885 | n/a | n/a | 3.3933 | no | n/a | n/a | yes | NumPy | reference |
135
+ | activations | relu | `(1,)` | TensorStudio | 0.0018 | 0.0018 | 0.0017 | 0.0019 | 0.0001 | 0.9606 | n/a | n/a | 24.5550 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
136
+ | activations | relu | `(1,)` | NumPy | 0.0017 | 0.0017 | 0.0017 | 0.0019 | 0.0001 | 0.9606 | n/a | n/a | 24.5550 | no | n/a | n/a | yes | NumPy | NumPy baseline |
137
+ | activations | relu | `(1,)` | JAX CPU dispatch | 0.0434 | 0.0438 | 0.0426 | 0.0455 | 0.0010 | 0.9606 | n/a | n/a | 24.5550 | no | n/a | n/a | yes | NumPy | reference |
138
+ | activations | sigmoid | `(1,)` | TensorStudio | 0.0018 | 0.0018 | 0.0018 | 0.0020 | 0.0001 | 2.4894 | n/a | n/a | 37.6658 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
139
+ | activations | sigmoid | `(1,)` | NumPy | 0.0045 | 0.0045 | 0.0043 | 0.0046 | 0.0001 | 2.4894 | n/a | n/a | 37.6658 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
140
+ | activations | sigmoid | `(1,)` | JAX CPU dispatch | 0.0687 | 0.0697 | 0.0685 | 0.0724 | 0.0015 | 2.4894 | n/a | n/a | 37.6658 | yes | n/a | n/a | yes | TensorStudio | reference |
141
+ | activations | tanh | `(1,)` | TensorStudio | 0.0018 | 0.0018 | 0.0018 | 0.0019 | 0.0000 | 0.6766 | n/a | n/a | 16.3403 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
142
+ | activations | tanh | `(1,)` | NumPy | 0.0012 | 0.0012 | 0.0012 | 0.0012 | 0.0000 | 0.6766 | n/a | n/a | 16.3403 | no | n/a | n/a | yes | NumPy | NumPy baseline |
143
+ | activations | tanh | `(1,)` | JAX CPU dispatch | 0.0293 | 0.0293 | 0.0286 | 0.0296 | 0.0004 | 0.6766 | n/a | n/a | 16.3403 | no | n/a | n/a | yes | NumPy | reference |
144
+ | activations | exp | `(1,)` | TensorStudio | 0.0018 | 0.0019 | 0.0018 | 0.0020 | 0.0001 | 0.6618 | n/a | n/a | 16.1313 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
145
+ | activations | exp | `(1,)` | NumPy | 0.0012 | 0.0013 | 0.0012 | 0.0014 | 0.0001 | 0.6618 | n/a | n/a | 16.1313 | no | n/a | n/a | yes | NumPy | NumPy baseline |
146
+ | activations | exp | `(1,)` | JAX CPU dispatch | 0.0295 | 0.0296 | 0.0288 | 0.0306 | 0.0007 | 0.6618 | n/a | n/a | 16.1313 | no | n/a | n/a | yes | NumPy | reference |
147
+ | activations | log | `(1,)` | TensorStudio | 0.0019 | 0.0019 | 0.0018 | 0.0021 | 0.0001 | 0.6834 | n/a | n/a | 15.8139 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
148
+ | activations | log | `(1,)` | NumPy | 0.0013 | 0.0013 | 0.0012 | 0.0015 | 0.0001 | 0.6834 | n/a | n/a | 15.8139 | no | n/a | n/a | yes | NumPy | NumPy baseline |
149
+ | activations | log | `(1,)` | JAX CPU dispatch | 0.0294 | 0.0296 | 0.0287 | 0.0307 | 0.0007 | 0.6834 | n/a | n/a | 15.8139 | no | n/a | n/a | yes | NumPy | reference |
150
+ | activations | relu | `(8,)` | TensorStudio | 0.0018 | 0.0018 | 0.0017 | 0.0019 | 0.0001 | 0.9366 | n/a | n/a | 24.0948 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
151
+ | activations | relu | `(8,)` | NumPy | 0.0017 | 0.0017 | 0.0016 | 0.0018 | 0.0001 | 0.9366 | n/a | n/a | 24.0948 | no | n/a | n/a | yes | NumPy | NumPy baseline |
152
+ | activations | relu | `(8,)` | JAX CPU dispatch | 0.0442 | 0.0442 | 0.0425 | 0.0461 | 0.0013 | 0.9366 | n/a | n/a | 24.0948 | no | n/a | n/a | yes | NumPy | reference |
153
+ | activations | sigmoid | `(8,)` | TensorStudio | 0.0019 | 0.0019 | 0.0018 | 0.0019 | 0.0000 | 2.4066 | n/a | n/a | 38.4883 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
154
+ | activations | sigmoid | `(8,)` | NumPy | 0.0045 | 0.0045 | 0.0043 | 0.0045 | 0.0001 | 2.4066 | n/a | n/a | 38.4883 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
155
+ | activations | sigmoid | `(8,)` | JAX CPU dispatch | 0.0717 | 0.0718 | 0.0709 | 0.0725 | 0.0006 | 2.4066 | n/a | n/a | 38.4883 | yes | n/a | n/a | yes | TensorStudio | reference |
156
+ | activations | tanh | `(8,)` | TensorStudio | 0.0019 | 0.0019 | 0.0019 | 0.0019 | 0.0000 | 0.6357 | n/a | n/a | 15.1449 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
157
+ | activations | tanh | `(8,)` | NumPy | 0.0012 | 0.0012 | 0.0012 | 0.0013 | 0.0000 | 0.6357 | n/a | n/a | 15.1449 | no | n/a | n/a | yes | NumPy | NumPy baseline |
158
+ | activations | tanh | `(8,)` | JAX CPU dispatch | 0.0285 | 0.0286 | 0.0283 | 0.0293 | 0.0003 | 0.6357 | n/a | n/a | 15.1449 | no | n/a | n/a | yes | NumPy | reference |
159
+ | activations | exp | `(8,)` | TensorStudio | 0.0019 | 0.0020 | 0.0019 | 0.0022 | 0.0001 | 0.6618 | n/a | n/a | 15.3268 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
160
+ | activations | exp | `(8,)` | NumPy | 0.0013 | 0.0013 | 0.0012 | 0.0015 | 0.0001 | 0.6618 | n/a | n/a | 15.3268 | no | n/a | n/a | yes | NumPy | NumPy baseline |
161
+ | activations | exp | `(8,)` | JAX CPU dispatch | 0.0298 | 0.0297 | 0.0290 | 0.0304 | 0.0006 | 0.6618 | n/a | n/a | 15.3268 | no | n/a | n/a | yes | NumPy | reference |
162
+ | activations | log | `(8,)` | TensorStudio | 0.0020 | 0.0021 | 0.0020 | 0.0024 | 0.0002 | 0.6648 | n/a | n/a | 14.3260 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
163
+ | activations | log | `(8,)` | NumPy | 0.0013 | 0.0018 | 0.0012 | 0.0027 | 0.0006 | 0.6648 | n/a | n/a | 14.3260 | no | n/a | n/a | yes | NumPy | NumPy baseline |
164
+ | activations | log | `(8,)` | JAX CPU dispatch | 0.0290 | 0.0290 | 0.0283 | 0.0298 | 0.0005 | 0.6648 | n/a | n/a | 14.3260 | no | n/a | n/a | yes | NumPy | reference |
165
+ | activations | relu | `(32,)` | TensorStudio | 0.0017 | 0.0018 | 0.0017 | 0.0018 | 0.0000 | 0.9603 | n/a | n/a | 24.9638 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
166
+ | activations | relu | `(32,)` | NumPy | 0.0017 | 0.0017 | 0.0017 | 0.0017 | 0.0000 | 0.9603 | n/a | n/a | 24.9638 | no | n/a | n/a | yes | NumPy | NumPy baseline |
167
+ | activations | relu | `(32,)` | JAX CPU dispatch | 0.0434 | 0.0437 | 0.0430 | 0.0451 | 0.0008 | 0.9603 | n/a | n/a | 24.9638 | no | n/a | n/a | yes | NumPy | reference |
168
+ | activations | sigmoid | `(32,)` | TensorStudio | 0.0020 | 0.0020 | 0.0020 | 0.0021 | 0.0000 | 2.2200 | n/a | n/a | 34.2413 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
169
+ | activations | sigmoid | `(32,)` | NumPy | 0.0045 | 0.0045 | 0.0044 | 0.0048 | 0.0002 | 2.2200 | n/a | n/a | 34.2413 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
170
+ | activations | sigmoid | `(32,)` | JAX CPU dispatch | 0.0693 | 0.0701 | 0.0688 | 0.0726 | 0.0014 | 2.2200 | n/a | n/a | 34.2413 | yes | n/a | n/a | yes | TensorStudio | reference |
171
+ | activations | tanh | `(32,)` | TensorStudio | 0.0021 | 0.0022 | 0.0021 | 0.0022 | 0.0001 | 0.6005 | n/a | n/a | 13.7565 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
172
+ | activations | tanh | `(32,)` | NumPy | 0.0013 | 0.0013 | 0.0012 | 0.0015 | 0.0001 | 0.6005 | n/a | n/a | 13.7565 | no | n/a | n/a | yes | NumPy | NumPy baseline |
173
+ | activations | tanh | `(32,)` | JAX CPU dispatch | 0.0292 | 0.0294 | 0.0289 | 0.0304 | 0.0005 | 0.6005 | n/a | n/a | 13.7565 | no | n/a | n/a | yes | NumPy | reference |
174
+ | activations | exp | `(32,)` | TensorStudio | 0.0020 | 0.0021 | 0.0020 | 0.0023 | 0.0001 | 0.5972 | n/a | n/a | 14.4123 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
175
+ | activations | exp | `(32,)` | NumPy | 0.0012 | 0.0012 | 0.0012 | 0.0013 | 0.0000 | 0.5972 | n/a | n/a | 14.4123 | no | n/a | n/a | yes | NumPy | NumPy baseline |
176
+ | activations | exp | `(32,)` | JAX CPU dispatch | 0.0294 | 0.0295 | 0.0291 | 0.0303 | 0.0004 | 0.5972 | n/a | n/a | 14.4123 | no | n/a | n/a | yes | NumPy | reference |
177
+ | activations | log | `(32,)` | TensorStudio | 0.0020 | 0.0020 | 0.0020 | 0.0021 | 0.0000 | 0.6403 | n/a | n/a | 14.4213 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
178
+ | activations | log | `(32,)` | NumPy | 0.0013 | 0.0013 | 0.0013 | 0.0015 | 0.0001 | 0.6403 | n/a | n/a | 14.4213 | no | n/a | n/a | yes | NumPy | NumPy baseline |
179
+ | activations | log | `(32,)` | JAX CPU dispatch | 0.0293 | 0.0294 | 0.0287 | 0.0300 | 0.0004 | 0.6403 | n/a | n/a | 14.4213 | no | n/a | n/a | yes | NumPy | reference |
180
+ | activations | relu | `(128,)` | TensorStudio | 0.0019 | 0.0019 | 0.0018 | 0.0020 | 0.0000 | 0.9287 | n/a | n/a | 23.6020 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
181
+ | activations | relu | `(128,)` | NumPy | 0.0017 | 0.0018 | 0.0017 | 0.0018 | 0.0000 | 0.9287 | n/a | n/a | 23.6020 | no | n/a | n/a | yes | NumPy | NumPy baseline |
182
+ | activations | relu | `(128,)` | JAX CPU dispatch | 0.0444 | 0.0493 | 0.0434 | 0.0699 | 0.0103 | 0.9287 | n/a | n/a | 23.6020 | no | n/a | n/a | yes | NumPy | reference |
183
+ | activations | sigmoid | `(128,)` | TensorStudio | 0.0029 | 0.0029 | 0.0028 | 0.0030 | 0.0001 | 1.6456 | n/a | n/a | 24.7498 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
184
+ | activations | sigmoid | `(128,)` | NumPy | 0.0048 | 0.0047 | 0.0045 | 0.0049 | 0.0002 | 1.6456 | n/a | n/a | 24.7498 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
185
+ | activations | sigmoid | `(128,)` | JAX CPU dispatch | 0.0723 | 0.0715 | 0.0701 | 0.0725 | 0.0011 | 1.6456 | n/a | n/a | 24.7498 | yes | n/a | n/a | yes | TensorStudio | reference |
186
+ | activations | tanh | `(128,)` | TensorStudio | 0.0031 | 0.0031 | 0.0030 | 0.0031 | 0.0000 | 0.4739 | n/a | n/a | 10.0428 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
187
+ | activations | tanh | `(128,)` | NumPy | 0.0015 | 0.0015 | 0.0014 | 0.0017 | 0.0001 | 0.4739 | n/a | n/a | 10.0428 | no | n/a | n/a | yes | NumPy | NumPy baseline |
188
+ | activations | tanh | `(128,)` | JAX CPU dispatch | 0.0310 | 0.0308 | 0.0285 | 0.0339 | 0.0019 | 0.4739 | n/a | n/a | 10.0428 | no | n/a | n/a | yes | NumPy | reference |
189
+ | activations | exp | `(128,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0027 | 0.0000 | 0.5096 | n/a | n/a | 11.1536 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
190
+ | activations | exp | `(128,)` | NumPy | 0.0014 | 0.0014 | 0.0013 | 0.0014 | 0.0000 | 0.5096 | n/a | n/a | 11.1536 | no | n/a | n/a | yes | NumPy | NumPy baseline |
191
+ | activations | exp | `(128,)` | JAX CPU dispatch | 0.0296 | 0.0296 | 0.0293 | 0.0298 | 0.0002 | 0.5096 | n/a | n/a | 11.1536 | no | n/a | n/a | yes | NumPy | reference |
192
+ | activations | log | `(128,)` | TensorStudio | 0.0027 | 0.0028 | 0.0027 | 0.0031 | 0.0001 | 0.5246 | n/a | n/a | 10.6159 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
193
+ | activations | log | `(128,)` | NumPy | 0.0014 | 0.0014 | 0.0014 | 0.0015 | 0.0000 | 0.5246 | n/a | n/a | 10.6159 | no | n/a | n/a | yes | NumPy | NumPy baseline |
194
+ | activations | log | `(128,)` | JAX CPU dispatch | 0.0288 | 0.0288 | 0.0284 | 0.0294 | 0.0004 | 0.5246 | n/a | n/a | 10.6159 | no | n/a | n/a | yes | NumPy | reference |
195
+ | activations | relu | `(1024,)` | TensorStudio | 0.0025 | 0.0025 | 0.0024 | 0.0026 | 0.0000 | 0.9419 | n/a | n/a | 23.6470 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
196
+ | activations | relu | `(1024,)` | NumPy | 0.0023 | 0.0024 | 0.0023 | 0.0026 | 0.0001 | 0.9419 | n/a | n/a | 23.6470 | no | n/a | n/a | yes | NumPy | NumPy baseline |
197
+ | activations | relu | `(1024,)` | JAX CPU dispatch | 0.0580 | 0.0605 | 0.0535 | 0.0710 | 0.0063 | 0.9419 | n/a | n/a | 23.6470 | no | n/a | n/a | yes | NumPy | reference |
198
+ | activations | sigmoid | `(1024,)` | TensorStudio | 0.0093 | 0.0093 | 0.0092 | 0.0094 | 0.0001 | 0.7352 | n/a | n/a | 9.4155 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
199
+ | activations | sigmoid | `(1024,)` | NumPy | 0.0068 | 0.0069 | 0.0068 | 0.0070 | 0.0001 | 0.7352 | n/a | n/a | 9.4155 | no | n/a | n/a | yes | NumPy | NumPy baseline |
200
+ | activations | sigmoid | `(1024,)` | JAX CPU dispatch | 0.0875 | 0.0891 | 0.0863 | 0.0950 | 0.0033 | 0.7352 | n/a | n/a | 9.4155 | no | n/a | n/a | yes | NumPy | reference |
201
+ | activations | tanh | `(1024,)` | TensorStudio | 0.0136 | 0.0136 | 0.0133 | 0.0137 | 0.0001 | 0.2726 | n/a | n/a | 2.1402 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
202
+ | activations | tanh | `(1024,)` | NumPy | 0.0037 | 0.0037 | 0.0037 | 0.0038 | 0.0000 | 0.2726 | n/a | n/a | 2.1402 | no | n/a | n/a | yes | NumPy | NumPy baseline |
203
+ | activations | tanh | `(1024,)` | JAX CPU dispatch | 0.0291 | 0.0293 | 0.0287 | 0.0303 | 0.0005 | 0.2726 | n/a | n/a | 2.1402 | no | n/a | n/a | yes | NumPy | reference |
204
+ | activations | exp | `(1024,)` | TensorStudio | 0.0084 | 0.0084 | 0.0082 | 0.0087 | 0.0002 | 0.3102 | n/a | n/a | 3.4620 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
205
+ | activations | exp | `(1024,)` | NumPy | 0.0026 | 0.0026 | 0.0026 | 0.0026 | 0.0000 | 0.3102 | n/a | n/a | 3.4620 | no | n/a | n/a | yes | NumPy | NumPy baseline |
206
+ | activations | exp | `(1024,)` | JAX CPU dispatch | 0.0289 | 0.0290 | 0.0288 | 0.0293 | 0.0002 | 0.3102 | n/a | n/a | 3.4620 | no | n/a | n/a | yes | NumPy | reference |
207
+ | activations | log | `(1024,)` | TensorStudio | 0.0088 | 0.0088 | 0.0086 | 0.0089 | 0.0001 | 0.3289 | n/a | n/a | 3.3826 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
208
+ | activations | log | `(1024,)` | NumPy | 0.0029 | 0.0029 | 0.0028 | 0.0030 | 0.0000 | 0.3289 | n/a | n/a | 3.3826 | no | n/a | n/a | yes | NumPy | NumPy baseline |
209
+ | activations | log | `(1024,)` | JAX CPU dispatch | 0.0298 | 0.0299 | 0.0293 | 0.0306 | 0.0004 | 0.3289 | n/a | n/a | 3.3826 | no | n/a | n/a | yes | NumPy | reference |
210
+ | activations | relu | `(4096,)` | TensorStudio | 0.0050 | 0.0050 | 0.0050 | 0.0052 | 0.0001 | 0.7380 | n/a | n/a | 11.5708 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
211
+ | activations | relu | `(4096,)` | NumPy | 0.0037 | 0.0037 | 0.0034 | 0.0039 | 0.0002 | 0.7380 | n/a | n/a | 11.5708 | no | n/a | n/a | yes | NumPy | NumPy baseline |
212
+ | activations | relu | `(4096,)` | JAX CPU dispatch | 0.0574 | 0.0603 | 0.0532 | 0.0689 | 0.0062 | 0.7380 | n/a | n/a | 11.5708 | no | n/a | n/a | yes | NumPy | reference |
213
+ | activations | sigmoid | `(4096,)` | TensorStudio | 0.0323 | 0.0324 | 0.0322 | 0.0327 | 0.0002 | 0.3651 | n/a | n/a | 3.1205 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
214
+ | activations | sigmoid | `(4096,)` | NumPy | 0.0118 | 0.0118 | 0.0116 | 0.0119 | 0.0001 | 0.3651 | n/a | n/a | 3.1205 | no | n/a | n/a | yes | NumPy | NumPy baseline |
215
+ | activations | sigmoid | `(4096,)` | JAX CPU dispatch | 0.1008 | 0.1014 | 0.0952 | 0.1115 | 0.0055 | 0.3651 | n/a | n/a | 3.1205 | no | n/a | n/a | yes | NumPy | reference |
216
+ | activations | tanh | `(4096,)` | TensorStudio | 0.0582 | 0.0584 | 0.0580 | 0.0589 | 0.0004 | 0.1876 | n/a | n/a | 0.5549 | no | n/a | n/a | no | NumPy | loss vs NumPy |
217
+ | activations | tanh | `(4096,)` | NumPy | 0.0109 | 0.0110 | 0.0108 | 0.0111 | 0.0001 | 0.1876 | n/a | n/a | 0.5549 | no | n/a | n/a | no | NumPy | NumPy baseline |
218
+ | activations | tanh | `(4096,)` | JAX CPU dispatch | 0.0323 | 0.0323 | 0.0319 | 0.0329 | 0.0003 | 0.1876 | n/a | n/a | 0.5549 | no | n/a | n/a | no | NumPy | reference |
219
+ | activations | exp | `(4096,)` | TensorStudio | 0.0281 | 0.0281 | 0.0275 | 0.0284 | 0.0003 | 0.2129 | n/a | n/a | 1.1640 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
220
+ | activations | exp | `(4096,)` | NumPy | 0.0060 | 0.0060 | 0.0059 | 0.0062 | 0.0001 | 0.2129 | n/a | n/a | 1.1640 | no | n/a | n/a | yes | NumPy | NumPy baseline |
221
+ | activations | exp | `(4096,)` | JAX CPU dispatch | 0.0327 | 0.0357 | 0.0323 | 0.0424 | 0.0041 | 0.2129 | n/a | n/a | 1.1640 | no | n/a | n/a | yes | NumPy | reference |
222
+ | activations | log | `(4096,)` | TensorStudio | 0.0300 | 0.0299 | 0.0296 | 0.0300 | 0.0002 | 0.2505 | n/a | n/a | 1.1738 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
223
+ | activations | log | `(4096,)` | NumPy | 0.0075 | 0.0075 | 0.0073 | 0.0077 | 0.0001 | 0.2505 | n/a | n/a | 1.1738 | no | n/a | n/a | yes | NumPy | NumPy baseline |
224
+ | activations | log | `(4096,)` | JAX CPU dispatch | 0.0352 | 0.0353 | 0.0335 | 0.0387 | 0.0018 | 0.2505 | n/a | n/a | 1.1738 | no | n/a | n/a | yes | NumPy | reference |
225
+ | activations | relu | `(16384,)` | TensorStudio | 0.0156 | 0.0157 | 0.0156 | 0.0162 | 0.0002 | 0.5540 | n/a | n/a | 5.5171 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
226
+ | activations | relu | `(16384,)` | NumPy | 0.0087 | 0.0088 | 0.0087 | 0.0091 | 0.0002 | 0.5540 | n/a | n/a | 5.5171 | no | n/a | n/a | yes | NumPy | NumPy baseline |
227
+ | activations | relu | `(16384,)` | JAX CPU dispatch | 0.0863 | 0.0847 | 0.0683 | 0.0991 | 0.0103 | 0.5540 | n/a | n/a | 5.5171 | no | n/a | n/a | yes | NumPy | reference |
228
+ | activations | sigmoid | `(16384,)` | TensorStudio | 0.1208 | 0.1214 | 0.1205 | 0.1241 | 0.0014 | 0.2716 | n/a | n/a | 1.0294 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
229
+ | activations | sigmoid | `(16384,)` | NumPy | 0.0328 | 0.0334 | 0.0327 | 0.0353 | 0.0010 | 0.2716 | n/a | n/a | 1.0294 | no | n/a | n/a | yes | NumPy | NumPy baseline |
230
+ | activations | sigmoid | `(16384,)` | JAX CPU dispatch | 0.1244 | 0.1243 | 0.1011 | 0.1538 | 0.0173 | 0.2716 | n/a | n/a | 1.0294 | no | n/a | n/a | yes | NumPy | reference |
231
+ | activations | tanh | `(16384,)` | TensorStudio | 0.2368 | 0.2382 | 0.2354 | 0.2447 | 0.0034 | 0.1592 | n/a | n/a | 0.1664 | no | n/a | n/a | no | NumPy | loss vs NumPy |
232
+ | activations | tanh | `(16384,)` | NumPy | 0.0377 | 0.0380 | 0.0374 | 0.0389 | 0.0006 | 0.1592 | n/a | n/a | 0.1664 | no | n/a | n/a | no | NumPy | NumPy baseline |
233
+ | activations | tanh | `(16384,)` | JAX CPU dispatch | 0.0394 | 0.0389 | 0.0374 | 0.0397 | 0.0009 | 0.1592 | n/a | n/a | 0.1664 | no | n/a | n/a | no | NumPy | reference |
234
+ | activations | exp | `(16384,)` | TensorStudio | 0.1052 | 0.1052 | 0.1049 | 0.1055 | 0.0002 | 0.1789 | n/a | n/a | 0.3746 | no | n/a | n/a | no | NumPy | loss vs NumPy |
235
+ | activations | exp | `(16384,)` | NumPy | 0.0188 | 0.0188 | 0.0186 | 0.0192 | 0.0002 | 0.1789 | n/a | n/a | 0.3746 | no | n/a | n/a | no | NumPy | NumPy baseline |
236
+ | activations | exp | `(16384,)` | JAX CPU dispatch | 0.0394 | 0.0397 | 0.0392 | 0.0409 | 0.0006 | 0.1789 | n/a | n/a | 0.3746 | no | n/a | n/a | no | NumPy | reference |
237
+ | activations | log | `(16384,)` | TensorStudio | 0.1134 | 0.1130 | 0.1105 | 0.1152 | 0.0019 | 0.2144 | n/a | n/a | 0.3702 | no | n/a | n/a | no | NumPy | loss vs NumPy |
238
+ | activations | log | `(16384,)` | NumPy | 0.0243 | 0.0246 | 0.0243 | 0.0259 | 0.0006 | 0.2144 | n/a | n/a | 0.3702 | no | n/a | n/a | no | NumPy | NumPy baseline |
239
+ | activations | log | `(16384,)` | JAX CPU dispatch | 0.0420 | 0.0425 | 0.0415 | 0.0445 | 0.0012 | 0.2144 | n/a | n/a | 0.3702 | no | n/a | n/a | no | NumPy | reference |
240
+ | reductions | sum | `(1,)` | TensorStudio | 0.0022 | 0.0022 | 0.0022 | 0.0024 | 0.0001 | 0.9709 | n/a | n/a | 5.3188 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
241
+ | reductions | sum | `(1,)` | NumPy | 0.0022 | 0.0022 | 0.0021 | 0.0024 | 0.0001 | 0.9709 | n/a | n/a | 5.3188 | no | n/a | n/a | yes | NumPy | NumPy baseline |
242
+ | reductions | sum | `(1,)` | JAX CPU dispatch | 0.0118 | 0.0118 | 0.0115 | 0.0121 | 0.0002 | 0.9709 | n/a | n/a | 5.3188 | no | n/a | n/a | yes | NumPy | reference |
243
+ | reductions | mean | `(1,)` | TensorStudio | 0.0022 | 0.0022 | 0.0021 | 0.0022 | 0.0000 | 3.5155 | n/a | n/a | 4.8989 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
244
+ | reductions | mean | `(1,)` | NumPy | 0.0077 | 0.0078 | 0.0077 | 0.0079 | 0.0001 | 3.5155 | n/a | n/a | 4.8989 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
245
+ | reductions | mean | `(1,)` | JAX CPU dispatch | 0.0108 | 0.0111 | 0.0106 | 0.0121 | 0.0005 | 3.5155 | n/a | n/a | 4.8989 | yes | n/a | n/a | yes | TensorStudio | reference |
246
+ | reductions | sum | `(8,)` | TensorStudio | 0.0023 | 0.0023 | 0.0022 | 0.0023 | 0.0000 | 0.9601 | n/a | n/a | 5.4383 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
247
+ | reductions | sum | `(8,)` | NumPy | 0.0022 | 0.0022 | 0.0022 | 0.0023 | 0.0000 | 0.9601 | n/a | n/a | 5.4383 | no | n/a | n/a | yes | NumPy | NumPy baseline |
248
+ | reductions | sum | `(8,)` | JAX CPU dispatch | 0.0125 | 0.0125 | 0.0119 | 0.0132 | 0.0004 | 0.9601 | n/a | n/a | 5.4383 | no | n/a | n/a | yes | NumPy | reference |
249
+ | reductions | mean | `(8,)` | TensorStudio | 0.0023 | 0.0023 | 0.0022 | 0.0023 | 0.0001 | 3.4584 | n/a | n/a | 5.0478 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
250
+ | reductions | mean | `(8,)` | NumPy | 0.0078 | 0.0078 | 0.0075 | 0.0081 | 0.0002 | 3.4584 | n/a | n/a | 5.0478 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
251
+ | reductions | mean | `(8,)` | JAX CPU dispatch | 0.0114 | 0.0118 | 0.0111 | 0.0140 | 0.0011 | 3.4584 | n/a | n/a | 5.0478 | yes | n/a | n/a | yes | TensorStudio | reference |
252
+ | reductions | sum | `(32,)` | TensorStudio | 0.0024 | 0.0024 | 0.0023 | 0.0024 | 0.0000 | 0.9453 | n/a | n/a | 5.0853 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
253
+ | reductions | sum | `(32,)` | NumPy | 0.0022 | 0.0023 | 0.0021 | 0.0025 | 0.0001 | 0.9453 | n/a | n/a | 5.0853 | no | n/a | n/a | yes | NumPy | NumPy baseline |
254
+ | reductions | sum | `(32,)` | JAX CPU dispatch | 0.0121 | 0.0121 | 0.0118 | 0.0123 | 0.0002 | 0.9453 | n/a | n/a | 5.0853 | no | n/a | n/a | yes | NumPy | reference |
255
+ | reductions | mean | `(32,)` | TensorStudio | 0.0024 | 0.0024 | 0.0023 | 0.0024 | 0.0000 | 3.2742 | n/a | n/a | 5.6939 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
256
+ | reductions | mean | `(32,)` | NumPy | 0.0077 | 0.0078 | 0.0077 | 0.0080 | 0.0001 | 3.2742 | n/a | n/a | 5.6939 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
257
+ | reductions | mean | `(32,)` | JAX CPU dispatch | 0.0135 | 0.0164 | 0.0113 | 0.0289 | 0.0065 | 3.2742 | n/a | n/a | 5.6939 | yes | n/a | n/a | yes | TensorStudio | reference |
258
+ | reductions | sum | `(128,)` | TensorStudio | 0.0029 | 0.0036 | 0.0029 | 0.0059 | 0.0011 | 0.7399 | n/a | n/a | 4.6559 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
259
+ | reductions | sum | `(128,)` | NumPy | 0.0022 | 0.0022 | 0.0021 | 0.0022 | 0.0000 | 0.7399 | n/a | n/a | 4.6559 | no | n/a | n/a | yes | NumPy | NumPy baseline |
260
+ | reductions | sum | `(128,)` | JAX CPU dispatch | 0.0136 | 0.0135 | 0.0132 | 0.0137 | 0.0002 | 0.7399 | n/a | n/a | 4.6559 | no | n/a | n/a | yes | NumPy | reference |
261
+ | reductions | mean | `(128,)` | TensorStudio | 0.0030 | 0.0030 | 0.0029 | 0.0031 | 0.0001 | 2.6167 | n/a | n/a | 4.2260 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
262
+ | reductions | mean | `(128,)` | NumPy | 0.0078 | 0.0078 | 0.0077 | 0.0078 | 0.0001 | 2.6167 | n/a | n/a | 4.2260 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
263
+ | reductions | mean | `(128,)` | JAX CPU dispatch | 0.0126 | 0.0129 | 0.0124 | 0.0141 | 0.0006 | 2.6167 | n/a | n/a | 4.2260 | yes | n/a | n/a | yes | TensorStudio | reference |
264
+ | reductions | sum | `(1024,)` | TensorStudio | 0.0082 | 0.0083 | 0.0081 | 0.0084 | 0.0001 | 0.3090 | n/a | n/a | 1.7267 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
265
+ | reductions | sum | `(1024,)` | NumPy | 0.0025 | 0.0026 | 0.0025 | 0.0026 | 0.0000 | 0.3090 | n/a | n/a | 1.7267 | no | n/a | n/a | yes | NumPy | NumPy baseline |
266
+ | reductions | sum | `(1024,)` | JAX CPU dispatch | 0.0142 | 0.0150 | 0.0135 | 0.0178 | 0.0016 | 0.3090 | n/a | n/a | 1.7267 | no | n/a | n/a | yes | NumPy | reference |
267
+ | reductions | mean | `(1024,)` | TensorStudio | 0.0082 | 0.0085 | 0.0081 | 0.0092 | 0.0004 | 1.0007 | n/a | n/a | 1.8594 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
268
+ | reductions | mean | `(1024,)` | NumPy | 0.0082 | 0.0083 | 0.0081 | 0.0086 | 0.0002 | 1.0007 | n/a | n/a | 1.8594 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
269
+ | reductions | mean | `(1024,)` | JAX CPU dispatch | 0.0153 | 0.0154 | 0.0126 | 0.0189 | 0.0022 | 1.0007 | n/a | n/a | 1.8594 | yes | n/a | n/a | yes | TensorStudio | reference |
270
+ | reductions | sum | `(4096,)` | TensorStudio | 0.0269 | 0.0271 | 0.0266 | 0.0276 | 0.0004 | 0.1248 | n/a | n/a | 0.5840 | no | n/a | n/a | no | NumPy | loss vs NumPy |
271
+ | reductions | sum | `(4096,)` | NumPy | 0.0034 | 0.0034 | 0.0033 | 0.0036 | 0.0001 | 0.1248 | n/a | n/a | 0.5840 | no | n/a | n/a | no | NumPy | NumPy baseline |
272
+ | reductions | sum | `(4096,)` | JAX CPU dispatch | 0.0157 | 0.0166 | 0.0151 | 0.0212 | 0.0023 | 0.1248 | n/a | n/a | 0.5840 | no | n/a | n/a | no | NumPy | reference |
273
+ | reductions | mean | `(4096,)` | TensorStudio | 0.0303 | 0.0300 | 0.0263 | 0.0334 | 0.0031 | 0.3103 | n/a | n/a | 0.5122 | no | n/a | n/a | no | NumPy | loss vs NumPy |
274
+ | reductions | mean | `(4096,)` | NumPy | 0.0094 | 0.0100 | 0.0093 | 0.0119 | 0.0010 | 0.3103 | n/a | n/a | 0.5122 | no | n/a | n/a | no | NumPy | NumPy baseline |
275
+ | reductions | mean | `(4096,)` | JAX CPU dispatch | 0.0155 | 0.0158 | 0.0149 | 0.0172 | 0.0009 | 0.3103 | n/a | n/a | 0.5122 | no | n/a | n/a | no | NumPy | reference |
276
+ | reductions | sum | `(16384,)` | TensorStudio | 0.1001 | 0.1018 | 0.1000 | 0.1084 | 0.0033 | 0.0664 | n/a | n/a | 0.3348 | no | n/a | n/a | no | NumPy | loss vs NumPy |
277
+ | reductions | sum | `(16384,)` | NumPy | 0.0066 | 0.0067 | 0.0066 | 0.0068 | 0.0001 | 0.0664 | n/a | n/a | 0.3348 | no | n/a | n/a | no | NumPy | NumPy baseline |
278
+ | reductions | sum | `(16384,)` | JAX CPU dispatch | 0.0335 | 0.0311 | 0.0211 | 0.0358 | 0.0054 | 0.0664 | n/a | n/a | 0.3348 | no | n/a | n/a | no | NumPy | reference |
279
+ | reductions | mean | `(16384,)` | TensorStudio | 0.1008 | 0.1010 | 0.0996 | 0.1033 | 0.0013 | 0.1348 | n/a | n/a | 0.3345 | no | n/a | n/a | no | NumPy | loss vs NumPy |
280
+ | reductions | mean | `(16384,)` | NumPy | 0.0136 | 0.0138 | 0.0130 | 0.0150 | 0.0007 | 0.1348 | n/a | n/a | 0.3345 | no | n/a | n/a | no | NumPy | NumPy baseline |
281
+ | reductions | mean | `(16384,)` | JAX CPU dispatch | 0.0337 | 0.0299 | 0.0182 | 0.0363 | 0.0069 | 0.1348 | n/a | n/a | 0.3345 | no | n/a | n/a | no | NumPy | reference |
282
+ | reductions | sum_axis1 | `(16, 16)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0028 | 0.0001 | 1.0183 | n/a | n/a | 5.0925 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
283
+ | reductions | sum_axis1 | `(16, 16)` | NumPy | 0.0027 | 0.0028 | 0.0026 | 0.0032 | 0.0002 | 1.0183 | n/a | n/a | 5.0925 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
284
+ | reductions | sum_axis1 | `(16, 16)` | JAX CPU dispatch | 0.0135 | 0.0135 | 0.0124 | 0.0151 | 0.0010 | 1.0183 | n/a | n/a | 5.0925 | yes | n/a | n/a | yes | TensorStudio | reference |
285
+ | reductions | mean_axis0 | `(16, 16)` | TensorStudio | 0.0027 | 0.0028 | 0.0026 | 0.0033 | 0.0003 | 3.8536 | n/a | n/a | 4.4498 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
286
+ | reductions | mean_axis0 | `(16, 16)` | NumPy | 0.0102 | 0.0106 | 0.0097 | 0.0124 | 0.0009 | 3.8536 | n/a | n/a | 4.4498 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
287
+ | reductions | mean_axis0 | `(16, 16)` | JAX CPU dispatch | 0.0118 | 0.0120 | 0.0114 | 0.0131 | 0.0006 | 3.8536 | n/a | n/a | 4.4498 | yes | n/a | n/a | yes | TensorStudio | reference |
288
+ | reductions | sum_axis1 | `(64, 64)` | TensorStudio | 0.0056 | 0.0058 | 0.0054 | 0.0068 | 0.0005 | 0.7290 | n/a | n/a | 4.8945 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
289
+ | reductions | sum_axis1 | `(64, 64)` | NumPy | 0.0041 | 0.0042 | 0.0040 | 0.0046 | 0.0002 | 0.7290 | n/a | n/a | 4.8945 | no | n/a | n/a | yes | NumPy | NumPy baseline |
290
+ | reductions | sum_axis1 | `(64, 64)` | JAX CPU dispatch | 0.0274 | 0.0240 | 0.0146 | 0.0325 | 0.0076 | 0.7290 | n/a | n/a | 4.8945 | no | n/a | n/a | yes | NumPy | reference |
291
+ | reductions | mean_axis0 | `(64, 64)` | TensorStudio | 0.0044 | 0.0045 | 0.0039 | 0.0057 | 0.0006 | 2.7570 | n/a | n/a | 2.9597 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
292
+ | reductions | mean_axis0 | `(64, 64)` | NumPy | 0.0120 | 0.0132 | 0.0115 | 0.0185 | 0.0027 | 2.7570 | n/a | n/a | 2.9597 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
293
+ | reductions | mean_axis0 | `(64, 64)` | JAX CPU dispatch | 0.0129 | 0.0132 | 0.0127 | 0.0140 | 0.0005 | 2.7570 | n/a | n/a | 2.9597 | yes | n/a | n/a | yes | TensorStudio | reference |
294
+ | reductions | sum_axis1 | `(128, 128)` | TensorStudio | 0.0163 | 0.0173 | 0.0160 | 0.0213 | 0.0020 | 0.4686 | n/a | n/a | 1.7575 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
295
+ | reductions | sum_axis1 | `(128, 128)` | NumPy | 0.0077 | 0.0084 | 0.0076 | 0.0116 | 0.0016 | 0.4686 | n/a | n/a | 1.7575 | no | n/a | n/a | yes | NumPy | NumPy baseline |
296
+ | reductions | sum_axis1 | `(128, 128)` | JAX CPU dispatch | 0.0287 | 0.0277 | 0.0187 | 0.0353 | 0.0054 | 0.4686 | n/a | n/a | 1.7575 | no | n/a | n/a | yes | NumPy | reference |
297
+ | reductions | mean_axis0 | `(128, 128)` | TensorStudio | 0.0068 | 0.0068 | 0.0068 | 0.0069 | 0.0000 | 2.1600 | n/a | n/a | 2.4238 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
298
+ | reductions | mean_axis0 | `(128, 128)` | NumPy | 0.0147 | 0.0153 | 0.0143 | 0.0178 | 0.0013 | 2.1600 | n/a | n/a | 2.4238 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
299
+ | reductions | mean_axis0 | `(128, 128)` | JAX CPU dispatch | 0.0165 | 0.0171 | 0.0126 | 0.0219 | 0.0041 | 2.1600 | n/a | n/a | 2.4238 | yes | n/a | n/a | yes | TensorStudio | reference |
300
+ | reductions | sum_axis1 | `(256, 256)` | TensorStudio | 0.0646 | 0.0646 | 0.0641 | 0.0652 | 0.0004 | 0.3328 | n/a | n/a | 1.1015 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
301
+ | reductions | sum_axis1 | `(256, 256)` | NumPy | 0.0215 | 0.0222 | 0.0212 | 0.0251 | 0.0015 | 0.3328 | n/a | n/a | 1.1015 | no | n/a | n/a | yes | NumPy | NumPy baseline |
302
+ | reductions | sum_axis1 | `(256, 256)` | JAX CPU dispatch | 0.0711 | 0.0704 | 0.0586 | 0.0782 | 0.0074 | 0.3328 | n/a | n/a | 1.1015 | no | n/a | n/a | yes | NumPy | reference |
303
+ | reductions | mean_axis0 | `(256, 256)` | TensorStudio | 0.0183 | 0.0188 | 0.0183 | 0.0205 | 0.0009 | 1.1799 | n/a | n/a | 1.3230 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
304
+ | reductions | mean_axis0 | `(256, 256)` | NumPy | 0.0216 | 0.0224 | 0.0211 | 0.0260 | 0.0018 | 1.1799 | n/a | n/a | 1.3230 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
305
+ | reductions | mean_axis0 | `(256, 256)` | JAX CPU dispatch | 0.0243 | 0.0263 | 0.0239 | 0.0328 | 0.0034 | 1.1799 | n/a | n/a | 1.3230 | yes | n/a | n/a | yes | TensorStudio | reference |
306
+ | matmul | matmul | `(16, 16)` | TensorStudio | 0.0056 | 0.0054 | 0.0037 | 0.0069 | 0.0012 | 0.4206 | n/a | n/a | 3.6137 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
307
+ | matmul | matmul | `(16, 16)` | NumPy | 0.0024 | 0.0025 | 0.0021 | 0.0030 | 0.0003 | 0.4206 | n/a | n/a | 3.6137 | no | n/a | n/a | yes | NumPy | NumPy baseline |
308
+ | matmul | matmul | `(16, 16)` | JAX CPU dispatch | 0.0203 | 0.0257 | 0.0163 | 0.0405 | 0.0096 | 0.4206 | n/a | n/a | 3.6137 | no | n/a | n/a | yes | NumPy | reference |
309
+ | matmul | matmul | `(64, 64)` | TensorStudio | 0.0632 | 0.0630 | 0.0618 | 0.0636 | 0.0007 | 0.2410 | n/a | n/a | 0.2547 | no | n/a | n/a | no | NumPy | loss vs NumPy |
310
+ | matmul | matmul | `(64, 64)` | NumPy | 0.0152 | 0.0167 | 0.0112 | 0.0268 | 0.0058 | 0.2410 | n/a | n/a | 0.2547 | no | n/a | n/a | no | NumPy | NumPy baseline |
311
+ | matmul | matmul | `(64, 64)` | JAX CPU dispatch | 0.0161 | 0.0246 | 0.0159 | 0.0583 | 0.0169 | 0.2410 | n/a | n/a | 0.2547 | no | n/a | n/a | no | NumPy | reference |
312
+ | matmul | matmul | `(128, 128)` | TensorStudio | 0.2656 | 0.2723 | 0.2550 | 0.3089 | 0.0200 | 1.4666 | n/a | n/a | 0.5691 | yes | n/a | n/a | no | JAX CPU dispatch | win vs NumPy |
313
+ | matmul | matmul | `(128, 128)` | NumPy | 0.3895 | 0.3565 | 0.2553 | 0.4328 | 0.0735 | 1.4666 | n/a | n/a | 0.5691 | yes | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
314
+ | matmul | matmul | `(128, 128)` | JAX CPU dispatch | 0.1512 | 0.1511 | 0.1250 | 0.1843 | 0.0236 | 1.4666 | n/a | n/a | 0.5691 | yes | n/a | n/a | no | JAX CPU dispatch | reference |
315
+ | matmul | matmul | `(256, 256)` | TensorStudio | 2.7138 | 2.7048 | 2.2742 | 2.9971 | 0.2427 | 0.1909 | n/a | n/a | 0.1210 | no | n/a | n/a | no | JAX CPU dispatch | loss vs NumPy |
316
+ | matmul | matmul | `(256, 256)` | NumPy | 0.5182 | 0.5053 | 0.4288 | 0.5589 | 0.0508 | 0.1909 | n/a | n/a | 0.1210 | no | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
317
+ | matmul | matmul | `(256, 256)` | JAX CPU dispatch | 0.3283 | 0.3232 | 0.2753 | 0.3924 | 0.0417 | 0.1909 | n/a | n/a | 0.1210 | no | n/a | n/a | no | JAX CPU dispatch | reference |
318
+ | conv2d | conv2d_3x3_padding1 | `(1, 1, 8, 8)` | TensorStudio | 0.1505 | 0.1582 | 0.1426 | 0.1789 | 0.0140 | 8.4519 | n/a | n/a | 0.6564 | yes | n/a | n/a | no | JAX CPU dispatch | win vs NumPy |
319
+ | conv2d | conv2d_3x3_padding1 | `(1, 1, 8, 8)` | NumPy | 1.2718 | 1.2741 | 1.2369 | 1.3080 | 0.0264 | 8.4519 | n/a | n/a | 0.6564 | yes | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
320
+ | conv2d | conv2d_3x3_padding1 | `(1, 1, 8, 8)` | JAX CPU dispatch | 0.0988 | 0.1030 | 0.0935 | 0.1232 | 0.0106 | 8.4519 | n/a | n/a | 0.6564 | yes | n/a | n/a | no | JAX CPU dispatch | reference |
321
+ | conv2d | conv2d_3x3_padding1 | `(4, 3, 16, 16)` | TensorStudio | 7.1059 | 7.0926 | 7.0340 | 7.1305 | 0.0354 | 8.7270 | n/a | n/a | 0.0469 | yes | n/a | n/a | no | JAX CPU dispatch | win vs NumPy |
322
+ | conv2d | conv2d_3x3_padding1 | `(4, 3, 16, 16)` | NumPy | 62.0132 | 61.8515 | 61.3995 | 62.0491 | 0.2460 | 8.7270 | n/a | n/a | 0.0469 | yes | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
323
+ | conv2d | conv2d_3x3_padding1 | `(4, 3, 16, 16)` | JAX CPU dispatch | 0.3335 | 0.3489 | 0.3249 | 0.3945 | 0.0273 | 8.7270 | n/a | n/a | 0.0469 | yes | n/a | n/a | no | JAX CPU dispatch | reference |
324
+ | pooling | max_pool2d_2x2 | `(1, 1, 16, 16)` | TensorStudio | 0.0135 | 0.0138 | 0.0135 | 0.0145 | 0.0004 | 11.3282 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | win vs NumPy |
325
+ | pooling | max_pool2d_2x2 | `(1, 1, 16, 16)` | NumPy | 0.1532 | 0.1531 | 0.1517 | 0.1545 | 0.0010 | 11.3282 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | NumPy baseline |
326
+ | pooling | avg_pool2d_2x2 | `(1, 1, 16, 16)` | TensorStudio | 0.0134 | 0.0138 | 0.0133 | 0.0154 | 0.0008 | 41.0677 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | win vs NumPy |
327
+ | pooling | avg_pool2d_2x2 | `(1, 1, 16, 16)` | NumPy | 0.5499 | 0.5502 | 0.5456 | 0.5561 | 0.0035 | 41.0677 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | NumPy baseline |
328
+ | pooling | max_pool2d_2x2 | `(4, 3, 32, 32)` | TensorStudio | 0.5329 | 0.5457 | 0.5308 | 0.5920 | 0.0235 | 14.0147 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | win vs NumPy |
329
+ | pooling | max_pool2d_2x2 | `(4, 3, 32, 32)` | NumPy | 7.4683 | 7.4573 | 7.3658 | 7.5043 | 0.0487 | 14.0147 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | NumPy baseline |
330
+ | pooling | avg_pool2d_2x2 | `(4, 3, 32, 32)` | TensorStudio | 0.5554 | 0.5527 | 0.5249 | 0.5898 | 0.0229 | 49.2709 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | win vs NumPy |
331
+ | pooling | avg_pool2d_2x2 | `(4, 3, 32, 32)` | NumPy | 27.3663 | 27.4102 | 26.6733 | 28.2549 | 0.5050 | 49.2709 | n/a | n/a | n/a | yes | n/a | n/a | n/a | TensorStudio | NumPy baseline |
332
+ | autograd | scalar_backward | `(1,)` | TensorStudio | 0.0148 | 0.0153 | 0.0143 | 0.0165 | 0.0009 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | TensorStudio | no NumPy reference |
333
+ | autograd | elementwise_backward | `(1,)` | TensorStudio | 0.0316 | 0.0312 | 0.0302 | 0.0320 | 0.0007 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | TensorStudio | no NumPy reference |
334
+ | autograd | scalar_backward | `(128,)` | TensorStudio | 0.1457 | 0.1451 | 0.1439 | 0.1458 | 0.0008 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | TensorStudio | no NumPy reference |
335
+ | autograd | elementwise_backward | `(128,)` | TensorStudio | 0.3343 | 0.3342 | 0.3317 | 0.3373 | 0.0020 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | TensorStudio | no NumPy reference |
336
+ | autograd | scalar_backward | `(1024,)` | TensorStudio | 1.1318 | 1.1721 | 1.0634 | 1.2921 | 0.0984 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | TensorStudio | no NumPy reference |
337
+ | autograd | elementwise_backward | `(1024,)` | TensorStudio | 2.4474 | 2.4465 | 2.4368 | 2.4596 | 0.0080 | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | TensorStudio | no NumPy reference |
338
+ | training_loop | tiny_linear_regression_10_steps | `(32,)` | TensorStudio | 1.6089 | 1.6070 | 1.5921 | 1.6237 | 0.0121 | 0.0974 | n/a | n/a | n/a | no | n/a | n/a | n/a | NumPy | loss vs NumPy |
339
+ | training_loop | tiny_linear_regression_10_steps | `(32,)` | NumPy | 0.1567 | 0.1651 | 0.1548 | 0.1902 | 0.0135 | 0.0974 | n/a | n/a | n/a | no | n/a | n/a | n/a | NumPy | NumPy baseline |
340
+
341
+ Speedup columns are `competitor median / TensorStudio median`; values above 1.0 mean
342
+ TensorStudio was faster for that specific case.
343
+ Win columns say whether that same speedup is above 1.0 for the competitor.
@@ -40,7 +40,7 @@ Calling `backward()`:
40
40
 
41
41
  ## Supported Gradient Operations
42
42
 
43
- `1.5.0` supports gradients for:
43
+ `1.5.1` supports gradients for:
44
44
 
45
45
  - `add`
46
46
  - `sub`
@@ -386,6 +386,11 @@ Import native exception aliases from `tensorstudio.errors`:
386
386
  - `DeviceError`
387
387
  - `AutogradError`
388
388
 
389
+ Shape, dtype, and indexing errors are intended to be actionable. Common
390
+ messages include tensor shapes, ranks, mismatched broadcast axes, requested
391
+ reshape element counts, unsupported dtype names, and unsupported Python index
392
+ types where that context is available from the C++/binding layer.
393
+
389
394
  ## Serialization
390
395
 
391
396
  ```python
@@ -41,12 +41,14 @@ operand shapes.
41
41
 
42
42
  ## Error Behavior
43
43
 
44
- Incompatible shapes raise `ShapeError` with the relevant shapes. TensorStudio
45
- does not silently reshape tensors.
44
+ Incompatible shapes raise `ShapeError` with the relevant shapes, the aligned
45
+ axis that failed, and the two incompatible dimensions. TensorStudio does not
46
+ silently reshape tensors.
46
47
 
47
48
  ```python
48
49
  ts.ones((2, 3)) + ts.ones((4,))
49
50
  ```
50
51
 
51
- This is invalid because trailing dimensions `3` and `4` are incompatible.
52
-
52
+ This is invalid because trailing dimensions `3` and `4` are incompatible. The
53
+ error includes that axis-level mismatch so callers do not need to infer it from
54
+ the two shapes manually.
@@ -1,6 +1,6 @@
1
1
  # CPU Backend
2
2
 
3
- TensorStudio `1.5.0` supports CPU tensors only.
3
+ TensorStudio `1.5.1` supports CPU tensors only.
4
4
 
5
5
  ## Device Abstraction
6
6
 
@@ -3,7 +3,7 @@
3
3
  TensorStudio is a compact C++ tensor and autograd engine with a Python API for
4
4
  learning, experimentation, and lightweight ML workloads.
5
5
 
6
- `1.5.0` is a CPU-only stable API foundation for the tensor, autograd,
6
+ `1.5.1` is a CPU-only stable API foundation for the tensor, autograd,
7
7
  neural-network, optimizer, data, project, serialization, ONNX export, vision,
8
8
  docs, packaging, and wheel workflows.
9
9
 
@@ -1,6 +1,6 @@
1
1
  # ONNX Interchange
2
2
 
3
- TensorStudio `1.5.0` includes a limited ONNX exporter for supported
3
+ TensorStudio `1.5.1` includes a limited ONNX exporter for supported
4
4
  TensorStudio module stacks.
5
5
 
6
6
  Install the optional dependency:
@@ -1,6 +1,6 @@
1
1
  # Serialization
2
2
 
3
- TensorStudio `1.5.0` provides two serialization paths: trusted pickle
3
+ TensorStudio `1.5.1` provides two serialization paths: trusted pickle
4
4
  roundtrips for internal objects and non-pickle NPZ files for tensor/state_dict
5
5
  interchange.
6
6
 
@@ -80,7 +80,7 @@ w = ts.randn((4, 4), seed=123)
80
80
 
81
81
  ## Practical Tips
82
82
 
83
- - Keep tensors modest in `1.5.0`; kernels are simple CPU loops.
83
+ - Keep tensors modest in `1.5.1`; kernels are simple CPU loops.
84
84
  - Prefer `float32` unless you need `float64`.
85
85
  - Compare with NumPy in tests for expected numerical values.
86
86
  - Watch shape errors carefully around broadcasting and matrix multiplication.
@@ -55,7 +55,7 @@ equivalents where available.
55
55
  ## Interpreting Results
56
56
 
57
57
  Expect NumPy and PyTorch to be faster for many medium and large operations
58
- because they use highly optimized native kernels. TensorStudio `1.5.0` still
58
+ because they use highly optimized native kernels. TensorStudio `1.5.1` still
59
59
  favors clarity, portability, and a compact C++ implementation over full kernel
60
60
  library performance.
61
61
 
@@ -23,8 +23,8 @@ Windows, Linux, and macOS.
23
23
  After the release checklist passes, tag the stable release:
24
24
 
25
25
  ```bash
26
- git tag v1.5.0
27
- git push origin v1.5.0
26
+ git tag v1.5.1
27
+ git push origin v1.5.1
28
28
  ```
29
29
 
30
30
  Stable release notes must avoid unsupported performance claims. Publish measured
@@ -63,7 +63,7 @@ clean environment:
63
63
  python -m venv .venv-testpypi
64
64
  . .venv-testpypi/bin/activate
65
65
  python -m pip install -U pip
66
- python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ tensorstudio==1.5.0
66
+ python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ tensorstudio==1.5.1
67
67
  python -c "import tensorstudio as ts; import tensorstudio._C; print(ts.__version__)"
68
68
  deactivate
69
69
  ```
@@ -74,7 +74,7 @@ On Windows PowerShell:
74
74
  python -m venv .venv-testpypi
75
75
  .\.venv-testpypi\Scripts\Activate.ps1
76
76
  python -m pip install -U pip
77
- python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ tensorstudio==1.5.0
77
+ python -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ tensorstudio==1.5.1
78
78
  python -c "import tensorstudio as ts; import tensorstudio._C; print(ts.__version__)"
79
79
  deactivate
80
80
  ```
@@ -30,8 +30,8 @@ Before a release, update the version consistently in:
30
30
  Tags use a leading `v`:
31
31
 
32
32
  ```bash
33
- git tag v1.5.0
34
- git push origin v1.5.0
33
+ git tag v1.5.1
34
+ git push origin v1.5.1
35
35
  ```
36
36
 
37
37
  GitHub Actions uses the tag to build wheels and release artifacts.