torch-type-nn 0.1.0.dev0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. torch_type_nn-0.2.0/BOARD.CUDA.md +312 -0
  2. torch_type_nn-0.2.0/BOARD.md +408 -0
  3. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/PKG-INFO +96 -32
  4. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/README.md +95 -31
  5. torch_type_nn-0.2.0/VERSIONS.md +48 -0
  6. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/benchmarks/bench.py +131 -13
  7. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/benchmarks/board.py +135 -14
  8. torch_type_nn-0.2.0/benchmarks/graph_parity.py +148 -0
  9. torch_type_nn-0.2.0/benchmarks/results/board-cuda.jsonl +24 -0
  10. torch_type_nn-0.2.0/benchmarks/results/board-per-sample.jsonl +78 -0
  11. torch_type_nn-0.2.0/benchmarks/results/scale-batch32.jsonl +18 -0
  12. torch_type_nn-0.2.0/benchmarks/results/scale-cuda.jsonl +10 -0
  13. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/benchmarks/scale.py +67 -34
  14. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/docs/AUDIT.md +10 -0
  15. torch_type_nn-0.2.0/docs/BACKENDS.md +42 -0
  16. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/docs/DIFFERENCES.md +69 -0
  17. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/flake.lock +9 -9
  18. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/flake.nix +85 -40
  19. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/pyproject.toml +7 -2
  20. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/__init__.py +8 -2
  21. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/adapters/typenn.py +30 -4
  22. torch_type_nn-0.2.0/src/torch_type_nn/backend.py +38 -0
  23. torch_type_nn-0.2.0/src/torch_type_nn/cuda/__init__.py +9 -0
  24. torch_type_nn-0.2.0/src/torch_type_nn/cuda/adapter.py +549 -0
  25. torch_type_nn-0.2.0/src/torch_type_nn/cuda/graph.py +447 -0
  26. torch_type_nn-0.2.0/src/torch_type_nn/cuda/model.py +733 -0
  27. torch_type_nn-0.2.0/src/torch_type_nn/graph/__init__.py +18 -0
  28. torch_type_nn-0.2.0/src/torch_type_nn/graph/core.py +1406 -0
  29. torch_type_nn-0.2.0/src/torch_type_nn/graph/torch_store.py +467 -0
  30. torch_type_nn-0.2.0/src/torch_type_nn/native/__init__.py +9 -0
  31. torch_type_nn-0.2.0/src/torch_type_nn/native/_build.py +95 -0
  32. torch_type_nn-0.2.0/src/torch_type_nn/native/_lib.py +87 -0
  33. torch_type_nn-0.2.0/src/torch_type_nn/native/c/ORIGIN +8 -0
  34. torch_type_nn-0.2.0/src/torch_type_nn/native/c/common.h +73 -0
  35. torch_type_nn-0.2.0/src/torch_type_nn/native/c/tnn_py.c +336 -0
  36. torch_type_nn-0.2.0/src/torch_type_nn/native/c/tnn_py.h +75 -0
  37. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn.c +483 -0
  38. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn.h +135 -0
  39. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_graph.c +1612 -0
  40. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_graph.h +125 -0
  41. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_overfit.c +461 -0
  42. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_overfit.h +119 -0
  43. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_overfit_scale.c +554 -0
  44. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_overfit_scale.h +50 -0
  45. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_scale.c +831 -0
  46. torch_type_nn-0.2.0/src/torch_type_nn/native/c/type_nn_scale.h +57 -0
  47. torch_type_nn-0.2.0/src/torch_type_nn/native/graph.py +210 -0
  48. torch_type_nn-0.2.0/src/torch_type_nn/native/model.py +192 -0
  49. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/optim.py +7 -1
  50. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/scaling.py +4 -0
  51. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/conftest.py +20 -0
  52. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_board.py +41 -3
  53. torch_type_nn-0.2.0/tests/test_cuda.py +93 -0
  54. torch_type_nn-0.2.0/tests/test_graph.py +434 -0
  55. torch_type_nn-0.2.0/tests/test_native.py +77 -0
  56. torch_type_nn-0.2.0/tests/test_package.py +31 -0
  57. torch_type_nn-0.2.0/tests/test_scale.py +77 -0
  58. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_threshold.py +44 -0
  59. torch_type_nn-0.1.0.dev0/BOARD.md +0 -256
  60. torch_type_nn-0.1.0.dev0/benchmarks/data/README.md +0 -31
  61. torch_type_nn-0.1.0.dev0/benchmarks/results/board-per-sample.jsonl +0 -36
  62. torch_type_nn-0.1.0.dev0/benchmarks/results/scale-batch32.jsonl +0 -10
  63. torch_type_nn-0.1.0.dev0/tests/test_package.py +0 -11
  64. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/.gitignore +0 -0
  65. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/LICENSE +0 -0
  66. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/benchmarks/datasets.json +0 -0
  67. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/benchmarks/fetch_data.py +0 -0
  68. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/benchmarks/reference/c-type-nn-7333bf7-30seeds.jsonl +0 -0
  69. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/docs/ADAPTERS.md +0 -0
  70. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/adapters/__init__.py +0 -0
  71. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/adapters/mlp.py +0 -0
  72. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/edits.py +0 -0
  73. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/functional.py +0 -0
  74. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/layer.py +0 -0
  75. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/mlp.py +0 -0
  76. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/network.py +0 -0
  77. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/protocol.py +0 -0
  78. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/py.typed +0 -0
  79. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/src/torch_type_nn/train.py +0 -0
  80. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/c/crosscheck.c +0 -0
  81. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/data/iris_prune_boundary.pt +0 -0
  82. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/helpers.py +0 -0
  83. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_crosscheck_c.py +0 -0
  84. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_datasets.py +0 -0
  85. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_device.py +0 -0
  86. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_edits.py +0 -0
  87. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_functional.py +0 -0
  88. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_layer.py +0 -0
  89. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_mlp.py +0 -0
  90. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_optim.py +0 -0
  91. {torch_type_nn-0.1.0.dev0 → torch_type_nn-0.2.0}/tests/test_scaling.py +0 -0
@@ -0,0 +1,312 @@
1
+ # CUDA board
2
+
3
+ Numbers on this page come from `benchmarks/board.py --write-cuda`. They are
4
+ **not** bit-identical to C `bench.c`; C stays the number-for-number backend
5
+ on [BOARD.md](BOARD.md). This file is the ragged device store
6
+ (`CudaTypeNN`: packed `W (R, n_in)`, fused `X @ W.T`).
7
+
8
+ `nix flake check --impure` skips `checks.cuda` unless the Nix daemon enables
9
+ the `cuda` system feature. A GPU machine without that feature still runs the
10
+ suite on the host:
11
+
12
+ ```sh
13
+ nix run .#test-cuda # pytest + xor on the device (prints the probe)
14
+ nix run .#board-cuda # 5-seed CUDA board + scale, then this file
15
+ ```
16
+
17
+ or step by step:
18
+
19
+ ```sh
20
+ nix run .#bench-cuda -- all cuda-type-nn,cuda-type-nn-overfit,cuda-graph-type-nn,mlp \
21
+ --seeds 5 --device cuda --jobs 0 \
22
+ > benchmarks/results/board-cuda.jsonl
23
+ nix run .#scale-cuda -- all \
24
+ --models cuda-type-nn,cuda-type-nn-overfit,cuda-graph-type-nn,mlp-16,mlp-64 \
25
+ --seeds 5 --device cuda --jobs 0 \
26
+ > benchmarks/results/scale-cuda.jsonl
27
+ nix run .#board -- \
28
+ --board benchmarks/results/board-cuda.jsonl benchmarks/results/board-per-sample.jsonl \
29
+ --scale benchmarks/results/scale-cuda.jsonl benchmarks/results/scale-batch32.jsonl \
30
+ --write-cuda BOARD.CUDA.md
31
+ ```
32
+
33
+ Look for `======== torch-type-nn CUDA probe ========` and
34
+ `torch-type-nn device: CUDA …` in the log. A green run with only
35
+ `torch-type-nn device: CPU` did not use a GPU.
36
+
37
+ ## Why C rows disagreed across the two boards
38
+
39
+ Two different gaps, not one:
40
+
41
+ 1. **C type-nn on BOARD.md vs C type-nn on BOARD.CUDA.md.**
42
+ `board.py --write-cuda` used to merge `benchmarks/reference/c-type-nn-7333bf7-30seeds.jsonl`
43
+ (C binary, 30 seeds) into this file. BOARD.md's C rows are
44
+ **5-seed NativeTypeNN**. Those are not the same experiment. The CUDA
45
+ writer no longer reads that 30-seed file. Pass
46
+ `benchmarks/results/board-per-sample.jsonl` next to `board-cuda.jsonl`
47
+ so both markdown files show the same 5-seed C cells.
48
+
49
+ 2. **C type-nn vs cuda-type-nn (and the overfit pair).**
50
+ `CudaTypeNN` is the C *layout* (ragged `W (R, n_in)`, fused GEMM) with
51
+ a *thinner scaler*. It is not `type_nn_scale.c` / `type_nn_overfit_scale.c`.
52
+ Missing or simplified relative to C: pair-cache BIC, width probes
53
+ (new unit + consumer column at 0), the fold when a depth probe is
54
+ inserted, and C's exact identity-layer metric. So CUDA stays closer to
55
+ birth depth, grows fewer params, and can lose on xor-train / Friedman
56
+ while C grows. Forward+Adam on a *fixed* graph match C; the structure
57
+ trajectory does not. C remains the number-for-number backend.
58
+
59
+ ## Per-sample tasks
60
+
61
+ Same tasks, split, epochs and lr as [BOARD.md](BOARD.md). CUDA rows are
62
+ per-sample Adam on the device (C protocol, fused GEMV). MLP rows in the
63
+ same jsonl were trained with `--device cuda`.
64
+
65
+ <!-- board:per-sample -->
66
+ Generated by `benchmarks/board.py --write-cuda` from `benchmarks/results/board-cuda.jsonl`, `benchmarks/results/board-per-sample.jsonl` (5 seeds, batch 1, cpu; 5 seeds, batch 1, cuda; cuda type-nn rows from CudaTypeNN).
67
+
68
+ | task | model | hold MSE | ± sd | hold acc | train MSE | params | ± sd | layers | train s | µs/inf |
69
+ |---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
70
+ | xor | C type-nn | n/a | n/a | n/a | 5.87e-09 | 26.4 | 3.6 | 1→2.0 | 0.09 | 55.4 |
71
+ | xor | C type-nn-overfit | n/a | n/a | n/a | 1.39e-07 | 107.6 | 73.4 | 1→3.0 | 0.09 | 79.4 |
72
+ | xor | torch ref-type-nn | n/a | n/a | n/a | 8.40e-06 | 24.8 | 1.8 | 1→2.0 | 45.49 | 419.0 |
73
+ | xor | torch ref-type-nn-overfit | n/a | n/a | n/a | 4.90e-06 | 56.0 | 17.0 | 1→2.4 | 52.21 | 313.7 |
74
+ | xor | **torch type-nn** | n/a | n/a | n/a | 5.11e-06 | 63.0 | 23.7 | 1→2.4 | 41.93 | 541.8 |
75
+ | xor | torch type-nn-bic | n/a | n/a | n/a | 8.40e-06 | 24.8 | 1.8 | 1→2.0 | 39.84 | 677.9 |
76
+ | xor | torch MLP | n/a | n/a | n/a | 7.81e-10 | 33.0 | 0.0 | 2→2.0 | 24.91 | 352.5 |
77
+ | xor | torch MLP, scaled | n/a | n/a | n/a | 8.34e-02 | 39.0 | 37.1 | 2→3.2 | 31.02 | 196.0 |
78
+ | xor | cuda type-nn | n/a | n/a | n/a | 6.74e-06 | 24.8 | 1.8 | 1→2.0 | 412.81 | 4432.8 |
79
+ | xor | cuda type-nn-overfit | n/a | n/a | n/a | 1.04e-06 | 73.6 | 36.0 | 1→2.6 | 322.93 | 7841.3 |
80
+ | xor | C graph-type-nn | n/a | n/a | n/a | 3.11e-07 | 24.8 | 1.8 | 1→2.0 | 0.20 | 61.9 |
81
+ | xor | **torch graph-type-nn** | n/a | n/a | n/a | 5.00e-02 | 20.0 | 8.9 | 1→1.8 | 80.70 | 1391.5 |
82
+ | xor | cuda graph-type-nn | n/a | n/a | n/a | 5.00e-02 | 20.0 | 8.9 | 1→1.8 | 314.00 | 7123.7 |
83
+ | iris | C type-nn | 0.0215 | 0.0069 | 0.969 | 8.43e-04 | 125.4 | 52.2 | 3→3.8 | 0.96 | 26.6 |
84
+ | iris | C type-nn-overfit | 0.0249 | 0.0044 | 0.960 | 1.81e-03 | 174.6 | 29.8 | 3→4.0 | 0.30 | 60.2 |
85
+ | iris | torch ref-type-nn | 0.0250 | 0.0063 | 0.960 | 8.26e-05 | 139.0 | 25.9 | 3→4.0 | 263.82 | 1475.9 |
86
+ | iris | torch ref-type-nn-overfit | 0.0261 | 0.0075 | 0.956 | 2.64e-03 | 167.6 | 19.3 | 3→4.0 | 269.55 | 1087.1 |
87
+ | iris | **torch type-nn** | 0.0250 | 0.0038 | 0.956 | 1.08e-04 | 190.0 | 18.4 | 3→4.0 | 252.28 | 871.5 |
88
+ | iris | torch type-nn-bic | 0.0377 | 0.0303 | 0.956 | 1.38e-02 | 147.4 | 72.9 | 3→4.0 | 270.28 | 805.0 |
89
+ | iris | torch MLP | 0.0309 | 0.0043 | 0.956 | 1.48e-02 | 67.0 | 0.0 | 2→2.0 | 36.66 | 153.0 |
90
+ | iris | torch MLP, scaled | 0.0262 | 0.0054 | 0.956 | 5.89e-03 | 71.8 | 16.3 | 2→3.0 | 102.53 | 203.6 |
91
+ | iris | cuda type-nn | 0.0244 | 0.0049 | 0.960 | 1.57e-03 | 145.2 | 35.0 | 3→4.0 | 1613.89 | 17826.8 |
92
+ | iris | cuda type-nn-overfit | 0.0404 | 0.0354 | 0.956 | 1.57e-02 | 189.8 | 38.3 | 3→4.0 | 1487.48 | 22645.5 |
93
+ | iris | C graph-type-nn | 0.0218 | 0.0065 | 0.969 | 8.47e-04 | 80.6 | 16.6 | 3→3.8 | 0.94 | 33.3 |
94
+ | iris | **torch graph-type-nn** | 0.0216 | 0.0054 | 0.964 | 2.66e-03 | 102.0 | 36.5 | 3→3.8 | 347.44 | 2088.9 |
95
+ | iris | cuda graph-type-nn | 0.0263 | 0.0029 | 0.956 | 3.23e-03 | 81.6 | 24.9 | 3→3.8 | 1067.25 | 11004.1 |
96
+ | wine | C type-nn | 0.0277 | 0.0048 | 0.956 | 7.85e-05 | 169.8 | 52.3 | 4→5.0 | 1.45 | 45.8 |
97
+ | wine | C type-nn-overfit | 0.0209 | 0.0105 | 0.967 | 1.61e-04 | 392.6 | 43.7 | 4→5.0 | 0.28 | 38.4 |
98
+ | wine | torch ref-type-nn | 0.0130 | 0.0064 | 0.978 | 2.35e-05 | 211.6 | 32.9 | 4→5.0 | 306.89 | 1004.1 |
99
+ | wine | torch ref-type-nn-overfit | 0.0322 | 0.0112 | 0.944 | 4.01e-05 | 358.6 | 27.6 | 4→5.0 | 301.92 | 1205.0 |
100
+ | wine | **torch type-nn** | 0.0242 | 0.0069 | 0.959 | 2.85e-05 | 469.6 | 35.7 | 4→5.0 | 296.13 | 1686.3 |
101
+ | wine | torch type-nn-bic | 0.0408 | 0.0415 | 0.941 | 1.44e-02 | 152.8 | 103.7 | 4→5.0 | 304.39 | 858.0 |
102
+ | wine | torch MLP | 0.0259 | 0.0032 | 0.956 | 3.87e-03 | 275.0 | 0.0 | 2→2.0 | 33.32 | 148.6 |
103
+ | wine | torch MLP, scaled | 0.0145 | 0.0045 | 0.974 | 2.85e-04 | 124.6 | 32.7 | 2→3.0 | 89.95 | 228.6 |
104
+ | wine | cuda type-nn | 0.0208 | 0.0043 | 0.959 | 2.67e-05 | 214.6 | 44.8 | 4→5.0 | 1952.68 | 19216.9 |
105
+ | wine | cuda type-nn-overfit | 0.0220 | 0.0094 | 0.963 | 1.21e-05 | 470.2 | 52.3 | 4→5.0 | 1761.65 | 14747.7 |
106
+ | wine | C graph-type-nn | 0.0184 | 0.0039 | 0.967 | 1.08e-04 | 165.8 | 49.1 | 4→5.4 | 2.48 | 74.7 |
107
+ | wine | **torch graph-type-nn** | 0.0148 | 0.0068 | 0.974 | 3.69e-04 | 145.8 | 47.8 | 4→4.8 | 426.05 | 2604.5 |
108
+ | wine | cuda graph-type-nn | 0.0191 | 0.0075 | 0.963 | 3.46e-04 | 122.8 | 50.8 | 4→4.8 | 1340.38 | 14599.9 |
109
+ | wdbc | C type-nn | 0.0448 | 0.0048 | 0.951 | 1.01e-04 | 162.8 | 28.7 | 3→4.0 | 0.38 | 49.4 |
110
+ | wdbc | C type-nn-overfit | 0.0459 | 0.0030 | 0.950 | 4.22e-04 | 162.6 | 31.2 | 3→3.2 | 0.11 | 33.4 |
111
+ | wdbc | torch ref-type-nn | 0.0475 | 0.0065 | 0.945 | 2.61e-04 | 175.8 | 36.3 | 3→4.0 | 309.73 | 830.8 |
112
+ | wdbc | torch ref-type-nn-overfit | 0.0454 | 0.0080 | 0.949 | 7.91e-04 | 171.6 | 57.4 | 3→3.6 | 303.12 | 1184.8 |
113
+ | wdbc | **torch type-nn** | 0.0465 | 0.0044 | 0.947 | 3.69e-04 | 233.4 | 32.9 | 3→3.6 | 296.80 | 758.3 |
114
+ | wdbc | torch type-nn-bic | 0.0467 | 0.0059 | 0.947 | 1.64e-03 | 211.0 | 84.7 | 3→4.0 | 323.76 | 1019.8 |
115
+ | wdbc | torch MLP | 0.0471 | 0.0040 | 0.944 | 5.70e-03 | 513.0 | 0.0 | 2→2.0 | 46.26 | 173.4 |
116
+ | wdbc | torch MLP, scaled | 0.0539 | 0.0079 | 0.943 | 1.84e-03 | 132.0 | 23.3 | 2→3.0 | 120.17 | 214.2 |
117
+ | wdbc | cuda type-nn | 0.0435 | 0.0028 | 0.952 | 9.64e-05 | 207.8 | 34.3 | 3→4.0 | 1279.90 | 3551.4 |
118
+ | wdbc | cuda type-nn-overfit | 0.0475 | 0.0035 | 0.945 | 4.42e-04 | 211.2 | 41.6 | 3→3.4 | 1059.34 | 2187.8 |
119
+ | wdbc | C graph-type-nn | 0.0398 | 0.0035 | 0.954 | 7.75e-04 | 128.4 | 55.0 | 3→4.0 | 0.78 | 31.0 |
120
+ | wdbc | **torch graph-type-nn** | 0.0421 | 0.0044 | 0.956 | 4.02e-03 | 90.8 | 56.2 | 3→4.0 | 387.83 | 897.5 |
121
+ | wdbc | cuda graph-type-nn | 0.0495 | 0.0076 | 0.950 | 9.35e-04 | 147.0 | 62.6 | 3→4.0 | 567.67 | 2806.1 |
122
+ | diabetes | C type-nn | 0.0329 | 0.0010 | n/a | 2.73e-02 | 20.4 | 7.2 | 2→2.4 | 0.10 | 33.5 |
123
+ | diabetes | C type-nn-overfit | 0.0371 | 0.0015 | n/a | 2.40e-02 | 33.0 | 8.5 | 2→2.2 | 0.09 | 38.7 |
124
+ | diabetes | torch ref-type-nn | 0.0328 | 0.0005 | n/a | 2.73e-02 | 18.6 | 4.9 | 2→2.2 | 322.97 | 272.7 |
125
+ | diabetes | torch ref-type-nn-overfit | 0.0366 | 0.0030 | n/a | 2.43e-02 | 31.8 | 7.8 | 2→2.4 | 328.22 | 629.4 |
126
+ | diabetes | **torch type-nn** | 0.0501 | 0.0145 | n/a | 1.75e-02 | 100.0 | 42.6 | 2→3.0 | 353.05 | 657.9 |
127
+ | diabetes | torch type-nn-bic | 0.0330 | 0.0006 | n/a | 2.78e-02 | 18.0 | 2.1 | 2→2.6 | 338.44 | 261.5 |
128
+ | diabetes | torch MLP | 0.0478 | 0.0038 | n/a | 1.47e-02 | 193.0 | 0.0 | 2→2.0 | 66.53 | 164.3 |
129
+ | diabetes | torch MLP, scaled | 0.0410 | 0.0017 | n/a | 2.05e-02 | 61.6 | 10.3 | 2→3.0 | 172.25 | 97.0 |
130
+ | diabetes | cuda type-nn | 0.0328 | 0.0006 | n/a | 2.78e-02 | 17.4 | 1.3 | 2→2.8 | 1938.75 | 10158.2 |
131
+ | diabetes | cuda type-nn-overfit | 0.0453 | 0.0053 | n/a | 1.74e-02 | 98.4 | 22.1 | 2→3.0 | 1966.89 | 9561.5 |
132
+ | diabetes | C graph-type-nn | 0.0332 | 0.0012 | n/a | 2.73e-02 | 18.8 | 6.9 | 2→2.2 | 0.22 | 83.5 |
133
+ | diabetes | **torch graph-type-nn** | 0.0332 | 0.0012 | n/a | 2.73e-02 | 18.8 | 6.9 | 2→2.2 | 393.13 | 1256.7 |
134
+ | diabetes | cuda graph-type-nn | 0.0332 | 0.0012 | n/a | 2.73e-02 | 18.8 | 6.9 | 2→2.2 | 1184.15 | 4112.5 |
135
+ | ionosphere | C type-nn | 0.0886 | 0.0111 | 0.904 | 9.70e-03 | 153.8 | 65.0 | 4→4.4 | 0.80 | 93.3 |
136
+ | ionosphere | C type-nn-overfit | 0.0813 | 0.0119 | 0.913 | 4.33e-03 | 298.0 | 60.5 | 4→4.4 | 0.38 | 68.7 |
137
+ | ionosphere | torch ref-type-nn | 0.1060 | 0.0412 | 0.891 | 3.56e-03 | 192.0 | 17.0 | 4→5.2 | 358.87 | 1182.7 |
138
+ | ionosphere | torch ref-type-nn-overfit | 0.0855 | 0.0108 | 0.906 | 2.44e-03 | 314.8 | 65.4 | 4→4.6 | 333.98 | 1213.1 |
139
+ | ionosphere | **torch type-nn** | 0.0767 | 0.0087 | 0.911 | 5.62e-05 | 389.0 | 63.8 | 4→4.8 | 338.53 | 699.1 |
140
+ | ionosphere | torch type-nn-bic | 0.1096 | 0.0176 | 0.875 | 1.53e-02 | 178.8 | 81.5 | 4→4.4 | 337.81 | 545.1 |
141
+ | ionosphere | torch MLP | 0.1356 | 0.0128 | 0.908 | 1.57e-02 | 577.0 | 0.0 | 2→2.0 | 43.09 | 158.7 |
142
+ | ionosphere | torch MLP, scaled | 0.1142 | 0.0235 | 0.885 | 8.43e-03 | 167.8 | 17.1 | 2→3.0 | 107.52 | 96.4 |
143
+ | ionosphere | cuda type-nn | 0.1001 | 0.0113 | 0.877 | 2.13e-02 | 167.2 | 124.5 | 4→4.2 | 1729.76 | 8618.0 |
144
+ | ionosphere | cuda type-nn-overfit | 0.1028 | 0.0333 | 0.887 | 1.24e-02 | 336.2 | 35.9 | 4→4.8 | 1550.01 | 15940.8 |
145
+ | ionosphere | C graph-type-nn | 0.0862 | 0.0209 | 0.902 | 7.79e-03 | 221.4 | 133.0 | 4→4.8 | 1.56 | 56.7 |
146
+ | ionosphere | **torch graph-type-nn** | 0.0967 | 0.0244 | 0.885 | 2.42e-02 | 128.2 | 146.5 | 4→3.6 | 433.01 | 1059.0 |
147
+ | ionosphere | cuda graph-type-nn | 0.0978 | 0.0403 | 0.879 | 1.46e-02 | 239.0 | 163.6 | 4→4.2 | 699.41 | 7323.0 |
148
+ <!-- /board:per-sample -->
149
+
150
+ ## Comparisons
151
+
152
+ Hold-out gap is **clear** when it exceeds two standard errors of the
153
+ difference, `2 sqrt(sd_a²/n_a + sd_b²/n_b)`.
154
+
155
+ <!-- board:pairs -->
156
+ | task | comparison | Δ hold MSE | 2se | verdict | params ratio |
157
+ |---|---|---:|---:|---|---:|
158
+ | xor | cuda type-nn vs torch MLP | n/a | n/a | both fit (no hold-out) | 0.75× |
159
+ | xor | cuda type-nn-overfit vs torch MLP | n/a | n/a | both fit (no hold-out) | 2.23× |
160
+ | xor | cuda type-nn vs cuda type-nn-overfit | n/a | n/a | both fit (no hold-out) | 0.34× |
161
+ | xor | cuda type-nn vs C type-nn | n/a | n/a | both fit (no hold-out) | 0.94× |
162
+ | xor | cuda type-nn-overfit vs C type-nn-overfit | n/a | n/a | both fit (no hold-out) | 0.68× |
163
+ | iris | cuda type-nn vs torch MLP | -0.0065 | 0.0059 | lower, **clear** | 2.17× |
164
+ | iris | cuda type-nn-overfit vs torch MLP | +0.0095 | 0.0319 | higher, within noise | 2.83× |
165
+ | iris | cuda type-nn vs cuda type-nn-overfit | -0.0160 | 0.0320 | lower, within noise | 0.77× |
166
+ | iris | cuda type-nn vs C type-nn | +0.0029 | 0.0076 | higher, within noise | 1.16× |
167
+ | iris | cuda type-nn-overfit vs C type-nn-overfit | +0.0156 | 0.0319 | higher, within noise | 1.09× |
168
+ | wine | cuda type-nn vs torch MLP | -0.0050 | 0.0048 | lower, **clear** | 0.78× |
169
+ | wine | cuda type-nn-overfit vs torch MLP | -0.0039 | 0.0089 | lower, within noise | 1.71× |
170
+ | wine | cuda type-nn vs cuda type-nn-overfit | -0.0011 | 0.0092 | lower, within noise | 0.46× |
171
+ | wine | cuda type-nn vs C type-nn | -0.0068 | 0.0058 | lower, **clear** | 1.26× |
172
+ | wine | cuda type-nn-overfit vs C type-nn-overfit | +0.0011 | 0.0126 | higher, within noise | 1.20× |
173
+ | wdbc | cuda type-nn vs torch MLP | -0.0037 | 0.0044 | lower, within noise | 0.41× |
174
+ | wdbc | cuda type-nn-overfit vs torch MLP | +0.0003 | 0.0047 | higher, within noise | 0.41× |
175
+ | wdbc | cuda type-nn vs cuda type-nn-overfit | -0.0040 | 0.0040 | lower, within noise | 0.98× |
176
+ | wdbc | cuda type-nn vs C type-nn | -0.0014 | 0.0050 | lower, within noise | 1.28× |
177
+ | wdbc | cuda type-nn-overfit vs C type-nn-overfit | +0.0016 | 0.0041 | higher, within noise | 1.30× |
178
+ | diabetes | cuda type-nn vs torch MLP | -0.0150 | 0.0034 | lower, **clear** | 0.09× |
179
+ | diabetes | cuda type-nn-overfit vs torch MLP | -0.0024 | 0.0058 | lower, within noise | 0.51× |
180
+ | diabetes | cuda type-nn vs cuda type-nn-overfit | -0.0125 | 0.0047 | lower, **clear** | 0.18× |
181
+ | diabetes | cuda type-nn vs C type-nn | -0.0002 | 0.0010 | lower, within noise | 0.85× |
182
+ | diabetes | cuda type-nn-overfit vs C type-nn-overfit | +0.0082 | 0.0049 | higher, **clear** | 2.98× |
183
+ | ionosphere | cuda type-nn vs torch MLP | -0.0355 | 0.0153 | lower, **clear** | 0.29× |
184
+ | ionosphere | cuda type-nn-overfit vs torch MLP | -0.0328 | 0.0319 | lower, **clear** | 0.58× |
185
+ | ionosphere | cuda type-nn vs cuda type-nn-overfit | -0.0027 | 0.0315 | lower, within noise | 0.50× |
186
+ | ionosphere | cuda type-nn vs C type-nn | +0.0116 | 0.0142 | higher, within noise | 1.09× |
187
+ | ionosphere | cuda type-nn-overfit vs C type-nn-overfit | +0.0216 | 0.0316 | higher, within noise | 1.13× |
188
+ <!-- /board:pairs -->
189
+
190
+ ## graph-type-nn
191
+
192
+ The graph variant has three implementations of one rule (type-nn's
193
+ `type_nn_graph.c`): **C graph-type-nn** is the C code itself
194
+ (`NativeGraphTypeNN`), **torch graph-type-nn** is `GraphTypeNN` (AndOr nodes,
195
+ autograd, `TypeAdam`) and **cuda graph-type-nn** is `CudaGraphTypeNN` (packed
196
+ nodes, hand-written backward, on the device). All three draw from C's
197
+ xorshift32 stream in C's order, so they are born with the same weights and,
198
+ up to floating-point rounding, make the same structural decisions. The port
199
+ rows test that; "the goal" row is the graph against the chain (C type-nn):
200
+ the same hold-out with fewer parameters.
201
+
202
+ <!-- board:graph -->
203
+ Generated by `benchmarks/board.py --write-cuda` from `benchmarks/results/board-cuda.jsonl`, `benchmarks/results/board-per-sample.jsonl`.
204
+
205
+ | task | model | hold MSE | ± sd | hold acc | train MSE | params | ± sd | layers | edges | train s | µs/inf |
206
+ |---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|
207
+ | xor | C graph-type-nn | n/a | n/a | n/a | 3.11e-07 | 24.8 | 1.8 | 1→2.0 | 2.0 | 0.20 | 61.9 |
208
+ | xor | **torch graph-type-nn** | n/a | n/a | n/a | 5.00e-02 | 20.0 | 8.9 | 1→1.8 | 1.8 | 80.70 | 1391.5 |
209
+ | xor | cuda graph-type-nn | n/a | n/a | n/a | 5.00e-02 | 20.0 | 8.9 | 1→1.8 | 1.8 | 314.00 | 7123.7 |
210
+ | iris | C graph-type-nn | 0.0218 | 0.0065 | 0.969 | 8.47e-04 | 80.6 | 16.6 | 3→3.8 | 5.2 | 0.94 | 33.3 |
211
+ | iris | **torch graph-type-nn** | 0.0216 | 0.0054 | 0.964 | 2.66e-03 | 102.0 | 36.5 | 3→3.8 | 5.2 | 347.44 | 2088.9 |
212
+ | iris | cuda graph-type-nn | 0.0263 | 0.0029 | 0.956 | 3.23e-03 | 81.6 | 24.9 | 3→3.8 | 5.0 | 1067.25 | 11004.1 |
213
+ | wine | C graph-type-nn | 0.0184 | 0.0039 | 0.967 | 1.08e-04 | 165.8 | 49.1 | 4→5.4 | 8.2 | 2.48 | 74.7 |
214
+ | wine | **torch graph-type-nn** | 0.0148 | 0.0068 | 0.974 | 3.69e-04 | 145.8 | 47.8 | 4→4.8 | 6.6 | 426.05 | 2604.5 |
215
+ | wine | cuda graph-type-nn | 0.0191 | 0.0075 | 0.963 | 3.46e-04 | 122.8 | 50.8 | 4→4.8 | 6.6 | 1340.38 | 14599.9 |
216
+ | wdbc | C graph-type-nn | 0.0398 | 0.0035 | 0.954 | 7.75e-04 | 128.4 | 55.0 | 3→4.0 | 5.2 | 0.78 | 31.0 |
217
+ | wdbc | **torch graph-type-nn** | 0.0421 | 0.0044 | 0.956 | 4.02e-03 | 90.8 | 56.2 | 3→4.0 | 4.8 | 387.83 | 897.5 |
218
+ | wdbc | cuda graph-type-nn | 0.0495 | 0.0076 | 0.950 | 9.35e-04 | 147.0 | 62.6 | 3→4.0 | 5.6 | 567.67 | 2806.1 |
219
+ | diabetes | C graph-type-nn | 0.0332 | 0.0012 | n/a | 2.73e-02 | 18.8 | 6.9 | 2→2.2 | 2.4 | 0.22 | 83.5 |
220
+ | diabetes | **torch graph-type-nn** | 0.0332 | 0.0012 | n/a | 2.73e-02 | 18.8 | 6.9 | 2→2.2 | 2.4 | 393.13 | 1256.7 |
221
+ | diabetes | cuda graph-type-nn | 0.0332 | 0.0012 | n/a | 2.73e-02 | 18.8 | 6.9 | 2→2.2 | 2.4 | 1184.15 | 4112.5 |
222
+ | ionosphere | C graph-type-nn | 0.0862 | 0.0209 | 0.902 | 7.79e-03 | 221.4 | 133.0 | 4→4.8 | 7.4 | 1.56 | 56.7 |
223
+ | ionosphere | **torch graph-type-nn** | 0.0967 | 0.0244 | 0.885 | 2.42e-02 | 128.2 | 146.5 | 4→3.6 | 4.8 | 433.01 | 1059.0 |
224
+ | ionosphere | cuda graph-type-nn | 0.0978 | 0.0403 | 0.879 | 1.46e-02 | 239.0 | 163.6 | 4→4.2 | 6.0 | 699.41 | 7323.0 |
225
+
226
+ | task | comparison | Δ hold MSE | 2se | verdict | params ratio |
227
+ |---|---|---:|---:|---|---:|
228
+ | xor | **torch graph-type-nn** vs C graph-type-nn | n/a | n/a | train acc 0.95 vs 1.00 (no hold-out) | 0.81× |
229
+ | xor | cuda graph-type-nn vs C graph-type-nn | n/a | n/a | train acc 0.95 vs 1.00 (no hold-out) | 0.81× |
230
+ | xor | C graph-type-nn vs C type-nn | n/a | n/a | both fit (no hold-out) | 0.94× |
231
+ | xor | **torch graph-type-nn** vs torch ref-type-nn | n/a | n/a | train acc 0.95 vs 1.00 (no hold-out) | 0.81× |
232
+ | xor | **torch graph-type-nn** vs torch MLP | n/a | n/a | train acc 0.95 vs 1.00 (no hold-out) | 0.61× |
233
+ | iris | **torch graph-type-nn** vs C graph-type-nn | -0.0002 | 0.0075 | lower, within noise | 1.27× |
234
+ | iris | cuda graph-type-nn vs C graph-type-nn | +0.0045 | 0.0064 | higher, within noise | 1.01× |
235
+ | iris | C graph-type-nn vs C type-nn | +0.0003 | 0.0085 | higher, within noise | 0.64× |
236
+ | iris | **torch graph-type-nn** vs torch ref-type-nn | -0.0034 | 0.0074 | lower, within noise | 0.73× |
237
+ | iris | **torch graph-type-nn** vs torch MLP | -0.0093 | 0.0062 | lower, **clear** | 1.52× |
238
+ | wine | **torch graph-type-nn** vs C graph-type-nn | -0.0036 | 0.0070 | lower, within noise | 0.88× |
239
+ | wine | cuda graph-type-nn vs C graph-type-nn | +0.0007 | 0.0075 | higher, within noise | 0.74× |
240
+ | wine | C graph-type-nn vs C type-nn | -0.0093 | 0.0055 | lower, **clear** | 0.98× |
241
+ | wine | **torch graph-type-nn** vs torch ref-type-nn | +0.0018 | 0.0084 | higher, within noise | 0.69× |
242
+ | wine | **torch graph-type-nn** vs torch MLP | -0.0111 | 0.0067 | lower, **clear** | 0.53× |
243
+ | wdbc | **torch graph-type-nn** vs C graph-type-nn | +0.0023 | 0.0050 | higher, within noise | 0.71× |
244
+ | wdbc | cuda graph-type-nn vs C graph-type-nn | +0.0097 | 0.0074 | higher, **clear** | 1.14× |
245
+ | wdbc | C graph-type-nn vs C type-nn | -0.0051 | 0.0053 | lower, within noise | 0.79× |
246
+ | wdbc | **torch graph-type-nn** vs torch ref-type-nn | -0.0054 | 0.0071 | lower, within noise | 0.52× |
247
+ | wdbc | **torch graph-type-nn** vs torch MLP | -0.0051 | 0.0053 | lower, within noise | 0.18× |
248
+ | diabetes | **torch graph-type-nn** vs C graph-type-nn | -0.0000 | 0.0016 | lower, within noise | 1.00× |
249
+ | diabetes | cuda graph-type-nn vs C graph-type-nn | -0.0000 | 0.0016 | lower, within noise | 1.00× |
250
+ | diabetes | C graph-type-nn vs C type-nn | +0.0003 | 0.0014 | higher, within noise | 0.92× |
251
+ | diabetes | **torch graph-type-nn** vs torch ref-type-nn | +0.0004 | 0.0012 | higher, within noise | 1.01× |
252
+ | diabetes | **torch graph-type-nn** vs torch MLP | -0.0145 | 0.0035 | lower, **clear** | 0.10× |
253
+ | ionosphere | **torch graph-type-nn** vs C graph-type-nn | +0.0105 | 0.0288 | higher, within noise | 0.58× |
254
+ | ionosphere | cuda graph-type-nn vs C graph-type-nn | +0.0116 | 0.0406 | higher, within noise | 1.08× |
255
+ | ionosphere | C graph-type-nn vs C type-nn | -0.0023 | 0.0212 | lower, within noise | 1.44× |
256
+ | ionosphere | **torch graph-type-nn** vs torch ref-type-nn | -0.0093 | 0.0428 | lower, within noise | 0.67× |
257
+ | ionosphere | **torch graph-type-nn** vs torch MLP | -0.0389 | 0.0246 | lower, **clear** | 0.22× |
258
+ <!-- /board:graph -->
259
+
260
+ ## Larger data
261
+
262
+ Same `scale.py` tasks as [BOARD.md](BOARD.md) (digits, Friedman #1). CUDA
263
+ rows use `CudaTypeNN.epoch` (per-sample on the device). MLP-16 / MLP-64 in
264
+ this file are the batched baseline on the same `--device`.
265
+
266
+ <!-- board:scale -->
267
+ Generated by `benchmarks/board.py` from `benchmarks/results/scale-cuda.jsonl`, `benchmarks/results/scale-batch32.jsonl` (5 seeds, batch 1, cpu; 5 seeds, batch 1, cuda; 5 seeds, batch 32, cpu; 5 seeds, batch 32, cuda).
268
+
269
+ | task | model | hold MSE | ± sd | × noise floor | hold acc | train MSE | params | layers | train s |
270
+ |---|---|---:|---:|---:|---:|---:|---:|---:|---:|
271
+ | digits | **type-nn** | 0.00620 | 0.00131 | n/a | 0.963 | 0.00023 | 5509 | 7.0 | 47.1 |
272
+ | digits | type-nn-bic | 0.00696 | 0.00028 | n/a | 0.957 | 0.00014 | 3352 | 7.0 | 190.9 |
273
+ | digits | MLP, scaled | 0.00779 | 0.00053 | n/a | 0.964 | 0.00170 | 1323 | 3.0 | 14.9 |
274
+ | digits | MLP-16 | 0.01110 | 0.00074 | n/a | 0.959 | 0.00490 | 1210 | 2.0 | 4.2 |
275
+ | digits | MLP-64 | 0.01089 | 0.00022 | n/a | 0.974 | 0.00343 | 4810 | 2.0 | 3.4 |
276
+ | digits | C type-nn | 0.00708 | 0.00086 | n/a | 0.956 | 0.00006 | 3289 | 7.0 | 198.8 |
277
+ | digits | C type-nn-overfit | 0.00610 | 0.00165 | n/a | 0.964 | 0.00008 | 3712 | 6.6 | 8.7 |
278
+ | digits | cuda type-nn | 0.00711 | 0.00100 | n/a | 0.957 | 0.00019 | 3247 | 7.0 | 5501.9 |
279
+ | digits | cuda type-nn-overfit | 0.00688 | 0.00125 | n/a | 0.956 | 0.00010 | 3662 | 6.0 | 5004.0 |
280
+ | digits | C graph-type-nn | 0.00623 | 0.00086 | n/a | 0.959 | 0.00025 | 2453 | 7.0 | 192.7 |
281
+ | digits | **graph-type-nn** | 0.07058 | 0.04228 | n/a | 0.416 | 0.06746 | 542 | 4.4 | 193.9 |
282
+ | digits | cuda graph-type-nn | 0.00647 | 0.00068 | n/a | 0.957 | 0.00027 | 2392 | 7.0 | 2675.8 |
283
+ | friedman | **type-nn** | 0.00660 | 0.00037 | 6.65 | n/a | 0.00666 | 18 | 2.0 | 247.5 |
284
+ | friedman | type-nn-bic | 0.00195 | 0.00089 | 1.97 | n/a | 0.00194 | 80 | 3.0 | 286.6 |
285
+ | friedman | MLP, scaled | 0.01377 | 0.01039 | 13.88 | n/a | 0.01362 | 17 | 2.6 | 127.6 |
286
+ | friedman | MLP-16 | 0.00121 | 0.00013 | 1.22 | n/a | 0.00118 | 193 | 2.0 | 51.6 |
287
+ | friedman | MLP-64 | 0.00114 | 0.00005 | 1.15 | n/a | 0.00110 | 769 | 2.0 | 48.5 |
288
+ | friedman | C type-nn | 0.00532 | 0.00070 | 5.37 | n/a | 0.00536 | 36 | 3.0 | 5.8 |
289
+ | friedman | C type-nn-overfit | 0.00669 | 0.00003 | 6.74 | n/a | 0.00676 | 15 | 2.0 | 2.7 |
290
+ | friedman | cuda type-nn | 0.00152 | 0.00032 | 1.53 | n/a | 0.00151 | 79 | 3.0 | 27321.4 |
291
+ | friedman | cuda type-nn-overfit | 0.00670 | 0.00003 | 6.75 | n/a | 0.00677 | 15 | 2.0 | 24903.1 |
292
+ | friedman | C graph-type-nn | 0.00125 | 0.00016 | 1.26 | n/a | 0.00124 | 83 | 3.0 | 15.4 |
293
+ | friedman | **graph-type-nn** | 0.00115 | 0.00007 | 1.16 | n/a | 0.00114 | 114 | 3.0 | 177.1 |
294
+ | friedman | cuda graph-type-nn | 0.00125 | 0.00016 | 1.26 | n/a | 0.00124 | 83 | 3.0 | 14542.3 |
295
+
296
+ friedman: noise floor (best reachable hold-out MSE, `1 / span²`) = 0.00099
297
+
298
+ | task | comparison | Δ hold MSE | 2se | verdict | params ratio |
299
+ |---|---|---:|---:|---|---:|
300
+ | digits | cuda type-nn vs MLP-16 | -0.0040 | 0.0011 | lower, **clear** | 2.68× |
301
+ | digits | cuda type-nn-overfit vs MLP-16 | -0.0042 | 0.0013 | lower, **clear** | 3.03× |
302
+ | digits | cuda type-nn vs cuda type-nn-overfit | +0.0002 | 0.0014 | higher, within noise | 0.89× |
303
+ | digits | cuda type-nn vs C type-nn | +0.0000 | 0.0012 | higher, within noise | 0.99× |
304
+ | digits | cuda graph-type-nn vs C graph-type-nn | +0.0002 | 0.0010 | higher, within noise | 0.98× |
305
+ | digits | cuda graph-type-nn vs MLP-16 | -0.0046 | 0.0009 | lower, **clear** | 1.98× |
306
+ | friedman | cuda type-nn vs MLP-16 | +0.0003 | 0.0003 | higher, **clear** | 0.41× |
307
+ | friedman | cuda type-nn-overfit vs MLP-16 | +0.0055 | 0.0001 | higher, **clear** | 0.08× |
308
+ | friedman | cuda type-nn vs cuda type-nn-overfit | -0.0052 | 0.0003 | lower, **clear** | 5.27× |
309
+ | friedman | cuda type-nn vs C type-nn | -0.0038 | 0.0007 | lower, **clear** | 2.19× |
310
+ | friedman | cuda graph-type-nn vs C graph-type-nn | +0.0000 | 0.0002 | higher, within noise | 1.00× |
311
+ | friedman | cuda graph-type-nn vs MLP-16 | +0.0000 | 0.0002 | higher, within noise | 0.43× |
312
+ <!-- /board:scale -->