tensorstudio 1.4.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.
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/CHANGELOG.md +26 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/CMakeLists.txt +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/PKG-INFO +3 -2
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/README.md +2 -1
- tensorstudio-1.5.1/benchmarks/results.md +343 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/autograd/coverage.md +4 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/core/api-reference.md +10 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/core/broadcasting.md +6 -4
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/core/tensors.md +14 -4
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/hardware/cpu-backend.md +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/index.md +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/interchange/onnx.md +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/interchange/serialization.md +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/nn/training.md +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/performance/benchmarks.md +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/release/publishing.md +4 -4
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/release/versioning.md +2 -2
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/roadmap/roadmap.md +5 -4
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/ops.hpp +4 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/version.hpp +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/pyproject.toml +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/_C.pyi +8 -2
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/__init__.py +8 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/_version.py +1 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/ops.py +17 -2
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bind_ops.cpp +18 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bind_tensor.cpp +82 -19
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/dtype.cpp +8 -1
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/ops.cpp +170 -10
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/shape.cpp +17 -5
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/tensor.cpp +3 -1
- tensorstudio-1.5.1/tests/test_errors.py +61 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_import.py +1 -1
- tensorstudio-1.5.1/tests/test_views.py +94 -0
- tensorstudio-1.4.0/benchmarks/results.md +0 -343
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.gitattributes +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.github/workflows/ci.yml +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.github/workflows/publish-testpypi.yml +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.github/workflows/publish.yml +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.github/workflows/wheels.yml +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.gitignore +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/.pre-commit-config.yaml +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/CONTRIBUTING.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/LICENSE +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/SECURITY.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmark_all.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_activations.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_autograd.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_conv2d.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_elementwise.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_matmul.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_pooling.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_reductions.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_tensor_ops.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/bench_training_loop.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/benchmark_report.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/results_conv2d.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/results_matmul.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/results_pooling.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/results_reductions.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/benchmarks/results_tensor_ops.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/autograd/gradient-notes.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/autograd/overview.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/core/native-cpp-core.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/data/dataloader-patterns.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/data/datasets-and-dataloaders.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/data/tensor-datasets.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/development/contributing.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/development/cpp-first.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/getting-started/installation.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/getting-started/quickstart.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/getting-started/source-build.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/hardware/linux.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/hardware/macos.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/hardware/windows.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/interchange/model-formats.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/interchange/numpy-interop.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/interchange/trusted-serialization.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/nn/modules.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/nn/optimizers.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/nn/overview.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/performance/optimization.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/performance/profiling.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/project/checkpoints.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/project/project-layout.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/project/workflows.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/release/checklist.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/roadmap/milestones.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/roadmap/priorities.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/vision/dataset-creation.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/docs/vision/overview.md +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/basic_tensor_ops.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/export_onnx.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/image_folder_classification.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/linear_regression.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/project_training.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/save_load_model.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/tiny_mlp.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/examples/vision_classifier.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/autograd.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/device.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/dtype.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/errors.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/module.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/optim.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/random.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/serialization.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/shape.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/storage.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/include/tensorstudio/tensor.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/mkdocs.yml +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/autograd.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/data/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/data/dataloader.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/data/dataset.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/dtypes.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/errors.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/grad_mode.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/interchange/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/interchange/onnx.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/math.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/functional.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/losses.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/nn/modules.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/adam.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/adamw.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/lr_scheduler.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/sgd.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/optim/utils.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/project/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/project/checkpoint.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/project/config.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/project/trainer.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/py.typed +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/serialization.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/tensor.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/typing.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/__init__.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/datasets.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/io.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/metrics.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/models.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/transforms.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/python/tensorstudio/vision/visualization.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bind_autograd.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bind_nn.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bind_optim.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bindings.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/bindings/bindings.hpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/autograd.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/device.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/errors.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/module.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/optim.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/random.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/serialization.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/src/core/storage.cpp +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/test_all.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_autograd.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_benchmark_report.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_broadcasting.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_data.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_indexing.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_interchange.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_nn.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_numpy_interop.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_ops.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_optim.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_project.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_serialization.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_tensor.py +0 -0
- {tensorstudio-1.4.0 → tensorstudio-1.5.1}/tests/test_vision.py +0 -0
|
@@ -2,6 +2,32 @@
|
|
|
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
|
+
|
|
18
|
+
## 1.5.0 - 2026-07-07
|
|
19
|
+
|
|
20
|
+
- Completed the next ordered correctness-roadmap item with native C++ view and
|
|
21
|
+
layout operations: `squeeze`, `unsqueeze`, `permute`, and general
|
|
22
|
+
N-dimensional transpose.
|
|
23
|
+
- Added Python Tensor methods, functional APIs, top-level exports, and type
|
|
24
|
+
stubs for the new layout operations.
|
|
25
|
+
- Added autograd support for the new metadata views, including non-contiguous
|
|
26
|
+
gradient handling through reshape chains.
|
|
27
|
+
- Added NumPy parity tests for view semantics, strides, shape errors, and
|
|
28
|
+
autograd behavior.
|
|
29
|
+
- Updated tensor, API, autograd, and roadmap docs for the expanded view API.
|
|
30
|
+
|
|
5
31
|
## 1.4.0 - 2026-07-07
|
|
6
32
|
|
|
7
33
|
- Supersedes the short-lived `1.3.7` indexing release as a minor version
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: tensorstudio
|
|
3
|
-
Version: 1.
|
|
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.
|
|
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
|
|
@@ -146,6 +146,7 @@ print((x + y).tolist())
|
|
|
146
146
|
print((x @ y).numpy())
|
|
147
147
|
print(x.reshape((4,)).tolist())
|
|
148
148
|
print(x[0, :].tolist())
|
|
149
|
+
print(x.unsqueeze(0).permute(1, 2, 0).shape)
|
|
149
150
|
```
|
|
150
151
|
|
|
151
152
|
## Tensor API
|
|
@@ -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.
|
|
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
|
|
@@ -82,6 +82,7 @@ print((x + y).tolist())
|
|
|
82
82
|
print((x @ y).numpy())
|
|
83
83
|
print(x.reshape((4,)).tolist())
|
|
84
84
|
print(x[0, :].tolist())
|
|
85
|
+
print(x.unsqueeze(0).permute(1, 2, 0).shape)
|
|
85
86
|
```
|
|
86
87
|
|
|
87
88
|
## Tensor API
|
|
@@ -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.
|
|
43
|
+
`1.5.1` supports gradients for:
|
|
44
44
|
|
|
45
45
|
- `add`
|
|
46
46
|
- `sub`
|
|
@@ -71,6 +71,9 @@ Calling `backward()`:
|
|
|
71
71
|
- `reshape`
|
|
72
72
|
- `flatten`
|
|
73
73
|
- `transpose`
|
|
74
|
+
- `permute`
|
|
75
|
+
- `squeeze`
|
|
76
|
+
- `unsqueeze`
|
|
74
77
|
- basic integer and slice indexing views
|
|
75
78
|
|
|
76
79
|
## Broadcasting Gradients
|
|
@@ -147,7 +147,11 @@ Views:
|
|
|
147
147
|
|
|
148
148
|
- `reshape(*shape)` or `reshape(shape)`
|
|
149
149
|
- `flatten()`
|
|
150
|
-
- `transpose()`
|
|
150
|
+
- `transpose()` to reverse axes
|
|
151
|
+
- `transpose(axis0, axis1)` to swap two axes
|
|
152
|
+
- `permute(*axes)` or `permute(axes)`
|
|
153
|
+
- `squeeze(axis=None)`
|
|
154
|
+
- `unsqueeze(axis)`
|
|
151
155
|
- `__getitem__(key)` through `x[key]`
|
|
152
156
|
|
|
153
157
|
Indexing keys may contain integers, slices, tuples, ellipsis, and `None` for
|
|
@@ -382,6 +386,11 @@ Import native exception aliases from `tensorstudio.errors`:
|
|
|
382
386
|
- `DeviceError`
|
|
383
387
|
- `AutogradError`
|
|
384
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
|
+
|
|
385
394
|
## Serialization
|
|
386
395
|
|
|
387
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
|
|
45
|
-
|
|
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.
|
|
@@ -148,8 +148,12 @@ Supported views:
|
|
|
148
148
|
|
|
149
149
|
- `reshape`
|
|
150
150
|
- `flatten`
|
|
151
|
-
-
|
|
152
|
-
-
|
|
151
|
+
- `transpose()` for reversed axes
|
|
152
|
+
- `transpose(axis0, axis1)` for axis swaps
|
|
153
|
+
- `permute`
|
|
154
|
+
- `squeeze`
|
|
155
|
+
- `unsqueeze`
|
|
156
|
+
- `T` property
|
|
153
157
|
- Basic indexing and slicing with integers, slices, tuples, ellipsis, and
|
|
154
158
|
`None`/newaxis
|
|
155
159
|
|
|
@@ -158,10 +162,16 @@ x = ts.arange(6).reshape((2, 3))
|
|
|
158
162
|
print(x.flatten().tolist())
|
|
159
163
|
print(x.T.shape)
|
|
160
164
|
print(x[0, :].tolist())
|
|
165
|
+
|
|
166
|
+
y = ts.arange(24).reshape((2, 3, 4))
|
|
167
|
+
print(y.permute(2, 0, 1).shape)
|
|
168
|
+
print(y.transpose(0, 2).shape)
|
|
169
|
+
print(y.unsqueeze(0).squeeze(0).shape)
|
|
161
170
|
```
|
|
162
171
|
|
|
163
|
-
`reshape` currently requires a contiguous tensor. `transpose`
|
|
164
|
-
|
|
172
|
+
`reshape` currently requires a contiguous tensor. `transpose`, `permute`,
|
|
173
|
+
`squeeze`, `unsqueeze`, and basic slicing return metadata views that share the
|
|
174
|
+
same storage where possible.
|
|
165
175
|
|
|
166
176
|
Indexing supports common NumPy-style read cases:
|
|
167
177
|
|
|
@@ -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.
|
|
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
|
|