tensorstudio 1.3.4__tar.gz → 1.3.6__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.3.6/.gitattributes +17 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/CHANGELOG.md +25 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/CMakeLists.txt +1 -1
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/PKG-INFO +6 -2
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/README.md +5 -1
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/benchmark_report.py +5 -2
- tensorstudio-1.3.6/benchmarks/results.md +343 -0
- tensorstudio-1.3.4/docs/Autograde/index.md → tensorstudio-1.3.6/docs/autograd/coverage.md +1 -1
- tensorstudio-1.3.6/docs/autograd/gradient-notes.md +46 -0
- tensorstudio-1.3.4/docs/Usage/api.md → tensorstudio-1.3.6/docs/core/api-reference.md +47 -0
- tensorstudio-1.3.6/docs/core/broadcasting.md +52 -0
- tensorstudio-1.3.6/docs/core/native-cpp-core.md +75 -0
- {tensorstudio-1.3.4/docs/Usage → tensorstudio-1.3.6/docs/core}/tensors.md +24 -0
- tensorstudio-1.3.4/docs/development.md → tensorstudio-1.3.6/docs/development/contributing.md +1 -1
- tensorstudio-1.3.6/docs/development/cpp-first.md +42 -0
- tensorstudio-1.3.6/docs/getting-started/installation.md +66 -0
- {tensorstudio-1.3.4/docs → tensorstudio-1.3.6/docs/getting-started}/quickstart.md +1 -0
- tensorstudio-1.3.6/docs/getting-started/source-build.md +50 -0
- {tensorstudio-1.3.4/docs/Hardware → tensorstudio-1.3.6/docs/hardware}/cpu-backend.md +1 -1
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/docs/index.md +16 -14
- tensorstudio-1.3.6/docs/interchange/model-formats.md +37 -0
- tensorstudio-1.3.4/docs/Usage/interchange.md → tensorstudio-1.3.6/docs/interchange/onnx.md +1 -1
- {tensorstudio-1.3.4/docs/Usage → tensorstudio-1.3.6/docs/interchange}/serialization.md +1 -1
- tensorstudio-1.3.4/docs/Neural Networks/training.md → tensorstudio-1.3.6/docs/nn/training.md +1 -1
- tensorstudio-1.3.4/docs/Benchmarks/index.md → tensorstudio-1.3.6/docs/performance/benchmarks.md +1 -1
- {tensorstudio-1.3.4/docs → tensorstudio-1.3.6/docs/release}/publishing.md +4 -4
- tensorstudio-1.3.4/docs/Roadmap/index.md → tensorstudio-1.3.6/docs/roadmap/roadmap.md +4 -3
- tensorstudio-1.3.6/docs/vision/dataset-creation.md +58 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/ops.hpp +7 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/version.hpp +1 -1
- tensorstudio-1.3.6/mkdocs.yml +62 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/pyproject.toml +1 -1
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/_C.pyi +16 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/__init__.py +26 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/_version.py +1 -1
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/ops.py +25 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bind_ops.cpp +27 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bind_tensor.cpp +41 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bindings.hpp +7 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/ops.cpp +215 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_autograd.py +23 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_import.py +1 -1
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_ops.py +69 -0
- tensorstudio-1.3.4/benchmarks/results.md +0 -353
- tensorstudio-1.3.4/mkdocs.yml +0 -47
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/.github/workflows/ci.yml +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/.github/workflows/publish-testpypi.yml +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/.github/workflows/publish.yml +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/.github/workflows/wheels.yml +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/.gitignore +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/.pre-commit-config.yaml +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/CONTRIBUTING.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/LICENSE +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/SECURITY.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmark_all.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_activations.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_autograd.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_conv2d.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_elementwise.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_matmul.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_pooling.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_reductions.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_tensor_ops.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/bench_training_loop.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/results_conv2d.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/results_matmul.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/results_pooling.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/results_reductions.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/benchmarks/results_tensor_ops.md +0 -0
- /tensorstudio-1.3.4/docs/Autograde/autograd.md → /tensorstudio-1.3.6/docs/autograd/overview.md +0 -0
- /tensorstudio-1.3.4/docs/Usage/data.md → /tensorstudio-1.3.6/docs/data/datasets-and-dataloaders.md +0 -0
- {tensorstudio-1.3.4/docs/Hardware → tensorstudio-1.3.6/docs/hardware}/linux.md +0 -0
- {tensorstudio-1.3.4/docs/Hardware → tensorstudio-1.3.6/docs/hardware}/macos.md +0 -0
- {tensorstudio-1.3.4/docs/Hardware → tensorstudio-1.3.6/docs/hardware}/windows.md +0 -0
- {tensorstudio-1.3.4/docs/Usage → tensorstudio-1.3.6/docs/interchange}/numpy-interop.md +0 -0
- /tensorstudio-1.3.4/docs/serialization.md → /tensorstudio-1.3.6/docs/interchange/trusted-serialization.md +0 -0
- {tensorstudio-1.3.4/docs/Neural Networks → tensorstudio-1.3.6/docs/nn}/modules.md +0 -0
- /tensorstudio-1.3.4/docs/Usage/optim.md → /tensorstudio-1.3.6/docs/nn/optimizers.md +0 -0
- /tensorstudio-1.3.4/docs/Neural Networks/nn.md → /tensorstudio-1.3.6/docs/nn/overview.md +0 -0
- /tensorstudio-1.3.4/docs/Projects/index.md → /tensorstudio-1.3.6/docs/project/workflows.md +0 -0
- /tensorstudio-1.3.4/docs/Vision/index.md → /tensorstudio-1.3.6/docs/vision/overview.md +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/basic_tensor_ops.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/export_onnx.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/image_folder_classification.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/linear_regression.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/project_training.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/save_load_model.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/tiny_mlp.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/examples/vision_classifier.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/autograd.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/device.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/dtype.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/errors.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/module.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/optim.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/random.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/serialization.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/shape.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/storage.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/include/tensorstudio/tensor.hpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/autograd.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/data/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/data/dataloader.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/data/dataset.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/dtypes.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/errors.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/grad_mode.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/interchange/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/interchange/onnx.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/math.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/nn/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/nn/functional.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/nn/losses.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/nn/modules.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/optim/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/optim/adam.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/optim/adamw.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/optim/lr_scheduler.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/optim/sgd.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/optim/utils.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/project/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/project/checkpoint.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/project/config.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/project/trainer.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/py.typed +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/serialization.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/tensor.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/typing.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/__init__.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/datasets.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/io.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/metrics.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/models.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/transforms.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/python/tensorstudio/vision/visualization.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bind_autograd.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bind_nn.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bind_optim.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/bindings/bindings.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/autograd.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/device.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/dtype.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/errors.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/module.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/optim.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/random.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/serialization.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/shape.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/storage.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/src/core/tensor.cpp +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/test_all.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_benchmark_report.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_broadcasting.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_data.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_interchange.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_nn.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_numpy_interop.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_optim.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_project.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_serialization.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_tensor.py +0 -0
- {tensorstudio-1.3.4 → tensorstudio-1.3.6}/tests/test_vision.py +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Keep GitHub language statistics focused on maintained implementation code.
|
|
2
|
+
# The Python package remains counted; docs, examples, tests, and generated
|
|
3
|
+
# outputs are supporting material for release quality rather than core runtime.
|
|
4
|
+
*.md linguist-documentation
|
|
5
|
+
docs/** linguist-documentation
|
|
6
|
+
examples/** linguist-documentation
|
|
7
|
+
tests/** linguist-documentation
|
|
8
|
+
benchmarks/** linguist-documentation
|
|
9
|
+
benchmark_all.py linguist-documentation
|
|
10
|
+
test_all.py linguist-documentation
|
|
11
|
+
site/** linguist-generated
|
|
12
|
+
build/** linguist-generated
|
|
13
|
+
dist/** linguist-generated
|
|
14
|
+
*.egg-info/** linguist-generated
|
|
15
|
+
|
|
16
|
+
include/** linguist-language=C++
|
|
17
|
+
src/** linguist-language=C++
|
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 1.3.6 - 2026-07-07
|
|
6
|
+
|
|
7
|
+
- Completed the next ordered correctness-roadmap item with native C++
|
|
8
|
+
`where`, `maximum`, and `minimum` operations.
|
|
9
|
+
- Exposed top-level comparison helpers, `clamp`/`clip`, selection helpers, and
|
|
10
|
+
Tensor method helpers through the Python API while keeping kernels in C++.
|
|
11
|
+
- Added NumPy parity and autograd tests for `where`, `maximum`, and `minimum`,
|
|
12
|
+
including broadcasting and tie-gradient behavior.
|
|
13
|
+
- Reorganized the MkDocs tree into categorized sections and added deeper docs
|
|
14
|
+
for installation, source builds, native C++ architecture, broadcasting,
|
|
15
|
+
gradient behavior, model formats, dataset creation, and the C++-first policy.
|
|
16
|
+
- Added GitHub Linguist attributes so language statistics emphasize the native
|
|
17
|
+
C++ library and do not count docs, examples, tests, generated site output, or
|
|
18
|
+
benchmark scripts as implementation code.
|
|
19
|
+
|
|
20
|
+
## 1.3.5 - 2026-07-07
|
|
21
|
+
|
|
22
|
+
- Completed the next ordered correctness-roadmap item with native C++
|
|
23
|
+
`argmax` and `argmin` operations.
|
|
24
|
+
- Added Tensor methods, functional ops, top-level Python exports, and type
|
|
25
|
+
stubs for arg reductions.
|
|
26
|
+
- Added NumPy parity tests for all-element and axis arg reductions, including
|
|
27
|
+
`keepdims`, negative axes, first-tie behavior, dtype, and error cases.
|
|
28
|
+
- Documented arg-reduction semantics and limitations.
|
|
29
|
+
|
|
5
30
|
## 1.3.4 - 2026-07-07
|
|
6
31
|
|
|
7
32
|
- Completed the next ordered correctness-roadmap item with tuple/list-axis
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: tensorstudio
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.6
|
|
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.3.
|
|
74
|
+
TensorStudio `1.3.6` 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
|
|
@@ -474,6 +474,10 @@ tokens or print secrets.
|
|
|
474
474
|
- ONNX support is export-only for a limited set of TensorStudio modules.
|
|
475
475
|
- Reductions support all-element, single-axis, and tuple/list-axis reductions
|
|
476
476
|
for `sum`, `mean`, `max`, and `min`.
|
|
477
|
+
- Arg reductions support all-element flat indices or one axis at a time for
|
|
478
|
+
`argmax` and `argmin`.
|
|
479
|
+
- Selection helpers `where`, `maximum`, and `minimum` are native C++ tensor ops
|
|
480
|
+
with broadcasting and autograd support for floating-point branches.
|
|
477
481
|
- No sparse tensors or advanced indexing.
|
|
478
482
|
- Dtype casting is basic and does not include a full promotion/casting policy.
|
|
479
483
|
- Experimental performance; benchmarks are local references only.
|
|
@@ -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.3.
|
|
10
|
+
TensorStudio `1.3.6` 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
|
|
@@ -410,6 +410,10 @@ tokens or print secrets.
|
|
|
410
410
|
- ONNX support is export-only for a limited set of TensorStudio modules.
|
|
411
411
|
- Reductions support all-element, single-axis, and tuple/list-axis reductions
|
|
412
412
|
for `sum`, `mean`, `max`, and `min`.
|
|
413
|
+
- Arg reductions support all-element flat indices or one axis at a time for
|
|
414
|
+
`argmax` and `argmin`.
|
|
415
|
+
- Selection helpers `where`, `maximum`, and `minimum` are native C++ tensor ops
|
|
416
|
+
with broadcasting and autograd support for floating-point branches.
|
|
413
417
|
- No sparse tensors or advanced indexing.
|
|
414
418
|
- Dtype casting is basic and does not include a full promotion/casting policy.
|
|
415
419
|
- Experimental performance; benchmarks are local references only.
|
|
@@ -2,13 +2,14 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
4
|
import importlib
|
|
5
|
+
import io
|
|
5
6
|
import os
|
|
6
7
|
import platform
|
|
7
8
|
import statistics
|
|
8
9
|
import sys
|
|
9
10
|
import time
|
|
10
11
|
from collections.abc import Callable, Iterable
|
|
11
|
-
from contextlib import suppress
|
|
12
|
+
from contextlib import redirect_stderr, redirect_stdout, suppress
|
|
12
13
|
from dataclasses import dataclass
|
|
13
14
|
from pathlib import Path
|
|
14
15
|
from typing import Any
|
|
@@ -17,6 +18,7 @@ import numpy as np
|
|
|
17
18
|
import tensorstudio as ts
|
|
18
19
|
|
|
19
20
|
os.environ.setdefault("CUDA_VISIBLE_DEVICES", "-1")
|
|
21
|
+
os.environ.setdefault("TF_CPP_MIN_LOG_LEVEL", "3")
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
ArrayFactory = Callable[[np.ndarray], Any]
|
|
@@ -59,7 +61,8 @@ class Stats:
|
|
|
59
61
|
|
|
60
62
|
def _optional_import(module_name: str) -> Any | None:
|
|
61
63
|
try:
|
|
62
|
-
|
|
64
|
+
with redirect_stdout(io.StringIO()), redirect_stderr(io.StringIO()):
|
|
65
|
+
return importlib.import_module(module_name)
|
|
63
66
|
except Exception:
|
|
64
67
|
return None
|
|
65
68
|
|
|
@@ -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.3.6`
|
|
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: `27`
|
|
20
|
+
- TensorStudio losses versus NumPy: `76`
|
|
21
|
+
- TensorStudio wins versus JAX CPU dispatch: `85`
|
|
22
|
+
- TensorStudio losses versus JAX CPU dispatch: `13`
|
|
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.0026 | 0.0026 | 0.0025 | 0.0027 | 0.0001 | 0.2604 | n/a | n/a | 4.3415 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
31
|
+
| elementwise | add | `(1,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2604 | n/a | n/a | 4.3415 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
32
|
+
| elementwise | add | `(1,)` | JAX CPU dispatch | 0.0113 | 0.0112 | 0.0109 | 0.0115 | 0.0002 | 0.2604 | n/a | n/a | 4.3415 | no | n/a | n/a | yes | NumPy | reference |
|
|
33
|
+
| elementwise | sub | `(1,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0030 | 0.0001 | 0.2655 | n/a | n/a | 4.1326 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
34
|
+
| elementwise | sub | `(1,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0008 | 0.0000 | 0.2655 | n/a | n/a | 4.1326 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
35
|
+
| elementwise | sub | `(1,)` | JAX CPU dispatch | 0.0110 | 0.0110 | 0.0107 | 0.0116 | 0.0003 | 0.2655 | n/a | n/a | 4.1326 | no | n/a | n/a | yes | NumPy | reference |
|
|
36
|
+
| elementwise | mul | `(1,)` | TensorStudio | 0.0025 | 0.0026 | 0.0025 | 0.0027 | 0.0001 | 0.3038 | n/a | n/a | 4.5050 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
37
|
+
| elementwise | mul | `(1,)` | NumPy | 0.0008 | 0.0008 | 0.0008 | 0.0008 | 0.0000 | 0.3038 | n/a | n/a | 4.5050 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
38
|
+
| elementwise | mul | `(1,)` | JAX CPU dispatch | 0.0113 | 0.0123 | 0.0110 | 0.0144 | 0.0014 | 0.3038 | n/a | n/a | 4.5050 | no | n/a | n/a | yes | NumPy | reference |
|
|
39
|
+
| elementwise | div | `(1,)` | TensorStudio | 0.0026 | 0.0026 | 0.0026 | 0.0026 | 0.0000 | 0.2896 | n/a | n/a | 3.2589 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
40
|
+
| elementwise | div | `(1,)` | NumPy | 0.0008 | 0.0008 | 0.0007 | 0.0008 | 0.0000 | 0.2896 | n/a | n/a | 3.2589 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
41
|
+
| elementwise | div | `(1,)` | JAX CPU dispatch | 0.0085 | 0.0087 | 0.0085 | 0.0089 | 0.0002 | 0.2896 | n/a | n/a | 3.2589 | no | n/a | n/a | yes | NumPy | reference |
|
|
42
|
+
| elementwise | chain_relu((x*2+1)/3) | `(1,)` | TensorStudio | 0.0093 | 0.0094 | 0.0093 | 0.0096 | 0.0001 | 0.6152 | n/a | n/a | 8.9306 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
43
|
+
| elementwise | chain_relu((x*2+1)/3) | `(1,)` | NumPy | 0.0058 | 0.0059 | 0.0056 | 0.0064 | 0.0003 | 0.6152 | n/a | n/a | 8.9306 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
44
|
+
| elementwise | chain_relu((x*2+1)/3) | `(1,)` | JAX CPU dispatch | 0.0835 | 0.0843 | 0.0826 | 0.0883 | 0.0021 | 0.6152 | n/a | n/a | 8.9306 | no | n/a | n/a | yes | NumPy | reference |
|
|
45
|
+
| elementwise | add | `(8,)` | TensorStudio | 0.0025 | 0.0026 | 0.0025 | 0.0026 | 0.0000 | 0.2712 | n/a | n/a | 4.3466 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
46
|
+
| elementwise | add | `(8,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0007 | 0.0000 | 0.2712 | n/a | n/a | 4.3466 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
47
|
+
| elementwise | add | `(8,)` | JAX CPU dispatch | 0.0111 | 0.0111 | 0.0108 | 0.0113 | 0.0001 | 0.2712 | n/a | n/a | 4.3466 | no | n/a | n/a | yes | NumPy | reference |
|
|
48
|
+
| elementwise | sub | `(8,)` | TensorStudio | 0.0026 | 0.0026 | 0.0026 | 0.0027 | 0.0001 | 0.2749 | n/a | n/a | 4.5515 | 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.2749 | n/a | n/a | 4.5515 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
50
|
+
| elementwise | sub | `(8,)` | JAX CPU dispatch | 0.0119 | 0.0119 | 0.0117 | 0.0122 | 0.0002 | 0.2749 | n/a | n/a | 4.5515 | no | n/a | n/a | yes | NumPy | reference |
|
|
51
|
+
| elementwise | mul | `(8,)` | TensorStudio | 0.0026 | 0.0027 | 0.0025 | 0.0028 | 0.0001 | 0.2912 | n/a | n/a | 4.4156 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
52
|
+
| elementwise | mul | `(8,)` | NumPy | 0.0008 | 0.0008 | 0.0008 | 0.0009 | 0.0001 | 0.2912 | n/a | n/a | 4.4156 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
53
|
+
| elementwise | mul | `(8,)` | JAX CPU dispatch | 0.0116 | 0.0117 | 0.0113 | 0.0120 | 0.0003 | 0.2912 | n/a | n/a | 4.4156 | no | n/a | n/a | yes | NumPy | reference |
|
|
54
|
+
| elementwise | div | `(8,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0028 | 0.0001 | 0.2860 | n/a | n/a | 3.2805 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
55
|
+
| elementwise | div | `(8,)` | NumPy | 0.0008 | 0.0008 | 0.0008 | 0.0009 | 0.0001 | 0.2860 | n/a | n/a | 3.2805 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
56
|
+
| elementwise | div | `(8,)` | JAX CPU dispatch | 0.0088 | 0.0088 | 0.0084 | 0.0091 | 0.0002 | 0.2860 | n/a | n/a | 3.2805 | no | n/a | n/a | yes | NumPy | reference |
|
|
57
|
+
| elementwise | chain_relu((x*2+1)/3) | `(8,)` | TensorStudio | 0.0095 | 0.0096 | 0.0094 | 0.0100 | 0.0002 | 0.6266 | n/a | n/a | 9.3277 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
58
|
+
| elementwise | chain_relu((x*2+1)/3) | `(8,)` | NumPy | 0.0060 | 0.0060 | 0.0057 | 0.0062 | 0.0002 | 0.6266 | n/a | n/a | 9.3277 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
59
|
+
| elementwise | chain_relu((x*2+1)/3) | `(8,)` | JAX CPU dispatch | 0.0887 | 0.0892 | 0.0873 | 0.0934 | 0.0022 | 0.6266 | n/a | n/a | 9.3277 | no | n/a | n/a | yes | NumPy | reference |
|
|
60
|
+
| elementwise | add | `(32,)` | TensorStudio | 0.0027 | 0.0029 | 0.0025 | 0.0035 | 0.0004 | 0.2683 | n/a | n/a | 4.3975 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
61
|
+
| elementwise | add | `(32,)` | NumPy | 0.0007 | 0.0008 | 0.0007 | 0.0009 | 0.0001 | 0.2683 | n/a | n/a | 4.3975 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
62
|
+
| elementwise | add | `(32,)` | JAX CPU dispatch | 0.0117 | 0.0120 | 0.0111 | 0.0134 | 0.0008 | 0.2683 | n/a | n/a | 4.3975 | no | n/a | n/a | yes | NumPy | reference |
|
|
63
|
+
| elementwise | sub | `(32,)` | TensorStudio | 0.0027 | 0.0030 | 0.0025 | 0.0042 | 0.0006 | 0.3366 | n/a | n/a | 4.2809 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
64
|
+
| elementwise | sub | `(32,)` | NumPy | 0.0009 | 0.0011 | 0.0007 | 0.0016 | 0.0004 | 0.3366 | n/a | n/a | 4.2809 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
65
|
+
| elementwise | sub | `(32,)` | JAX CPU dispatch | 0.0116 | 0.0117 | 0.0115 | 0.0120 | 0.0002 | 0.3366 | n/a | n/a | 4.2809 | no | n/a | n/a | yes | NumPy | reference |
|
|
66
|
+
| elementwise | mul | `(32,)` | TensorStudio | 0.0028 | 0.0030 | 0.0024 | 0.0043 | 0.0007 | 0.2792 | n/a | n/a | 4.4103 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
67
|
+
| elementwise | mul | `(32,)` | NumPy | 0.0008 | 0.0008 | 0.0007 | 0.0010 | 0.0001 | 0.2792 | n/a | n/a | 4.4103 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
68
|
+
| elementwise | mul | `(32,)` | JAX CPU dispatch | 0.0122 | 0.0123 | 0.0116 | 0.0131 | 0.0005 | 0.2792 | n/a | n/a | 4.4103 | no | n/a | n/a | yes | NumPy | reference |
|
|
69
|
+
| elementwise | div | `(32,)` | TensorStudio | 0.0027 | 0.0027 | 0.0025 | 0.0029 | 0.0001 | 0.2858 | n/a | n/a | 3.4552 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
70
|
+
| elementwise | div | `(32,)` | NumPy | 0.0008 | 0.0009 | 0.0008 | 0.0011 | 0.0001 | 0.2858 | n/a | n/a | 3.4552 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
71
|
+
| elementwise | div | `(32,)` | JAX CPU dispatch | 0.0092 | 0.0093 | 0.0089 | 0.0101 | 0.0004 | 0.2858 | n/a | n/a | 3.4552 | no | n/a | n/a | yes | NumPy | reference |
|
|
72
|
+
| elementwise | chain_relu((x*2+1)/3) | `(32,)` | TensorStudio | 0.0097 | 0.0097 | 0.0094 | 0.0101 | 0.0002 | 0.6673 | n/a | n/a | 9.6285 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
73
|
+
| elementwise | chain_relu((x*2+1)/3) | `(32,)` | NumPy | 0.0064 | 0.0063 | 0.0057 | 0.0066 | 0.0003 | 0.6673 | n/a | n/a | 9.6285 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
74
|
+
| elementwise | chain_relu((x*2+1)/3) | `(32,)` | JAX CPU dispatch | 0.0931 | 0.0938 | 0.0897 | 0.0999 | 0.0034 | 0.6673 | n/a | n/a | 9.6285 | no | n/a | n/a | yes | NumPy | reference |
|
|
75
|
+
| elementwise | add | `(128,)` | TensorStudio | 0.0027 | 0.0027 | 0.0026 | 0.0029 | 0.0001 | 0.2631 | n/a | n/a | 4.4624 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
76
|
+
| elementwise | add | `(128,)` | NumPy | 0.0007 | 0.0007 | 0.0007 | 0.0009 | 0.0001 | 0.2631 | n/a | n/a | 4.4624 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
77
|
+
| elementwise | add | `(128,)` | JAX CPU dispatch | 0.0119 | 0.0120 | 0.0112 | 0.0132 | 0.0007 | 0.2631 | n/a | n/a | 4.4624 | no | n/a | n/a | yes | NumPy | reference |
|
|
78
|
+
| elementwise | sub | `(128,)` | TensorStudio | 0.0027 | 0.0029 | 0.0026 | 0.0034 | 0.0004 | 0.2600 | n/a | n/a | 4.1726 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
79
|
+
| elementwise | sub | `(128,)` | NumPy | 0.0007 | 0.0008 | 0.0007 | 0.0010 | 0.0001 | 0.2600 | n/a | n/a | 4.1726 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
80
|
+
| elementwise | sub | `(128,)` | JAX CPU dispatch | 0.0115 | 0.0116 | 0.0110 | 0.0121 | 0.0004 | 0.2600 | n/a | n/a | 4.1726 | no | n/a | n/a | yes | NumPy | reference |
|
|
81
|
+
| elementwise | mul | `(128,)` | TensorStudio | 0.0028 | 0.0030 | 0.0026 | 0.0034 | 0.0004 | 0.2797 | n/a | n/a | 4.2982 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
82
|
+
| elementwise | mul | `(128,)` | NumPy | 0.0008 | 0.0009 | 0.0008 | 0.0013 | 0.0002 | 0.2797 | n/a | n/a | 4.2982 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
83
|
+
| elementwise | mul | `(128,)` | JAX CPU dispatch | 0.0122 | 0.0122 | 0.0116 | 0.0129 | 0.0005 | 0.2797 | n/a | n/a | 4.2982 | no | n/a | n/a | yes | NumPy | reference |
|
|
84
|
+
| elementwise | div | `(128,)` | TensorStudio | 0.0029 | 0.0036 | 0.0026 | 0.0048 | 0.0010 | 0.2942 | n/a | n/a | 3.2582 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
85
|
+
| elementwise | div | `(128,)` | NumPy | 0.0009 | 0.0009 | 0.0007 | 0.0011 | 0.0001 | 0.2942 | n/a | n/a | 3.2582 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
86
|
+
| elementwise | div | `(128,)` | JAX CPU dispatch | 0.0096 | 0.0096 | 0.0093 | 0.0102 | 0.0003 | 0.2942 | n/a | n/a | 3.2582 | no | n/a | n/a | yes | NumPy | reference |
|
|
87
|
+
| elementwise | chain_relu((x*2+1)/3) | `(128,)` | TensorStudio | 0.0100 | 0.0127 | 0.0099 | 0.0227 | 0.0050 | 0.5998 | n/a | n/a | 8.9405 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
88
|
+
| elementwise | chain_relu((x*2+1)/3) | `(128,)` | NumPy | 0.0060 | 0.0063 | 0.0059 | 0.0071 | 0.0005 | 0.5998 | n/a | n/a | 8.9405 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
89
|
+
| elementwise | chain_relu((x*2+1)/3) | `(128,)` | JAX CPU dispatch | 0.0894 | 0.0927 | 0.0886 | 0.1009 | 0.0048 | 0.5998 | n/a | n/a | 8.9405 | no | n/a | n/a | yes | NumPy | reference |
|
|
90
|
+
| elementwise | add | `(1024,)` | TensorStudio | 0.0036 | 0.0036 | 0.0031 | 0.0041 | 0.0004 | 0.2806 | n/a | n/a | 4.9749 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
91
|
+
| elementwise | add | `(1024,)` | NumPy | 0.0010 | 0.0010 | 0.0010 | 0.0010 | 0.0000 | 0.2806 | n/a | n/a | 4.9749 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
92
|
+
| elementwise | add | `(1024,)` | JAX CPU dispatch | 0.0181 | 0.0182 | 0.0175 | 0.0191 | 0.0005 | 0.2806 | n/a | n/a | 4.9749 | no | n/a | n/a | yes | NumPy | reference |
|
|
93
|
+
| elementwise | sub | `(1024,)` | TensorStudio | 0.0030 | 0.0031 | 0.0030 | 0.0036 | 0.0002 | 0.3588 | n/a | n/a | 5.6346 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
94
|
+
| elementwise | sub | `(1024,)` | NumPy | 0.0011 | 0.0011 | 0.0010 | 0.0014 | 0.0001 | 0.3588 | n/a | n/a | 5.6346 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
95
|
+
| elementwise | sub | `(1024,)` | JAX CPU dispatch | 0.0171 | 0.0166 | 0.0142 | 0.0180 | 0.0013 | 0.3588 | n/a | n/a | 5.6346 | no | n/a | n/a | yes | NumPy | reference |
|
|
96
|
+
| elementwise | mul | `(1024,)` | TensorStudio | 0.0030 | 0.0032 | 0.0029 | 0.0035 | 0.0002 | 0.3595 | n/a | n/a | 5.9298 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
97
|
+
| elementwise | mul | `(1024,)` | NumPy | 0.0011 | 0.0011 | 0.0011 | 0.0011 | 0.0000 | 0.3595 | n/a | n/a | 5.9298 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
98
|
+
| elementwise | mul | `(1024,)` | JAX CPU dispatch | 0.0179 | 0.0164 | 0.0126 | 0.0189 | 0.0025 | 0.3595 | n/a | n/a | 5.9298 | no | n/a | n/a | yes | NumPy | reference |
|
|
99
|
+
| elementwise | div | `(1024,)` | TensorStudio | 0.0036 | 0.0035 | 0.0032 | 0.0041 | 0.0003 | 0.3111 | n/a | n/a | 3.9700 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
100
|
+
| elementwise | div | `(1024,)` | NumPy | 0.0011 | 0.0011 | 0.0011 | 0.0011 | 0.0000 | 0.3111 | n/a | n/a | 3.9700 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
101
|
+
| elementwise | div | `(1024,)` | JAX CPU dispatch | 0.0141 | 0.0139 | 0.0127 | 0.0146 | 0.0007 | 0.3111 | n/a | n/a | 3.9700 | no | n/a | n/a | yes | NumPy | reference |
|
|
102
|
+
| elementwise | chain_relu((x*2+1)/3) | `(1024,)` | TensorStudio | 0.0121 | 0.0129 | 0.0118 | 0.0150 | 0.0012 | 0.6188 | n/a | n/a | 13.2424 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
103
|
+
| elementwise | chain_relu((x*2+1)/3) | `(1024,)` | NumPy | 0.0075 | 0.0081 | 0.0074 | 0.0098 | 0.0009 | 0.6188 | n/a | n/a | 13.2424 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
104
|
+
| elementwise | chain_relu((x*2+1)/3) | `(1024,)` | JAX CPU dispatch | 0.1606 | 0.1591 | 0.1525 | 0.1614 | 0.0034 | 0.6188 | n/a | n/a | 13.2424 | no | n/a | n/a | yes | NumPy | reference |
|
|
105
|
+
| elementwise | add | `(4096,)` | TensorStudio | 0.0048 | 0.0050 | 0.0047 | 0.0057 | 0.0004 | 0.3565 | n/a | n/a | 4.0521 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
106
|
+
| elementwise | add | `(4096,)` | NumPy | 0.0017 | 0.0017 | 0.0016 | 0.0017 | 0.0000 | 0.3565 | n/a | n/a | 4.0521 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
107
|
+
| elementwise | add | `(4096,)` | JAX CPU dispatch | 0.0192 | 0.0192 | 0.0184 | 0.0198 | 0.0005 | 0.3565 | n/a | n/a | 4.0521 | no | n/a | n/a | yes | NumPy | reference |
|
|
108
|
+
| elementwise | sub | `(4096,)` | TensorStudio | 0.0046 | 0.0047 | 0.0045 | 0.0049 | 0.0001 | 0.3165 | n/a | n/a | 3.6751 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
109
|
+
| elementwise | sub | `(4096,)` | NumPy | 0.0015 | 0.0015 | 0.0015 | 0.0015 | 0.0000 | 0.3165 | n/a | n/a | 3.6751 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
110
|
+
| elementwise | sub | `(4096,)` | JAX CPU dispatch | 0.0170 | 0.0158 | 0.0122 | 0.0191 | 0.0030 | 0.3165 | n/a | n/a | 3.6751 | no | n/a | n/a | yes | NumPy | reference |
|
|
111
|
+
| elementwise | mul | `(4096,)` | TensorStudio | 0.0048 | 0.0051 | 0.0044 | 0.0059 | 0.0007 | 0.3480 | n/a | n/a | 4.0870 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
112
|
+
| elementwise | mul | `(4096,)` | NumPy | 0.0017 | 0.0018 | 0.0016 | 0.0022 | 0.0002 | 0.3480 | n/a | n/a | 4.0870 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
113
|
+
| elementwise | mul | `(4096,)` | JAX CPU dispatch | 0.0195 | 0.0190 | 0.0167 | 0.0203 | 0.0012 | 0.3480 | n/a | n/a | 4.0870 | no | n/a | n/a | yes | NumPy | reference |
|
|
114
|
+
| elementwise | div | `(4096,)` | TensorStudio | 0.0055 | 0.0055 | 0.0054 | 0.0058 | 0.0001 | 0.3327 | n/a | n/a | 2.6388 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
115
|
+
| elementwise | div | `(4096,)` | NumPy | 0.0018 | 0.0021 | 0.0017 | 0.0029 | 0.0004 | 0.3327 | n/a | n/a | 2.6388 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
116
|
+
| elementwise | div | `(4096,)` | JAX CPU dispatch | 0.0146 | 0.0134 | 0.0100 | 0.0155 | 0.0023 | 0.3327 | n/a | n/a | 2.6388 | no | n/a | n/a | yes | NumPy | reference |
|
|
117
|
+
| elementwise | chain_relu((x*2+1)/3) | `(4096,)` | TensorStudio | 0.0202 | 0.0198 | 0.0189 | 0.0204 | 0.0006 | 0.5374 | n/a | n/a | 8.1573 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
118
|
+
| elementwise | chain_relu((x*2+1)/3) | `(4096,)` | NumPy | 0.0108 | 0.0108 | 0.0102 | 0.0116 | 0.0005 | 0.5374 | n/a | n/a | 8.1573 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
119
|
+
| elementwise | chain_relu((x*2+1)/3) | `(4096,)` | JAX CPU dispatch | 0.1646 | 0.1623 | 0.1517 | 0.1660 | 0.0053 | 0.5374 | n/a | n/a | 8.1573 | no | n/a | n/a | yes | NumPy | reference |
|
|
120
|
+
| elementwise | add | `(16384,)` | TensorStudio | 0.0113 | 0.0117 | 0.0105 | 0.0130 | 0.0009 | 0.3327 | n/a | n/a | 1.9066 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
121
|
+
| elementwise | add | `(16384,)` | NumPy | 0.0038 | 0.0038 | 0.0037 | 0.0038 | 0.0000 | 0.3327 | n/a | n/a | 1.9066 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
122
|
+
| elementwise | add | `(16384,)` | JAX CPU dispatch | 0.0216 | 0.0224 | 0.0212 | 0.0262 | 0.0019 | 0.3327 | n/a | n/a | 1.9066 | no | n/a | n/a | yes | NumPy | reference |
|
|
123
|
+
| elementwise | sub | `(16384,)` | TensorStudio | 0.0113 | 0.0113 | 0.0099 | 0.0131 | 0.0011 | 0.3442 | n/a | n/a | 1.2470 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
124
|
+
| elementwise | sub | `(16384,)` | NumPy | 0.0039 | 0.0040 | 0.0038 | 0.0043 | 0.0002 | 0.3442 | n/a | n/a | 1.2470 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
125
|
+
| elementwise | sub | `(16384,)` | JAX CPU dispatch | 0.0141 | 0.0143 | 0.0140 | 0.0150 | 0.0004 | 0.3442 | n/a | n/a | 1.2470 | no | n/a | n/a | yes | NumPy | reference |
|
|
126
|
+
| elementwise | mul | `(16384,)` | TensorStudio | 0.0158 | 0.0149 | 0.0102 | 0.0210 | 0.0038 | 0.2569 | n/a | n/a | 0.8206 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
127
|
+
| elementwise | mul | `(16384,)` | NumPy | 0.0041 | 0.0041 | 0.0040 | 0.0045 | 0.0002 | 0.2569 | n/a | n/a | 0.8206 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
128
|
+
| elementwise | mul | `(16384,)` | JAX CPU dispatch | 0.0130 | 0.0133 | 0.0129 | 0.0140 | 0.0005 | 0.2569 | n/a | n/a | 0.8206 | no | n/a | n/a | no | NumPy | reference |
|
|
129
|
+
| elementwise | div | `(16384,)` | TensorStudio | 0.0132 | 0.0139 | 0.0132 | 0.0162 | 0.0012 | 0.3312 | n/a | n/a | 1.3575 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
130
|
+
| elementwise | div | `(16384,)` | NumPy | 0.0044 | 0.0045 | 0.0044 | 0.0047 | 0.0001 | 0.3312 | n/a | n/a | 1.3575 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
131
|
+
| elementwise | div | `(16384,)` | JAX CPU dispatch | 0.0180 | 0.0206 | 0.0170 | 0.0281 | 0.0042 | 0.3312 | n/a | n/a | 1.3575 | no | n/a | n/a | yes | NumPy | reference |
|
|
132
|
+
| elementwise | chain_relu((x*2+1)/3) | `(16384,)` | TensorStudio | 0.0471 | 0.0469 | 0.0448 | 0.0486 | 0.0013 | 0.4607 | n/a | n/a | 3.6296 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
133
|
+
| elementwise | chain_relu((x*2+1)/3) | `(16384,)` | NumPy | 0.0217 | 0.0226 | 0.0216 | 0.0264 | 0.0019 | 0.4607 | n/a | n/a | 3.6296 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
134
|
+
| elementwise | chain_relu((x*2+1)/3) | `(16384,)` | JAX CPU dispatch | 0.1708 | 0.1711 | 0.1685 | 0.1742 | 0.0023 | 0.4607 | n/a | n/a | 3.6296 | no | n/a | n/a | yes | NumPy | reference |
|
|
135
|
+
| activations | relu | `(1,)` | TensorStudio | 0.0017 | 0.0018 | 0.0017 | 0.0021 | 0.0002 | 1.2054 | n/a | n/a | 25.0949 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
136
|
+
| activations | relu | `(1,)` | NumPy | 0.0021 | 0.0020 | 0.0018 | 0.0022 | 0.0002 | 1.2054 | n/a | n/a | 25.0949 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
137
|
+
| activations | relu | `(1,)` | JAX CPU dispatch | 0.0435 | 0.0436 | 0.0431 | 0.0441 | 0.0004 | 1.2054 | n/a | n/a | 25.0949 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
138
|
+
| activations | sigmoid | `(1,)` | TensorStudio | 0.0018 | 0.0019 | 0.0018 | 0.0021 | 0.0001 | 2.6209 | n/a | n/a | 40.3871 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
139
|
+
| activations | sigmoid | `(1,)` | NumPy | 0.0047 | 0.0049 | 0.0046 | 0.0055 | 0.0003 | 2.6209 | n/a | n/a | 40.3871 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
140
|
+
| activations | sigmoid | `(1,)` | JAX CPU dispatch | 0.0721 | 0.0723 | 0.0714 | 0.0739 | 0.0009 | 2.6209 | n/a | n/a | 40.3871 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
141
|
+
| activations | tanh | `(1,)` | TensorStudio | 0.0018 | 0.0019 | 0.0018 | 0.0020 | 0.0001 | 0.6913 | n/a | n/a | 16.5592 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
142
|
+
| activations | tanh | `(1,)` | NumPy | 0.0012 | 0.0014 | 0.0012 | 0.0018 | 0.0002 | 0.6913 | n/a | n/a | 16.5592 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
143
|
+
| activations | tanh | `(1,)` | JAX CPU dispatch | 0.0299 | 0.0301 | 0.0292 | 0.0319 | 0.0009 | 0.6913 | n/a | n/a | 16.5592 | no | n/a | n/a | yes | NumPy | reference |
|
|
144
|
+
| activations | exp | `(1,)` | TensorStudio | 0.0024 | 0.0023 | 0.0019 | 0.0026 | 0.0002 | 0.5332 | n/a | n/a | 12.4549 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
145
|
+
| activations | exp | `(1,)` | NumPy | 0.0013 | 0.0014 | 0.0013 | 0.0018 | 0.0002 | 0.5332 | n/a | n/a | 12.4549 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
146
|
+
| activations | exp | `(1,)` | JAX CPU dispatch | 0.0299 | 0.0302 | 0.0293 | 0.0320 | 0.0010 | 0.5332 | n/a | n/a | 12.4549 | no | n/a | n/a | yes | NumPy | reference |
|
|
147
|
+
| activations | log | `(1,)` | TensorStudio | 0.0020 | 0.0020 | 0.0018 | 0.0022 | 0.0002 | 0.6746 | n/a | n/a | 14.9008 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
148
|
+
| activations | log | `(1,)` | NumPy | 0.0014 | 0.0013 | 0.0013 | 0.0014 | 0.0000 | 0.6746 | n/a | n/a | 14.9008 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
149
|
+
| activations | log | `(1,)` | JAX CPU dispatch | 0.0299 | 0.0300 | 0.0294 | 0.0310 | 0.0006 | 0.6746 | n/a | n/a | 14.9008 | no | n/a | n/a | yes | NumPy | reference |
|
|
150
|
+
| activations | relu | `(8,)` | TensorStudio | 0.0017 | 0.0018 | 0.0017 | 0.0020 | 0.0001 | 1.0598 | n/a | n/a | 25.9586 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
151
|
+
| activations | relu | `(8,)` | NumPy | 0.0018 | 0.0019 | 0.0018 | 0.0022 | 0.0002 | 1.0598 | n/a | n/a | 25.9586 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
152
|
+
| activations | relu | `(8,)` | JAX CPU dispatch | 0.0451 | 0.0458 | 0.0442 | 0.0491 | 0.0017 | 1.0598 | n/a | n/a | 25.9586 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
153
|
+
| activations | sigmoid | `(8,)` | TensorStudio | 0.0018 | 0.0019 | 0.0018 | 0.0020 | 0.0001 | 2.5449 | n/a | n/a | 49.5471 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
154
|
+
| activations | sigmoid | `(8,)` | NumPy | 0.0047 | 0.0047 | 0.0045 | 0.0048 | 0.0001 | 2.5449 | n/a | n/a | 49.5471 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
155
|
+
| activations | sigmoid | `(8,)` | JAX CPU dispatch | 0.0916 | 0.0945 | 0.0737 | 0.1350 | 0.0224 | 2.5449 | n/a | n/a | 49.5471 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
156
|
+
| activations | tanh | `(8,)` | TensorStudio | 0.0018 | 0.0019 | 0.0018 | 0.0024 | 0.0002 | 0.7568 | n/a | n/a | 15.8006 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
157
|
+
| activations | tanh | `(8,)` | NumPy | 0.0014 | 0.0014 | 0.0012 | 0.0017 | 0.0001 | 0.7568 | n/a | n/a | 15.8006 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
158
|
+
| activations | tanh | `(8,)` | JAX CPU dispatch | 0.0289 | 0.0291 | 0.0288 | 0.0296 | 0.0003 | 0.7568 | n/a | n/a | 15.8006 | no | n/a | n/a | yes | NumPy | reference |
|
|
159
|
+
| activations | exp | `(8,)` | TensorStudio | 0.0018 | 0.0020 | 0.0018 | 0.0026 | 0.0003 | 0.7478 | n/a | n/a | 16.5986 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
160
|
+
| activations | exp | `(8,)` | NumPy | 0.0014 | 0.0014 | 0.0012 | 0.0017 | 0.0002 | 0.7478 | n/a | n/a | 16.5986 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
161
|
+
| activations | exp | `(8,)` | JAX CPU dispatch | 0.0300 | 0.0301 | 0.0298 | 0.0305 | 0.0003 | 0.7478 | n/a | n/a | 16.5986 | no | n/a | n/a | yes | NumPy | reference |
|
|
162
|
+
| activations | log | `(8,)` | TensorStudio | 0.0019 | 0.0019 | 0.0018 | 0.0020 | 0.0001 | 0.7768 | n/a | n/a | 15.8175 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
163
|
+
| activations | log | `(8,)` | NumPy | 0.0015 | 0.0015 | 0.0013 | 0.0016 | 0.0001 | 0.7768 | n/a | n/a | 15.8175 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
164
|
+
| activations | log | `(8,)` | JAX CPU dispatch | 0.0295 | 0.0297 | 0.0286 | 0.0316 | 0.0010 | 0.7768 | n/a | n/a | 15.8175 | no | n/a | n/a | yes | NumPy | reference |
|
|
165
|
+
| activations | relu | `(32,)` | TensorStudio | 0.0018 | 0.0018 | 0.0017 | 0.0020 | 0.0001 | 1.0232 | n/a | n/a | 23.8213 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
166
|
+
| activations | relu | `(32,)` | NumPy | 0.0018 | 0.0019 | 0.0018 | 0.0021 | 0.0001 | 1.0232 | n/a | n/a | 23.8213 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
167
|
+
| activations | relu | `(32,)` | JAX CPU dispatch | 0.0430 | 0.0433 | 0.0427 | 0.0446 | 0.0007 | 1.0232 | n/a | n/a | 23.8213 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
168
|
+
| activations | sigmoid | `(32,)` | TensorStudio | 0.0020 | 0.0020 | 0.0020 | 0.0021 | 0.0001 | 2.4028 | n/a | n/a | 37.3031 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
169
|
+
| activations | sigmoid | `(32,)` | NumPy | 0.0047 | 0.0049 | 0.0047 | 0.0052 | 0.0002 | 2.4028 | n/a | n/a | 37.3031 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
170
|
+
| activations | sigmoid | `(32,)` | JAX CPU dispatch | 0.0737 | 0.0735 | 0.0725 | 0.0742 | 0.0006 | 2.4028 | n/a | n/a | 37.3031 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
171
|
+
| activations | tanh | `(32,)` | TensorStudio | 0.0022 | 0.0024 | 0.0021 | 0.0028 | 0.0003 | 0.5848 | n/a | n/a | 13.1374 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
172
|
+
| activations | tanh | `(32,)` | NumPy | 0.0013 | 0.0014 | 0.0013 | 0.0017 | 0.0002 | 0.5848 | n/a | n/a | 13.1374 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
173
|
+
| activations | tanh | `(32,)` | JAX CPU dispatch | 0.0295 | 0.0301 | 0.0290 | 0.0328 | 0.0014 | 0.5848 | n/a | n/a | 13.1374 | no | n/a | n/a | yes | NumPy | reference |
|
|
174
|
+
| activations | exp | `(32,)` | TensorStudio | 0.0021 | 0.0021 | 0.0020 | 0.0024 | 0.0001 | 0.6041 | n/a | n/a | 13.9319 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
175
|
+
| activations | exp | `(32,)` | NumPy | 0.0013 | 0.0013 | 0.0013 | 0.0015 | 0.0001 | 0.6041 | n/a | n/a | 13.9319 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
176
|
+
| activations | exp | `(32,)` | JAX CPU dispatch | 0.0297 | 0.0300 | 0.0289 | 0.0324 | 0.0013 | 0.6041 | n/a | n/a | 13.9319 | no | n/a | n/a | yes | NumPy | reference |
|
|
177
|
+
| activations | log | `(32,)` | TensorStudio | 0.0021 | 0.0022 | 0.0019 | 0.0025 | 0.0003 | 0.6153 | n/a | n/a | 14.4325 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
178
|
+
| activations | log | `(32,)` | NumPy | 0.0013 | 0.0014 | 0.0013 | 0.0018 | 0.0002 | 0.6153 | n/a | n/a | 14.4325 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
179
|
+
| activations | log | `(32,)` | JAX CPU dispatch | 0.0300 | 0.0301 | 0.0293 | 0.0310 | 0.0005 | 0.6153 | n/a | n/a | 14.4325 | no | n/a | n/a | yes | NumPy | reference |
|
|
180
|
+
| activations | relu | `(128,)` | TensorStudio | 0.0019 | 0.0019 | 0.0018 | 0.0020 | 0.0001 | 0.9802 | n/a | n/a | 22.8329 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
181
|
+
| activations | relu | `(128,)` | NumPy | 0.0019 | 0.0019 | 0.0019 | 0.0021 | 0.0001 | 0.9802 | n/a | n/a | 22.8329 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
182
|
+
| activations | relu | `(128,)` | JAX CPU dispatch | 0.0441 | 0.0440 | 0.0429 | 0.0453 | 0.0008 | 0.9802 | n/a | n/a | 22.8329 | no | n/a | n/a | yes | NumPy | reference |
|
|
183
|
+
| activations | sigmoid | `(128,)` | TensorStudio | 0.0028 | 0.0028 | 0.0026 | 0.0031 | 0.0002 | 1.7769 | n/a | n/a | 25.6381 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
184
|
+
| activations | sigmoid | `(128,)` | NumPy | 0.0050 | 0.0051 | 0.0046 | 0.0060 | 0.0005 | 1.7769 | n/a | n/a | 25.6381 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
185
|
+
| activations | sigmoid | `(128,)` | JAX CPU dispatch | 0.0721 | 0.0728 | 0.0713 | 0.0761 | 0.0017 | 1.7769 | n/a | n/a | 25.6381 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
186
|
+
| activations | tanh | `(128,)` | TensorStudio | 0.0030 | 0.0030 | 0.0029 | 0.0031 | 0.0001 | 0.5311 | n/a | n/a | 10.0826 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
187
|
+
| activations | tanh | `(128,)` | NumPy | 0.0016 | 0.0017 | 0.0015 | 0.0020 | 0.0002 | 0.5311 | n/a | n/a | 10.0826 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
188
|
+
| activations | tanh | `(128,)` | JAX CPU dispatch | 0.0301 | 0.0302 | 0.0295 | 0.0311 | 0.0005 | 0.5311 | n/a | n/a | 10.0826 | no | n/a | n/a | yes | NumPy | reference |
|
|
189
|
+
| activations | exp | `(128,)` | TensorStudio | 0.0027 | 0.0027 | 0.0025 | 0.0029 | 0.0001 | 0.5038 | n/a | n/a | 11.1650 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
190
|
+
| activations | exp | `(128,)` | NumPy | 0.0014 | 0.0014 | 0.0013 | 0.0018 | 0.0002 | 0.5038 | n/a | n/a | 11.1650 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
191
|
+
| activations | exp | `(128,)` | JAX CPU dispatch | 0.0301 | 0.0299 | 0.0292 | 0.0303 | 0.0004 | 0.5038 | n/a | n/a | 11.1650 | no | n/a | n/a | yes | NumPy | reference |
|
|
192
|
+
| activations | log | `(128,)` | TensorStudio | 0.0028 | 0.0029 | 0.0027 | 0.0032 | 0.0002 | 0.5353 | n/a | n/a | 10.9066 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
193
|
+
| activations | log | `(128,)` | NumPy | 0.0015 | 0.0016 | 0.0015 | 0.0017 | 0.0001 | 0.5353 | n/a | n/a | 10.9066 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
194
|
+
| activations | log | `(128,)` | JAX CPU dispatch | 0.0304 | 0.0302 | 0.0288 | 0.0312 | 0.0008 | 0.5353 | n/a | n/a | 10.9066 | no | n/a | n/a | yes | NumPy | reference |
|
|
195
|
+
| activations | relu | `(1024,)` | TensorStudio | 0.0051 | 0.0043 | 0.0024 | 0.0061 | 0.0016 | 0.4881 | n/a | n/a | 16.0759 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
196
|
+
| activations | relu | `(1024,)` | NumPy | 0.0025 | 0.0025 | 0.0025 | 0.0025 | 0.0000 | 0.4881 | n/a | n/a | 16.0759 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
197
|
+
| activations | relu | `(1024,)` | JAX CPU dispatch | 0.0819 | 0.0770 | 0.0564 | 0.0834 | 0.0103 | 0.4881 | n/a | n/a | 16.0759 | no | n/a | n/a | yes | NumPy | reference |
|
|
198
|
+
| activations | sigmoid | `(1024,)` | TensorStudio | 0.0092 | 0.0095 | 0.0092 | 0.0104 | 0.0005 | 0.7810 | n/a | n/a | 14.6484 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
199
|
+
| activations | sigmoid | `(1024,)` | NumPy | 0.0072 | 0.0076 | 0.0072 | 0.0088 | 0.0006 | 0.7810 | n/a | n/a | 14.6484 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
200
|
+
| activations | sigmoid | `(1024,)` | JAX CPU dispatch | 0.1353 | 0.1360 | 0.1346 | 0.1377 | 0.0013 | 0.7810 | n/a | n/a | 14.6484 | no | n/a | n/a | yes | NumPy | reference |
|
|
201
|
+
| activations | tanh | `(1024,)` | TensorStudio | 0.0139 | 0.0140 | 0.0136 | 0.0146 | 0.0004 | 0.2809 | n/a | n/a | 2.1942 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
202
|
+
| activations | tanh | `(1024,)` | NumPy | 0.0039 | 0.0039 | 0.0038 | 0.0040 | 0.0001 | 0.2809 | n/a | n/a | 2.1942 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
203
|
+
| activations | tanh | `(1024,)` | JAX CPU dispatch | 0.0305 | 0.0319 | 0.0292 | 0.0386 | 0.0034 | 0.2809 | n/a | n/a | 2.1942 | no | n/a | n/a | yes | NumPy | reference |
|
|
204
|
+
| activations | exp | `(1024,)` | TensorStudio | 0.0089 | 0.0090 | 0.0081 | 0.0099 | 0.0007 | 0.2969 | n/a | n/a | 3.5192 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
205
|
+
| activations | exp | `(1024,)` | NumPy | 0.0027 | 0.0027 | 0.0026 | 0.0027 | 0.0000 | 0.2969 | n/a | n/a | 3.5192 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
206
|
+
| activations | exp | `(1024,)` | JAX CPU dispatch | 0.0315 | 0.0313 | 0.0309 | 0.0316 | 0.0003 | 0.2969 | n/a | n/a | 3.5192 | no | n/a | n/a | yes | NumPy | reference |
|
|
207
|
+
| activations | log | `(1024,)` | TensorStudio | 0.0086 | 0.0087 | 0.0084 | 0.0092 | 0.0003 | 0.3322 | n/a | n/a | 3.6510 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
208
|
+
| activations | log | `(1024,)` | NumPy | 0.0029 | 0.0031 | 0.0028 | 0.0036 | 0.0003 | 0.3322 | n/a | n/a | 3.6510 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
209
|
+
| activations | log | `(1024,)` | JAX CPU dispatch | 0.0313 | 0.0316 | 0.0308 | 0.0333 | 0.0009 | 0.3322 | n/a | n/a | 3.6510 | no | n/a | n/a | yes | NumPy | reference |
|
|
210
|
+
| activations | relu | `(4096,)` | TensorStudio | 0.0053 | 0.0053 | 0.0050 | 0.0058 | 0.0003 | 0.7256 | n/a | n/a | 15.5506 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
211
|
+
| activations | relu | `(4096,)` | NumPy | 0.0038 | 0.0039 | 0.0038 | 0.0044 | 0.0002 | 0.7256 | n/a | n/a | 15.5506 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
212
|
+
| activations | relu | `(4096,)` | JAX CPU dispatch | 0.0820 | 0.0823 | 0.0808 | 0.0844 | 0.0014 | 0.7256 | n/a | n/a | 15.5506 | no | n/a | n/a | yes | NumPy | reference |
|
|
213
|
+
| activations | sigmoid | `(4096,)` | TensorStudio | 0.0324 | 0.0324 | 0.0322 | 0.0327 | 0.0002 | 0.3669 | n/a | n/a | 3.2790 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
214
|
+
| activations | sigmoid | `(4096,)` | NumPy | 0.0119 | 0.0125 | 0.0116 | 0.0138 | 0.0009 | 0.3669 | n/a | n/a | 3.2790 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
215
|
+
| activations | sigmoid | `(4096,)` | JAX CPU dispatch | 0.1063 | 0.1031 | 0.0864 | 0.1159 | 0.0101 | 0.3669 | n/a | n/a | 3.2790 | no | n/a | n/a | yes | NumPy | reference |
|
|
216
|
+
| activations | tanh | `(4096,)` | TensorStudio | 0.0661 | 0.0690 | 0.0603 | 0.0876 | 0.0101 | 0.1742 | n/a | n/a | 0.4973 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
217
|
+
| activations | tanh | `(4096,)` | NumPy | 0.0115 | 0.0136 | 0.0106 | 0.0196 | 0.0034 | 0.1742 | n/a | n/a | 0.4973 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
218
|
+
| activations | tanh | `(4096,)` | JAX CPU dispatch | 0.0329 | 0.0336 | 0.0322 | 0.0369 | 0.0017 | 0.1742 | n/a | n/a | 0.4973 | no | n/a | n/a | no | NumPy | reference |
|
|
219
|
+
| activations | exp | `(4096,)` | TensorStudio | 0.0302 | 0.0316 | 0.0281 | 0.0381 | 0.0037 | 0.2002 | n/a | n/a | 1.1157 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
220
|
+
| activations | exp | `(4096,)` | NumPy | 0.0060 | 0.0067 | 0.0059 | 0.0090 | 0.0012 | 0.2002 | n/a | n/a | 1.1157 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
221
|
+
| activations | exp | `(4096,)` | JAX CPU dispatch | 0.0336 | 0.0336 | 0.0333 | 0.0340 | 0.0002 | 0.2002 | n/a | n/a | 1.1157 | no | n/a | n/a | yes | NumPy | reference |
|
|
222
|
+
| activations | log | `(4096,)` | TensorStudio | 0.0303 | 0.0303 | 0.0301 | 0.0305 | 0.0002 | 0.2441 | n/a | n/a | 1.1674 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
223
|
+
| activations | log | `(4096,)` | NumPy | 0.0074 | 0.0076 | 0.0074 | 0.0082 | 0.0003 | 0.2441 | n/a | n/a | 1.1674 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
224
|
+
| activations | log | `(4096,)` | JAX CPU dispatch | 0.0353 | 0.0357 | 0.0346 | 0.0368 | 0.0009 | 0.2441 | n/a | n/a | 1.1674 | no | n/a | n/a | yes | NumPy | reference |
|
|
225
|
+
| activations | relu | `(16384,)` | TensorStudio | 0.0136 | 0.0152 | 0.0132 | 0.0217 | 0.0032 | 0.6651 | n/a | n/a | 6.7101 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
226
|
+
| activations | relu | `(16384,)` | NumPy | 0.0090 | 0.0094 | 0.0090 | 0.0111 | 0.0008 | 0.6651 | n/a | n/a | 6.7101 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
227
|
+
| activations | relu | `(16384,)` | JAX CPU dispatch | 0.0910 | 0.0915 | 0.0892 | 0.0945 | 0.0020 | 0.6651 | n/a | n/a | 6.7101 | no | n/a | n/a | yes | NumPy | reference |
|
|
228
|
+
| activations | sigmoid | `(16384,)` | TensorStudio | 0.1241 | 0.1238 | 0.1205 | 0.1257 | 0.0019 | 0.2796 | n/a | n/a | 1.2600 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
229
|
+
| activations | sigmoid | `(16384,)` | NumPy | 0.0347 | 0.0353 | 0.0339 | 0.0371 | 0.0012 | 0.2796 | n/a | n/a | 1.2600 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
230
|
+
| activations | sigmoid | `(16384,)` | JAX CPU dispatch | 0.1563 | 0.1550 | 0.1498 | 0.1574 | 0.0028 | 0.2796 | n/a | n/a | 1.2600 | no | n/a | n/a | yes | NumPy | reference |
|
|
231
|
+
| activations | tanh | `(16384,)` | TensorStudio | 0.2519 | 0.2483 | 0.2386 | 0.2566 | 0.0080 | 0.1508 | n/a | n/a | 0.1509 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
232
|
+
| activations | tanh | `(16384,)` | NumPy | 0.0380 | 0.0424 | 0.0377 | 0.0537 | 0.0062 | 0.1508 | n/a | n/a | 0.1509 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
233
|
+
| activations | tanh | `(16384,)` | JAX CPU dispatch | 0.0380 | 0.0393 | 0.0377 | 0.0430 | 0.0020 | 0.1508 | n/a | n/a | 0.1509 | no | n/a | n/a | no | NumPy | reference |
|
|
234
|
+
| activations | exp | `(16384,)` | TensorStudio | 0.1050 | 0.1040 | 0.1007 | 0.1075 | 0.0025 | 0.1777 | n/a | n/a | 0.3935 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
235
|
+
| activations | exp | `(16384,)` | NumPy | 0.0187 | 0.0190 | 0.0184 | 0.0205 | 0.0008 | 0.1777 | n/a | n/a | 0.3935 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
236
|
+
| activations | exp | `(16384,)` | JAX CPU dispatch | 0.0413 | 0.0412 | 0.0390 | 0.0438 | 0.0018 | 0.1777 | n/a | n/a | 0.3935 | no | n/a | n/a | no | NumPy | reference |
|
|
237
|
+
| activations | log | `(16384,)` | TensorStudio | 0.1131 | 0.1126 | 0.1082 | 0.1174 | 0.0030 | 0.2184 | n/a | n/a | 0.3879 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
238
|
+
| activations | log | `(16384,)` | NumPy | 0.0247 | 0.0253 | 0.0246 | 0.0271 | 0.0009 | 0.2184 | n/a | n/a | 0.3879 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
239
|
+
| activations | log | `(16384,)` | JAX CPU dispatch | 0.0439 | 0.0447 | 0.0432 | 0.0478 | 0.0017 | 0.2184 | n/a | n/a | 0.3879 | no | n/a | n/a | no | NumPy | reference |
|
|
240
|
+
| reductions | sum | `(1,)` | TensorStudio | 0.0022 | 0.0023 | 0.0021 | 0.0026 | 0.0002 | 1.0375 | n/a | n/a | 5.2655 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
241
|
+
| reductions | sum | `(1,)` | NumPy | 0.0023 | 0.0023 | 0.0022 | 0.0025 | 0.0001 | 1.0375 | n/a | n/a | 5.2655 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
242
|
+
| reductions | sum | `(1,)` | JAX CPU dispatch | 0.0115 | 0.0115 | 0.0112 | 0.0117 | 0.0002 | 1.0375 | n/a | n/a | 5.2655 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
243
|
+
| reductions | mean | `(1,)` | TensorStudio | 0.0021 | 0.0024 | 0.0021 | 0.0033 | 0.0004 | 4.1243 | n/a | n/a | 5.2052 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
244
|
+
| reductions | mean | `(1,)` | NumPy | 0.0088 | 0.0087 | 0.0084 | 0.0092 | 0.0003 | 4.1243 | n/a | n/a | 5.2052 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
245
|
+
| reductions | mean | `(1,)` | JAX CPU dispatch | 0.0111 | 0.0112 | 0.0108 | 0.0119 | 0.0004 | 4.1243 | n/a | n/a | 5.2052 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
246
|
+
| reductions | sum | `(8,)` | TensorStudio | 0.0022 | 0.0022 | 0.0022 | 0.0023 | 0.0001 | 1.0613 | n/a | n/a | 5.6130 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
247
|
+
| reductions | sum | `(8,)` | NumPy | 0.0023 | 0.0025 | 0.0023 | 0.0028 | 0.0002 | 1.0613 | n/a | n/a | 5.6130 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
248
|
+
| reductions | sum | `(8,)` | JAX CPU dispatch | 0.0121 | 0.0122 | 0.0119 | 0.0127 | 0.0003 | 1.0613 | n/a | n/a | 5.6130 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
249
|
+
| reductions | mean | `(8,)` | TensorStudio | 0.0022 | 0.0023 | 0.0022 | 0.0025 | 0.0001 | 4.0185 | n/a | n/a | 5.6748 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
250
|
+
| reductions | mean | `(8,)` | NumPy | 0.0087 | 0.0095 | 0.0086 | 0.0116 | 0.0012 | 4.0185 | n/a | n/a | 5.6748 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
251
|
+
| reductions | mean | `(8,)` | JAX CPU dispatch | 0.0123 | 0.0122 | 0.0115 | 0.0128 | 0.0004 | 4.0185 | n/a | n/a | 5.6748 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
252
|
+
| reductions | sum | `(32,)` | TensorStudio | 0.0025 | 0.0025 | 0.0023 | 0.0027 | 0.0001 | 0.9256 | n/a | n/a | 5.3569 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
253
|
+
| reductions | sum | `(32,)` | NumPy | 0.0023 | 0.0023 | 0.0022 | 0.0026 | 0.0001 | 0.9256 | n/a | n/a | 5.3569 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
254
|
+
| reductions | sum | `(32,)` | JAX CPU dispatch | 0.0131 | 0.0131 | 0.0126 | 0.0139 | 0.0004 | 0.9256 | n/a | n/a | 5.3569 | no | n/a | n/a | yes | NumPy | reference |
|
|
255
|
+
| reductions | mean | `(32,)` | TensorStudio | 0.0024 | 0.0025 | 0.0023 | 0.0027 | 0.0002 | 3.7243 | n/a | n/a | 4.8115 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
256
|
+
| reductions | mean | `(32,)` | NumPy | 0.0089 | 0.0089 | 0.0085 | 0.0093 | 0.0003 | 3.7243 | n/a | n/a | 4.8115 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
257
|
+
| reductions | mean | `(32,)` | JAX CPU dispatch | 0.0115 | 0.0115 | 0.0110 | 0.0122 | 0.0004 | 3.7243 | n/a | n/a | 4.8115 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
258
|
+
| reductions | sum | `(128,)` | TensorStudio | 0.0032 | 0.0031 | 0.0028 | 0.0037 | 0.0003 | 0.7673 | n/a | n/a | 4.1468 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
259
|
+
| reductions | sum | `(128,)` | NumPy | 0.0024 | 0.0027 | 0.0023 | 0.0038 | 0.0006 | 0.7673 | n/a | n/a | 4.1468 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
260
|
+
| reductions | sum | `(128,)` | JAX CPU dispatch | 0.0132 | 0.0133 | 0.0131 | 0.0138 | 0.0002 | 0.7673 | n/a | n/a | 4.1468 | no | n/a | n/a | yes | NumPy | reference |
|
|
261
|
+
| reductions | mean | `(128,)` | TensorStudio | 0.0030 | 0.0030 | 0.0029 | 0.0031 | 0.0001 | 2.8256 | n/a | n/a | 4.2652 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
262
|
+
| reductions | mean | `(128,)` | NumPy | 0.0085 | 0.0085 | 0.0084 | 0.0088 | 0.0002 | 2.8256 | n/a | n/a | 4.2652 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
263
|
+
| reductions | mean | `(128,)` | JAX CPU dispatch | 0.0128 | 0.0130 | 0.0122 | 0.0145 | 0.0008 | 2.8256 | n/a | n/a | 4.2652 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
264
|
+
| reductions | sum | `(1024,)` | TensorStudio | 0.0085 | 0.0088 | 0.0083 | 0.0095 | 0.0005 | 0.3132 | n/a | n/a | 2.2445 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
265
|
+
| reductions | sum | `(1024,)` | NumPy | 0.0027 | 0.0027 | 0.0026 | 0.0027 | 0.0000 | 0.3132 | n/a | n/a | 2.2445 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
266
|
+
| reductions | sum | `(1024,)` | JAX CPU dispatch | 0.0191 | 0.0185 | 0.0147 | 0.0205 | 0.0020 | 0.3132 | n/a | n/a | 2.2445 | no | n/a | n/a | yes | NumPy | reference |
|
|
267
|
+
| reductions | mean | `(1024,)` | TensorStudio | 0.0084 | 0.0086 | 0.0083 | 0.0097 | 0.0005 | 1.1476 | n/a | n/a | 2.1492 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
268
|
+
| reductions | mean | `(1024,)` | NumPy | 0.0096 | 0.0096 | 0.0086 | 0.0110 | 0.0009 | 1.1476 | n/a | n/a | 2.1492 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
269
|
+
| reductions | mean | `(1024,)` | JAX CPU dispatch | 0.0180 | 0.0167 | 0.0141 | 0.0185 | 0.0019 | 1.1476 | n/a | n/a | 2.1492 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
270
|
+
| reductions | sum | `(4096,)` | TensorStudio | 0.0284 | 0.0284 | 0.0282 | 0.0289 | 0.0003 | 0.1262 | n/a | n/a | 0.7003 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
271
|
+
| reductions | sum | `(4096,)` | NumPy | 0.0036 | 0.0038 | 0.0036 | 0.0045 | 0.0004 | 0.1262 | n/a | n/a | 0.7003 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
272
|
+
| reductions | sum | `(4096,)` | JAX CPU dispatch | 0.0199 | 0.0186 | 0.0150 | 0.0213 | 0.0023 | 0.1262 | n/a | n/a | 0.7003 | no | n/a | n/a | no | NumPy | reference |
|
|
273
|
+
| reductions | mean | `(4096,)` | TensorStudio | 0.0278 | 0.0282 | 0.0273 | 0.0302 | 0.0011 | 0.3866 | n/a | n/a | 0.6819 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
274
|
+
| reductions | mean | `(4096,)` | NumPy | 0.0108 | 0.0112 | 0.0100 | 0.0127 | 0.0012 | 0.3866 | n/a | n/a | 0.6819 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
275
|
+
| reductions | mean | `(4096,)` | JAX CPU dispatch | 0.0190 | 0.0182 | 0.0148 | 0.0199 | 0.0018 | 0.3866 | n/a | n/a | 0.6819 | no | n/a | n/a | no | NumPy | reference |
|
|
276
|
+
| reductions | sum | `(16384,)` | TensorStudio | 0.1155 | 0.1149 | 0.1124 | 0.1169 | 0.0017 | 0.0623 | n/a | n/a | 0.2400 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
277
|
+
| reductions | sum | `(16384,)` | NumPy | 0.0072 | 0.0078 | 0.0070 | 0.0107 | 0.0014 | 0.0623 | n/a | n/a | 0.2400 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
278
|
+
| reductions | sum | `(16384,)` | JAX CPU dispatch | 0.0277 | 0.0283 | 0.0268 | 0.0299 | 0.0012 | 0.0623 | n/a | n/a | 0.2400 | no | n/a | n/a | no | NumPy | reference |
|
|
279
|
+
| reductions | mean | `(16384,)` | TensorStudio | 0.1029 | 0.1178 | 0.1022 | 0.1694 | 0.0261 | 0.1284 | n/a | n/a | 0.2503 | no | n/a | n/a | no | NumPy | loss vs NumPy |
|
|
280
|
+
| reductions | mean | `(16384,)` | NumPy | 0.0132 | 0.0144 | 0.0132 | 0.0179 | 0.0018 | 0.1284 | n/a | n/a | 0.2503 | no | n/a | n/a | no | NumPy | NumPy baseline |
|
|
281
|
+
| reductions | mean | `(16384,)` | JAX CPU dispatch | 0.0258 | 0.0260 | 0.0253 | 0.0271 | 0.0006 | 0.1284 | n/a | n/a | 0.2503 | no | n/a | n/a | no | NumPy | reference |
|
|
282
|
+
| reductions | sum_axis1 | `(16, 16)` | TensorStudio | 0.0027 | 0.0029 | 0.0027 | 0.0035 | 0.0003 | 1.0159 | n/a | n/a | 4.8244 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
283
|
+
| reductions | sum_axis1 | `(16, 16)` | NumPy | 0.0028 | 0.0029 | 0.0027 | 0.0032 | 0.0002 | 1.0159 | n/a | n/a | 4.8244 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
284
|
+
| reductions | sum_axis1 | `(16, 16)` | JAX CPU dispatch | 0.0131 | 0.0131 | 0.0123 | 0.0141 | 0.0006 | 1.0159 | n/a | n/a | 4.8244 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
285
|
+
| reductions | mean_axis0 | `(16, 16)` | TensorStudio | 0.0027 | 0.0029 | 0.0027 | 0.0038 | 0.0005 | 6.9616 | n/a | n/a | 4.3981 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
286
|
+
| reductions | mean_axis0 | `(16, 16)` | NumPy | 0.0188 | 0.0173 | 0.0107 | 0.0224 | 0.0044 | 6.9616 | n/a | n/a | 4.3981 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
287
|
+
| reductions | mean_axis0 | `(16, 16)` | JAX CPU dispatch | 0.0119 | 0.0121 | 0.0110 | 0.0137 | 0.0009 | 6.9616 | n/a | n/a | 4.3981 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
288
|
+
| reductions | sum_axis1 | `(64, 64)` | TensorStudio | 0.0056 | 0.0057 | 0.0055 | 0.0060 | 0.0002 | 0.7324 | n/a | n/a | 3.6234 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
289
|
+
| reductions | sum_axis1 | `(64, 64)` | NumPy | 0.0041 | 0.0042 | 0.0041 | 0.0047 | 0.0002 | 0.7324 | n/a | n/a | 3.6234 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
290
|
+
| reductions | sum_axis1 | `(64, 64)` | JAX CPU dispatch | 0.0205 | 0.0190 | 0.0158 | 0.0208 | 0.0020 | 0.7324 | n/a | n/a | 3.6234 | no | n/a | n/a | yes | NumPy | reference |
|
|
291
|
+
| reductions | mean_axis0 | `(64, 64)` | TensorStudio | 0.0037 | 0.0038 | 0.0037 | 0.0041 | 0.0002 | 3.4748 | n/a | n/a | 5.0602 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
292
|
+
| reductions | mean_axis0 | `(64, 64)` | NumPy | 0.0129 | 0.0129 | 0.0120 | 0.0135 | 0.0005 | 3.4748 | n/a | n/a | 5.0602 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
293
|
+
| reductions | mean_axis0 | `(64, 64)` | JAX CPU dispatch | 0.0188 | 0.0174 | 0.0130 | 0.0203 | 0.0026 | 3.4748 | n/a | n/a | 5.0602 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
294
|
+
| reductions | sum_axis1 | `(128, 128)` | TensorStudio | 0.0162 | 0.0162 | 0.0160 | 0.0164 | 0.0001 | 0.4971 | n/a | n/a | 1.5494 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
295
|
+
| reductions | sum_axis1 | `(128, 128)` | NumPy | 0.0081 | 0.0081 | 0.0080 | 0.0081 | 0.0000 | 0.4971 | n/a | n/a | 1.5494 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
296
|
+
| reductions | sum_axis1 | `(128, 128)` | JAX CPU dispatch | 0.0251 | 0.0227 | 0.0175 | 0.0255 | 0.0033 | 0.4971 | n/a | n/a | 1.5494 | no | n/a | n/a | yes | NumPy | reference |
|
|
297
|
+
| reductions | mean_axis0 | `(128, 128)` | TensorStudio | 0.0066 | 0.0066 | 0.0066 | 0.0066 | 0.0000 | 2.6388 | n/a | n/a | 2.1855 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
298
|
+
| reductions | mean_axis0 | `(128, 128)` | NumPy | 0.0174 | 0.0167 | 0.0150 | 0.0182 | 0.0014 | 2.6388 | n/a | n/a | 2.1855 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
299
|
+
| reductions | mean_axis0 | `(128, 128)` | JAX CPU dispatch | 0.0144 | 0.0162 | 0.0128 | 0.0207 | 0.0035 | 2.6388 | n/a | n/a | 2.1855 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
300
|
+
| reductions | sum_axis1 | `(256, 256)` | TensorStudio | 0.0648 | 0.0656 | 0.0642 | 0.0680 | 0.0015 | 0.3345 | n/a | n/a | 1.1645 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
301
|
+
| reductions | sum_axis1 | `(256, 256)` | NumPy | 0.0217 | 0.0227 | 0.0215 | 0.0259 | 0.0017 | 0.3345 | n/a | n/a | 1.1645 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
302
|
+
| reductions | sum_axis1 | `(256, 256)` | JAX CPU dispatch | 0.0754 | 0.0763 | 0.0728 | 0.0810 | 0.0027 | 0.3345 | n/a | n/a | 1.1645 | no | n/a | n/a | yes | NumPy | reference |
|
|
303
|
+
| reductions | mean_axis0 | `(256, 256)` | TensorStudio | 0.0184 | 0.0186 | 0.0183 | 0.0194 | 0.0004 | 1.2350 | n/a | n/a | 1.3719 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
304
|
+
| reductions | mean_axis0 | `(256, 256)` | NumPy | 0.0227 | 0.0250 | 0.0223 | 0.0297 | 0.0032 | 1.2350 | n/a | n/a | 1.3719 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
305
|
+
| reductions | mean_axis0 | `(256, 256)` | JAX CPU dispatch | 0.0252 | 0.0255 | 0.0246 | 0.0269 | 0.0009 | 1.2350 | n/a | n/a | 1.3719 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
306
|
+
| matmul | matmul | `(16, 16)` | TensorStudio | 0.0034 | 0.0034 | 0.0034 | 0.0034 | 0.0000 | 1.0573 | n/a | n/a | 2.6977 | yes | n/a | n/a | yes | TensorStudio | win vs NumPy |
|
|
307
|
+
| matmul | matmul | `(16, 16)` | NumPy | 0.0036 | 0.0036 | 0.0028 | 0.0044 | 0.0007 | 1.0573 | n/a | n/a | 2.6977 | yes | n/a | n/a | yes | TensorStudio | NumPy baseline |
|
|
308
|
+
| matmul | matmul | `(16, 16)` | JAX CPU dispatch | 0.0091 | 0.0113 | 0.0090 | 0.0152 | 0.0027 | 1.0573 | n/a | n/a | 2.6977 | yes | n/a | n/a | yes | TensorStudio | reference |
|
|
309
|
+
| matmul | matmul | `(64, 64)` | TensorStudio | 0.0345 | 0.0368 | 0.0343 | 0.0463 | 0.0047 | 0.3155 | n/a | n/a | 1.4296 | no | n/a | n/a | yes | NumPy | loss vs NumPy |
|
|
310
|
+
| matmul | matmul | `(64, 64)` | NumPy | 0.0109 | 0.0109 | 0.0108 | 0.0110 | 0.0001 | 0.3155 | n/a | n/a | 1.4296 | no | n/a | n/a | yes | NumPy | NumPy baseline |
|
|
311
|
+
| matmul | matmul | `(64, 64)` | JAX CPU dispatch | 0.0494 | 0.0428 | 0.0232 | 0.0519 | 0.0107 | 0.3155 | n/a | n/a | 1.4296 | no | n/a | n/a | yes | NumPy | reference |
|
|
312
|
+
| matmul | matmul | `(128, 128)` | TensorStudio | 0.2620 | 0.2663 | 0.2610 | 0.2799 | 0.0072 | 1.3408 | n/a | n/a | 0.4619 | yes | n/a | n/a | no | JAX CPU dispatch | win vs NumPy |
|
|
313
|
+
| matmul | matmul | `(128, 128)` | NumPy | 0.3513 | 0.3511 | 0.3144 | 0.3951 | 0.0259 | 1.3408 | n/a | n/a | 0.4619 | yes | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
|
|
314
|
+
| matmul | matmul | `(128, 128)` | JAX CPU dispatch | 0.1210 | 0.1196 | 0.1126 | 0.1284 | 0.0062 | 1.3408 | n/a | n/a | 0.4619 | yes | n/a | n/a | no | JAX CPU dispatch | reference |
|
|
315
|
+
| matmul | matmul | `(256, 256)` | TensorStudio | 2.2228 | 2.2646 | 2.2090 | 2.3544 | 0.0617 | 0.2021 | n/a | n/a | 0.1261 | no | n/a | n/a | no | JAX CPU dispatch | loss vs NumPy |
|
|
316
|
+
| matmul | matmul | `(256, 256)` | NumPy | 0.4492 | 0.4439 | 0.4029 | 0.4722 | 0.0254 | 0.2021 | n/a | n/a | 0.1261 | no | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
|
|
317
|
+
| matmul | matmul | `(256, 256)` | JAX CPU dispatch | 0.2803 | 0.2786 | 0.2731 | 0.2821 | 0.0032 | 0.2021 | n/a | n/a | 0.1261 | no | n/a | n/a | no | JAX CPU dispatch | reference |
|
|
318
|
+
| conv2d | conv2d_3x3_padding1 | `(1, 1, 8, 8)` | TensorStudio | 0.1517 | 0.1518 | 0.1497 | 0.1545 | 0.0016 | 8.5189 | n/a | n/a | 0.7899 | yes | n/a | n/a | no | JAX CPU dispatch | win vs NumPy |
|
|
319
|
+
| conv2d | conv2d_3x3_padding1 | `(1, 1, 8, 8)` | NumPy | 1.2925 | 1.3066 | 1.2823 | 1.3362 | 0.0242 | 8.5189 | n/a | n/a | 0.7899 | yes | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
|
|
320
|
+
| conv2d | conv2d_3x3_padding1 | `(1, 1, 8, 8)` | JAX CPU dispatch | 0.1198 | 0.1211 | 0.1164 | 0.1270 | 0.0043 | 8.5189 | n/a | n/a | 0.7899 | yes | n/a | n/a | no | JAX CPU dispatch | reference |
|
|
321
|
+
| conv2d | conv2d_3x3_padding1 | `(4, 3, 16, 16)` | TensorStudio | 7.5418 | 7.5529 | 7.5164 | 7.6132 | 0.0360 | 8.4226 | n/a | n/a | 0.0411 | yes | n/a | n/a | no | JAX CPU dispatch | win vs NumPy |
|
|
322
|
+
| conv2d | conv2d_3x3_padding1 | `(4, 3, 16, 16)` | NumPy | 63.5214 | 63.7343 | 62.8244 | 64.6576 | 0.6405 | 8.4226 | n/a | n/a | 0.0411 | yes | n/a | n/a | no | JAX CPU dispatch | NumPy baseline |
|
|
323
|
+
| conv2d | conv2d_3x3_padding1 | `(4, 3, 16, 16)` | JAX CPU dispatch | 0.3099 | 0.3194 | 0.3036 | 0.3439 | 0.0156 | 8.4226 | n/a | n/a | 0.0411 | yes | n/a | n/a | no | JAX CPU dispatch | reference |
|
|
324
|
+
| pooling | max_pool2d_2x2 | `(1, 1, 16, 16)` | TensorStudio | 0.0144 | 0.0149 | 0.0143 | 0.0168 | 0.0010 | 12.2930 | 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.1765 | 0.1762 | 0.1734 | 0.1806 | 0.0026 | 12.2930 | 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.0156 | 0.0152 | 0.0140 | 0.0166 | 0.0011 | 39.5541 | 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.6162 | 0.6166 | 0.5966 | 0.6521 | 0.0196 | 39.5541 | 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.5568 | 0.5904 | 0.5423 | 0.6611 | 0.0485 | 15.2546 | 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 | 8.4943 | 8.5757 | 8.3747 | 8.8608 | 0.1833 | 15.2546 | 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.5530 | 0.5529 | 0.5463 | 0.5626 | 0.0055 | 53.3335 | 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 | 29.4954 | 29.7615 | 29.3748 | 30.6629 | 0.4739 | 53.3335 | 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.0159 | 0.0143 | 0.0197 | 0.0020 | 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.0307 | 0.0319 | 0.0301 | 0.0368 | 0.0025 | 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.1458 | 0.1640 | 0.1390 | 0.2102 | 0.0285 | 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.3263 | 0.3526 | 0.3238 | 0.4602 | 0.0538 | 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.0264 | 1.0239 | 1.0159 | 1.0312 | 0.0057 | 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.4146 | 2.4096 | 2.3658 | 2.4579 | 0.0302 | 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.5981 | 1.5986 | 1.5944 | 1.6036 | 0.0034 | 0.1010 | 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.1614 | 0.1753 | 0.1602 | 0.2106 | 0.0198 | 0.1010 | 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.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Gradient Notes
|
|
2
|
+
|
|
3
|
+
TensorStudio uses eager reverse-mode autodiff. Each differentiable native op can
|
|
4
|
+
attach a small backward function to its output tensor.
|
|
5
|
+
|
|
6
|
+
## Scalar Backward
|
|
7
|
+
|
|
8
|
+
Calling `backward()` without an explicit gradient is valid for scalar outputs:
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
import tensorstudio as ts
|
|
12
|
+
|
|
13
|
+
x = ts.tensor([1.0, 2.0, 3.0], requires_grad=True)
|
|
14
|
+
loss = (x * x).sum()
|
|
15
|
+
loss.backward()
|
|
16
|
+
print(x.grad.tolist())
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
For non-scalar outputs, pass an explicit gradient tensor.
|
|
20
|
+
|
|
21
|
+
## Broadcasting Gradients
|
|
22
|
+
|
|
23
|
+
When a forward operation broadcasts an input, the backward pass sums gradients
|
|
24
|
+
back to the original input shape.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
x = ts.ones((2, 3), requires_grad=True)
|
|
28
|
+
b = ts.ones((3,), requires_grad=True)
|
|
29
|
+
(x + b).sum().backward()
|
|
30
|
+
print(b.grad.tolist()) # [2.0, 2.0, 2.0]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Selection Gradients
|
|
34
|
+
|
|
35
|
+
`where(condition, a, b)` does not differentiate through the boolean condition.
|
|
36
|
+
Gradients flow to `a` where the condition is true and to `b` where it is false.
|
|
37
|
+
|
|
38
|
+
`maximum(a, b)` and `minimum(a, b)` split gradients evenly when values are tied.
|
|
39
|
+
This matches the tie-handling used by TensorStudio's extrema reductions and
|
|
40
|
+
avoids unstable left-or-right-only behavior.
|
|
41
|
+
|
|
42
|
+
## Non-Differentiable Outputs
|
|
43
|
+
|
|
44
|
+
Integer and boolean tensors do not carry autograd history. Arg reductions return
|
|
45
|
+
`int64` indices and are intentionally non-differentiable.
|
|
46
|
+
|