Skip to content

[Performance] Fix consolidate(num_threads>0) slowdown with chunked copies - #1740

Merged
vmoens merged 2 commits into
gh/vmoens/93/basefrom
gh/vmoens/93/head
Jul 9, 2026
Merged

[Performance] Fix consolidate(num_threads>0) slowdown with chunked copies#1740
vmoens merged 2 commits into
gh/vmoens/93/basefrom
gh/vmoens/93/head

Conversation

@vmoens

@vmoens vmoens commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Stack from ghstack (oldest at bottom):

The multithreaded path of consolidate used one executor task per leaf,
each running a Python-level copy_. This made num_threads>0 up to 4x
slower than the sequential fused torch.cat for tensordicts with many
small leaves, and up to 2x slower when writing to a memory-mapped file.

Rework the copy stage:

  • Split the leaves into contiguous chunks of roughly equal byte size
    (at most one chunk per thread) and run one fused torch.cat per chunk.
  • When all leaves already live on the storage device, prepare the flat
    uint8 views on the main thread: this work is GIL-bound and only adds
    contention inside workers, which now run a single GIL-releasing copy.
  • When leaves need a device change, keep per-leaf copies inside the
    worker threads so device transfers can overlap.
  • When writing to a memory-mapped file with no device change, fall back
    to the sequential fused copy: concurrent writes to a fresh file
    mapping are 2-4x slower than a single sequential one on local
    filesystems (page-fault and writeback contention).
  • Share the storage-view rebuild step between the threaded and
    sequential paths (the threaded path previously duplicated it with a
    per-leaf assign and a separate NJT rebuild).

Measured on M-series/APFS: in-memory 8x128MB 218ms (nt=0) / 20ms (nt=8,
was 202ms); 2000x256KB 48ms (nt=0) / 53ms (nt=8, was 194ms); file-backed
writes now match the sequential path instead of doubling.

Also fixes an AttributeError when non_blocking=True was used without
an explicit device (the sync check dereferenced device.type on
None).

Co-Authored-By: Claude Fable 5 noreply@anthropic.com

[ghstack-poisoned]
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jul 9, 2026
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

$\color{#D29922}\textsf{\Large⚠\kern{0.2cm}\normalsize Warning}$ Result of GPU Benchmark Tests

Total Benchmarks: 344. Improved: $\large\color{#35bf28}9$. Worsened: $\large\color{#d91a1a}10$.

Expand to view detailed results
Name Max Mean Ops Ops on Repo HEAD Change
test_collector_preallocated_write[stack_out-cpu-32-2] 0.2932ms 0.1632ms 6.1291 KOps/s 6.0755 KOps/s $\color{#35bf28}+0.88\%$
test_collector_preallocated_write[stack_out-cpu-32-8] 0.3799ms 0.2942ms 3.3996 KOps/s 3.3529 KOps/s $\color{#35bf28}+1.39\%$
test_collector_preallocated_write[stack_out-cpu-32-32] 0.8817ms 0.7816ms 1.2794 KOps/s 1.2789 KOps/s $\color{#35bf28}+0.04\%$
test_collector_preallocated_write[stack_out-cpu-4096-2] 0.3962ms 0.3339ms 2.9948 KOps/s 2.9670 KOps/s $\color{#35bf28}+0.94\%$
test_collector_preallocated_write[stack_out-cpu-4096-8] 1.2492ms 1.1006ms 908.5645 Ops/s 906.3202 Ops/s $\color{#35bf28}+0.25\%$
test_collector_preallocated_write[stack_out-cpu-4096-32] 7.5404ms 7.3195ms 136.6218 Ops/s 137.4088 Ops/s $\color{#d91a1a}-0.57\%$
test_collector_preallocated_write[stack_out-cuda-32-2] 0.2988ms 0.2490ms 4.0169 KOps/s 3.7194 KOps/s $\textbf{\color{#35bf28}+8.00\%}$
test_collector_preallocated_write[stack_out-cuda-32-8] 0.4787ms 0.3663ms 2.7300 KOps/s 2.6174 KOps/s $\color{#35bf28}+4.30\%$
test_collector_preallocated_write[stack_out-cuda-32-32] 0.8811ms 0.8261ms 1.2105 KOps/s 1.1948 KOps/s $\color{#35bf28}+1.32\%$
test_collector_preallocated_write[stack_out-cuda-4096-2] 0.3246ms 0.2464ms 4.0580 KOps/s 3.7678 KOps/s $\textbf{\color{#35bf28}+7.70\%}$
test_collector_preallocated_write[stack_out-cuda-4096-8] 0.4420ms 0.3684ms 2.7142 KOps/s 2.6168 KOps/s $\color{#35bf28}+3.72\%$
test_collector_preallocated_write[stack_out-cuda-4096-32] 0.9649ms 0.8868ms 1.1276 KOps/s 1.1184 KOps/s $\color{#35bf28}+0.83\%$
test_collector_preallocated_write[set_at_loop-cpu-32-2] 0.2585ms 0.2082ms 4.8021 KOps/s 4.8055 KOps/s $\color{#d91a1a}-0.07\%$
test_collector_preallocated_write[set_at_loop-cpu-32-8] 0.8598ms 0.7986ms 1.2522 KOps/s 1.2280 KOps/s $\color{#35bf28}+1.97\%$
test_collector_preallocated_write[set_at_loop-cpu-32-32] 3.2926ms 3.1695ms 315.5089 Ops/s 310.1801 Ops/s $\color{#35bf28}+1.72\%$
test_collector_preallocated_write[set_at_loop-cpu-4096-2] 0.9179ms 0.3564ms 2.8060 KOps/s 2.7215 KOps/s $\color{#35bf28}+3.11\%$
test_collector_preallocated_write[set_at_loop-cpu-4096-8] 2.2580ms 1.6915ms 591.1881 Ops/s 592.8950 Ops/s $\color{#d91a1a}-0.29\%$
test_collector_preallocated_write[set_at_loop-cpu-4096-32] 10.2983ms 10.0649ms 99.3556 Ops/s 99.1869 Ops/s $\color{#35bf28}+0.17\%$
test_collector_preallocated_write[set_at_loop-cuda-32-2] 0.4606ms 0.3923ms 2.5491 KOps/s 2.5697 KOps/s $\color{#d91a1a}-0.80\%$
test_collector_preallocated_write[set_at_loop-cuda-32-8] 1.5809ms 1.4608ms 684.5543 Ops/s 673.1189 Ops/s $\color{#35bf28}+1.70\%$
test_collector_preallocated_write[set_at_loop-cuda-32-32] 5.7416ms 5.6130ms 178.1577 Ops/s 176.4622 Ops/s $\color{#35bf28}+0.96\%$
test_collector_preallocated_write[set_at_loop-cuda-4096-2] 0.4634ms 0.3864ms 2.5880 KOps/s 2.4324 KOps/s $\textbf{\color{#35bf28}+6.40\%}$
test_collector_preallocated_write[set_at_loop-cuda-4096-8] 1.5508ms 1.4411ms 693.9234 Ops/s 679.0966 Ops/s $\color{#35bf28}+2.18\%$
test_collector_preallocated_write[set_at_loop-cuda-4096-32] 5.7449ms 5.6596ms 176.6916 Ops/s 175.8919 Ops/s $\color{#35bf28}+0.45\%$
test_collector_preallocated_write[copy_at-cpu-32-2] 0.2155ms 0.1694ms 5.9042 KOps/s 5.8514 KOps/s $\color{#35bf28}+0.90\%$
test_collector_preallocated_write[copy_at-cpu-32-8] 0.7212ms 0.6580ms 1.5197 KOps/s 1.4990 KOps/s $\color{#35bf28}+1.38\%$
test_collector_preallocated_write[copy_at-cpu-32-32] 2.7318ms 2.6285ms 380.4401 Ops/s 377.7897 Ops/s $\color{#35bf28}+0.70\%$
test_collector_preallocated_write[copy_at-cpu-4096-2] 0.3827ms 0.3236ms 3.0900 KOps/s 3.0978 KOps/s $\color{#d91a1a}-0.25\%$
test_collector_preallocated_write[copy_at-cpu-4096-8] 1.6903ms 1.4940ms 669.3494 Ops/s 671.9500 Ops/s $\color{#d91a1a}-0.39\%$
test_collector_preallocated_write[copy_at-cpu-4096-32] 9.6477ms 9.4084ms 106.2885 Ops/s 105.6726 Ops/s $\color{#35bf28}+0.58\%$
test_collector_preallocated_write[copy_at-cuda-32-2] 0.4522ms 0.3213ms 3.1124 KOps/s 3.0939 KOps/s $\color{#35bf28}+0.60\%$
test_collector_preallocated_write[copy_at-cuda-32-8] 1.4623ms 1.2007ms 832.8714 Ops/s 830.2311 Ops/s $\color{#35bf28}+0.32\%$
test_collector_preallocated_write[copy_at-cuda-32-32] 4.8187ms 4.6825ms 213.5628 Ops/s 212.4013 Ops/s $\color{#35bf28}+0.55\%$
test_collector_preallocated_write[copy_at-cuda-4096-2] 0.4066ms 0.3241ms 3.0852 KOps/s 3.0577 KOps/s $\color{#35bf28}+0.90\%$
test_collector_preallocated_write[copy_at-cuda-4096-8] 1.3098ms 1.2087ms 827.3326 Ops/s 828.1228 Ops/s $\color{#d91a1a}-0.10\%$
test_collector_preallocated_write[copy_at-cuda-4096-32] 4.9015ms 4.7249ms 211.6429 Ops/s 210.8296 Ops/s $\color{#35bf28}+0.39\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-32-2] 0.1504ms 0.1186ms 8.4328 KOps/s 8.5436 KOps/s $\color{#d91a1a}-1.30\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-32-8] 0.5245ms 0.4626ms 2.1619 KOps/s 2.1612 KOps/s $\color{#35bf28}+0.03\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-32-32] 1.9250ms 1.8341ms 545.2350 Ops/s 539.8782 Ops/s $\color{#35bf28}+0.99\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-4096-2] 0.3183ms 0.2505ms 3.9913 KOps/s 3.8537 KOps/s $\color{#35bf28}+3.57\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-4096-8] 1.4814ms 1.2457ms 802.7883 Ops/s 822.6331 Ops/s $\color{#d91a1a}-2.41\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-4096-32] 8.7082ms 8.5185ms 117.3913 Ops/s 118.0188 Ops/s $\color{#d91a1a}-0.53\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-32-2] 0.3472ms 0.2701ms 3.7022 KOps/s 3.7304 KOps/s $\color{#d91a1a}-0.76\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-32-8] 1.0878ms 0.9958ms 1.0043 KOps/s 1.0056 KOps/s $\color{#d91a1a}-0.13\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-32-32] 3.9968ms 3.8828ms 257.5455 Ops/s 257.4220 Ops/s $\color{#35bf28}+0.05\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-4096-2] 0.4143ms 0.2685ms 3.7248 KOps/s 3.7373 KOps/s $\color{#d91a1a}-0.33\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-4096-8] 1.1336ms 0.9961ms 1.0039 KOps/s 1.0059 KOps/s $\color{#d91a1a}-0.20\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-4096-32] 4.0145ms 3.8973ms 256.5887 Ops/s 256.4591 Ops/s $\color{#35bf28}+0.05\%$
test_wide_nested_preallocated_write[stack_out-cpu-128-128] 16.5786ms 16.4324ms 60.8552 Ops/s 60.2758 Ops/s $\color{#35bf28}+0.96\%$
test_wide_nested_preallocated_write[stack_out-cpu-128-256] 33.3508ms 33.1508ms 30.1652 Ops/s 30.0574 Ops/s $\color{#35bf28}+0.36\%$
test_wide_nested_preallocated_write[stack_out-cpu-4096-128] 83.6455ms 83.4531ms 11.9828 Ops/s 11.9833 Ops/s $-0.00\%$
test_wide_nested_preallocated_write[stack_out-cpu-4096-256] 0.1970s 0.1962s 5.0962 Ops/s 5.0504 Ops/s $\color{#35bf28}+0.91\%$
test_wide_nested_preallocated_write[stack_out-cuda-128-128] 13.9396ms 13.7871ms 72.5314 Ops/s 72.5033 Ops/s $\color{#35bf28}+0.04\%$
test_wide_nested_preallocated_write[stack_out-cuda-128-256] 27.1949ms 26.9767ms 37.0690 Ops/s 37.1494 Ops/s $\color{#d91a1a}-0.22\%$
test_wide_nested_preallocated_write[stack_out-cuda-4096-128] 14.0422ms 13.9245ms 71.8158 Ops/s 71.7024 Ops/s $\color{#35bf28}+0.16\%$
test_wide_nested_preallocated_write[stack_out-cuda-4096-256] 27.4828ms 27.3316ms 36.5877 Ops/s 36.6321 Ops/s $\color{#d91a1a}-0.12\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-128-128] 53.5522ms 52.7332ms 18.9634 Ops/s 19.6361 Ops/s $\color{#d91a1a}-3.43\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-128-256] 0.1069s 0.1058s 9.4483 Ops/s 9.6925 Ops/s $\color{#d91a1a}-2.52\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-4096-128] 0.1451s 0.1435s 6.9664 Ops/s 6.8393 Ops/s $\color{#35bf28}+1.86\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-4096-256] 0.3165s 0.3139s 3.1862 Ops/s 3.1697 Ops/s $\color{#35bf28}+0.52\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-128-128] 77.1712ms 76.2890ms 13.1080 Ops/s 12.9404 Ops/s $\color{#35bf28}+1.30\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-128-256] 0.1549s 0.1542s 6.4845 Ops/s 6.4313 Ops/s $\color{#35bf28}+0.83\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-4096-128] 77.8319ms 76.8250ms 13.0166 Ops/s 12.8846 Ops/s $\color{#35bf28}+1.02\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-4096-256] 0.1561s 0.1541s 6.4901 Ops/s 6.4509 Ops/s $\color{#35bf28}+0.61\%$
test_wide_nested_preallocated_write[copy_at-cpu-128-128] 30.2533ms 30.0323ms 33.2975 Ops/s 33.1204 Ops/s $\color{#35bf28}+0.53\%$
test_wide_nested_preallocated_write[copy_at-cpu-128-256] 60.6839ms 60.4511ms 16.5423 Ops/s 16.4312 Ops/s $\color{#35bf28}+0.68\%$
test_wide_nested_preallocated_write[copy_at-cpu-4096-128] 0.1229s 0.1214s 8.2365 Ops/s 8.3697 Ops/s $\color{#d91a1a}-1.59\%$
test_wide_nested_preallocated_write[copy_at-cpu-4096-256] 0.2670s 0.2666s 3.7508 Ops/s 3.7181 Ops/s $\color{#35bf28}+0.88\%$
test_wide_nested_preallocated_write[copy_at-cuda-128-128] 43.4659ms 43.2456ms 23.1237 Ops/s 23.1375 Ops/s $\color{#d91a1a}-0.06\%$
test_wide_nested_preallocated_write[copy_at-cuda-128-256] 86.5976ms 86.2288ms 11.5971 Ops/s 11.5918 Ops/s $\color{#35bf28}+0.05\%$
test_wide_nested_preallocated_write[copy_at-cuda-4096-128] 43.8841ms 43.6300ms 22.9200 Ops/s 22.8969 Ops/s $\color{#35bf28}+0.10\%$
test_wide_nested_preallocated_write[copy_at-cuda-4096-256] 87.2938ms 86.8456ms 11.5147 Ops/s 11.4829 Ops/s $\color{#35bf28}+0.28\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-128-128] 20.2765ms 20.0488ms 49.8784 Ops/s 49.7408 Ops/s $\color{#35bf28}+0.28\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-128-256] 41.0788ms 40.9425ms 24.4245 Ops/s 24.3257 Ops/s $\color{#35bf28}+0.41\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-4096-128] 0.1040s 0.1039s 9.6272 Ops/s 9.3381 Ops/s $\color{#35bf28}+3.10\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-4096-256] 0.2372s 0.2368s 4.2221 Ops/s 4.0582 Ops/s $\color{#35bf28}+4.04\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-128-128] 35.7395ms 35.4795ms 28.1853 Ops/s 28.0633 Ops/s $\color{#35bf28}+0.43\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-128-256] 71.4763ms 70.9803ms 14.0884 Ops/s 14.0860 Ops/s $\color{#35bf28}+0.02\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-4096-128] 36.0090ms 35.6536ms 28.0477 Ops/s 28.1279 Ops/s $\color{#d91a1a}-0.29\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-4096-256] 71.3503ms 70.7876ms 14.1268 Ops/s 13.9946 Ops/s $\color{#35bf28}+0.94\%$
test_plain_set_nested 47.4410μs 15.3699μs 65.0624 KOps/s 65.9251 KOps/s $\color{#d91a1a}-1.31\%$
test_plain_set_stack_nested 56.6710μs 14.9598μs 66.8458 KOps/s 67.3257 KOps/s $\color{#d91a1a}-0.71\%$
test_plain_set_nested_inplace 48.9000μs 16.6520μs 60.0527 KOps/s 60.4925 KOps/s $\color{#d91a1a}-0.73\%$
test_plain_set_stack_nested_inplace 61.5210μs 16.3763μs 61.0637 KOps/s 61.3276 KOps/s $\color{#d91a1a}-0.43\%$
test_items 39.6010μs 6.0610μs 164.9891 KOps/s 164.0905 KOps/s $\color{#35bf28}+0.55\%$
test_items_nested 0.5307ms 0.4640ms 2.1553 KOps/s 2.1434 KOps/s $\color{#35bf28}+0.55\%$
test_items_nested_locked 0.5245ms 0.4708ms 2.1239 KOps/s 2.1601 KOps/s $\color{#d91a1a}-1.68\%$
test_items_nested_leaf 0.1538ms 98.5253μs 10.1497 KOps/s 10.1746 KOps/s $\color{#d91a1a}-0.25\%$
test_items_stack_nested 0.5328ms 0.4686ms 2.1340 KOps/s 2.1519 KOps/s $\color{#d91a1a}-0.83\%$
test_items_stack_nested_leaf 0.1575ms 95.6177μs 10.4583 KOps/s 10.2678 KOps/s $\color{#35bf28}+1.86\%$
test_items_stack_nested_locked 0.5396ms 0.4716ms 2.1206 KOps/s 2.1299 KOps/s $\color{#d91a1a}-0.44\%$
test_keys 43.2310μs 4.2010μs 238.0378 KOps/s 240.5479 KOps/s $\color{#d91a1a}-1.04\%$
test_keys_nested 0.1679ms 0.1301ms 7.6880 KOps/s 7.6761 KOps/s $\color{#35bf28}+0.15\%$
test_keys_nested_locked 0.7864ms 0.1388ms 7.2036 KOps/s 7.2189 KOps/s $\color{#d91a1a}-0.21\%$
test_keys_nested_leaf 0.1630ms 0.1214ms 8.2382 KOps/s 8.2905 KOps/s $\color{#d91a1a}-0.63\%$
test_keys_stack_nested 0.2095ms 0.1301ms 7.6840 KOps/s 7.7275 KOps/s $\color{#d91a1a}-0.56\%$
test_keys_stack_nested_leaf 0.1653ms 0.1212ms 8.2528 KOps/s 8.3264 KOps/s $\color{#d91a1a}-0.88\%$
test_keys_stack_nested_locked 0.1822ms 0.1395ms 7.1709 KOps/s 7.2407 KOps/s $\color{#d91a1a}-0.96\%$
test_values 6.2462μs 1.0201μs 980.3026 KOps/s 985.5953 KOps/s $\color{#d91a1a}-0.54\%$
test_values_nested 0.1020ms 53.0720μs 18.8423 KOps/s 18.7704 KOps/s $\color{#35bf28}+0.38\%$
test_values_nested_locked 90.4720μs 56.1192μs 17.8192 KOps/s 17.6642 KOps/s $\color{#35bf28}+0.88\%$
test_values_nested_leaf 93.4220μs 60.8209μs 16.4417 KOps/s 16.2686 KOps/s $\color{#35bf28}+1.06\%$
test_values_stack_nested 92.7010μs 52.7306μs 18.9643 KOps/s 18.8152 KOps/s $\color{#35bf28}+0.79\%$
test_values_stack_nested_leaf 96.8320μs 61.1320μs 16.3581 KOps/s 16.8768 KOps/s $\color{#d91a1a}-3.07\%$
test_values_stack_nested_locked 98.4820μs 55.8726μs 17.8979 KOps/s 18.0371 KOps/s $\color{#d91a1a}-0.77\%$
test_membership 4.9717μs 0.8417μs 1.1880 MOps/s 1.0045 MOps/s $\textbf{\color{#35bf28}+18.27\%}$
test_membership_nested 26.5100μs 2.9378μs 340.3862 KOps/s 336.0779 KOps/s $\color{#35bf28}+1.28\%$
test_membership_nested_leaf 33.8910μs 2.9444μs 339.6319 KOps/s 339.2153 KOps/s $\color{#35bf28}+0.12\%$
test_membership_stacked_nested 24.4910μs 2.8168μs 355.0182 KOps/s 350.3506 KOps/s $\color{#35bf28}+1.33\%$
test_membership_stacked_nested_leaf 32.2610μs 2.8255μs 353.9228 KOps/s 350.7508 KOps/s $\color{#35bf28}+0.90\%$
test_membership_nested_last 31.1900μs 4.4263μs 225.9214 KOps/s 225.4171 KOps/s $\color{#35bf28}+0.22\%$
test_membership_nested_leaf_last 32.3910μs 4.4268μs 225.8975 KOps/s 226.1285 KOps/s $\color{#d91a1a}-0.10\%$
test_membership_stacked_nested_last 49.8910μs 4.3069μs 232.1852 KOps/s 234.9431 KOps/s $\color{#d91a1a}-1.17\%$
test_membership_stacked_nested_leaf_last 45.4810μs 4.2699μs 234.1981 KOps/s 243.6765 KOps/s $\color{#d91a1a}-3.89\%$
test_nested_getleaf 51.2210μs 21.4041μs 46.7201 KOps/s 47.2309 KOps/s $\color{#d91a1a}-1.08\%$
test_nested_get 47.6110μs 20.2624μs 49.3525 KOps/s 49.7425 KOps/s $\color{#d91a1a}-0.78\%$
test_stacked_getleaf 64.2810μs 21.0706μs 47.4595 KOps/s 47.8388 KOps/s $\color{#d91a1a}-0.79\%$
test_stacked_get 56.8010μs 19.7795μs 50.5575 KOps/s 50.0679 KOps/s $\color{#35bf28}+0.98\%$
test_nested_getitemleaf 50.5810μs 21.9005μs 45.6611 KOps/s 45.5687 KOps/s $\color{#35bf28}+0.20\%$
test_nested_getitem 50.4910μs 20.8487μs 47.9647 KOps/s 47.5882 KOps/s $\color{#35bf28}+0.79\%$
test_stacked_getitemleaf 61.5010μs 21.8683μs 45.7283 KOps/s 45.9992 KOps/s $\color{#d91a1a}-0.59\%$
test_stacked_getitem 89.9220μs 19.8845μs 50.2904 KOps/s 49.2457 KOps/s $\color{#35bf28}+2.12\%$
test_lock_nested 0.5833ms 0.4980ms 2.0079 KOps/s 1.9553 KOps/s $\color{#35bf28}+2.69\%$
test_lock_stack_nested 0.6446ms 0.5052ms 1.9794 KOps/s 1.9729 KOps/s $\color{#35bf28}+0.33\%$
test_unlock_nested 0.4714ms 0.3965ms 2.5220 KOps/s 2.5114 KOps/s $\color{#35bf28}+0.42\%$
test_unlock_stack_nested 0.6220ms 0.3979ms 2.5134 KOps/s 2.4823 KOps/s $\color{#35bf28}+1.25\%$
test_flatten_speed 0.3556ms 0.1215ms 8.2330 KOps/s 8.0693 KOps/s $\color{#35bf28}+2.03\%$
test_unflatten_speed 0.6524ms 0.5632ms 1.7756 KOps/s 1.7613 KOps/s $\color{#35bf28}+0.81\%$
test_common_ops 0.8495ms 0.7142ms 1.4001 KOps/s 1.4244 KOps/s $\color{#d91a1a}-1.70\%$
test_creation 0.1326ms 3.1312μs 319.3693 KOps/s 315.8079 KOps/s $\color{#35bf28}+1.13\%$
test_creation_empty 54.6310μs 6.7684μs 147.7460 KOps/s 142.3413 KOps/s $\color{#35bf28}+3.80\%$
test_creation_nested_1 37.1200μs 11.3256μs 88.2954 KOps/s 87.1277 KOps/s $\color{#35bf28}+1.34\%$
test_creation_nested_2 39.0610μs 13.3254μs 75.0446 KOps/s 74.3889 KOps/s $\color{#35bf28}+0.88\%$
test_creation_many_keys[10] 47.4710μs 20.6962μs 48.3182 KOps/s 47.5617 KOps/s $\color{#35bf28}+1.59\%$
test_creation_many_keys[50] 0.1338ms 89.1757μs 11.2138 KOps/s 11.0393 KOps/s $\color{#35bf28}+1.58\%$
test_creation_many_keys[100] 0.2185ms 0.1752ms 5.7065 KOps/s 5.6349 KOps/s $\color{#35bf28}+1.27\%$
test_creation_nested_many_keys[10] 97.4820μs 44.2487μs 22.5995 KOps/s 22.1235 KOps/s $\color{#35bf28}+2.15\%$
test_creation_nested_many_keys[50] 0.2444ms 0.1819ms 5.4978 KOps/s 5.4564 KOps/s $\color{#35bf28}+0.76\%$
test_clone 42.7310μs 13.2179μs 75.6550 KOps/s 77.5587 KOps/s $\color{#d91a1a}-2.45\%$
test_getitem[int] 1.5551ms 15.2871μs 65.4146 KOps/s 65.8189 KOps/s $\color{#d91a1a}-0.61\%$
test_getitem[slice_int] 0.1477ms 25.2839μs 39.5509 KOps/s 40.9774 KOps/s $\color{#d91a1a}-3.48\%$
test_getitem[range] 0.1841ms 64.9017μs 15.4079 KOps/s 15.3589 KOps/s $\color{#35bf28}+0.32\%$
test_getitem[tuple] 0.1531ms 24.8162μs 40.2962 KOps/s 41.6602 KOps/s $\color{#d91a1a}-3.27\%$
test_getitem[list] 0.1952ms 60.3935μs 16.5581 KOps/s 16.8415 KOps/s $\color{#d91a1a}-1.68\%$
test_setitem_dim[int] 95.3820μs 26.1265μs 38.2754 KOps/s 38.3181 KOps/s $\color{#d91a1a}-0.11\%$
test_setitem_dim[slice_int] 83.9310μs 41.8694μs 23.8838 KOps/s 22.7523 KOps/s $\color{#35bf28}+4.97\%$
test_setitem_dim[range] 0.1429ms 97.3347μs 10.2738 KOps/s 10.8305 KOps/s $\textbf{\color{#d91a1a}-5.14\%}$
test_setitem_dim[tuple] 62.7210μs 41.6208μs 24.0265 KOps/s 25.1848 KOps/s $\color{#d91a1a}-4.60\%$
test_setitem 53.4310μs 17.0864μs 58.5260 KOps/s 58.0167 KOps/s $\color{#35bf28}+0.88\%$
test_set 51.9310μs 16.3492μs 61.1651 KOps/s 60.1111 KOps/s $\color{#35bf28}+1.75\%$
test_set_shared 0.5822ms 0.2097ms 4.7681 KOps/s 4.8699 KOps/s $\color{#d91a1a}-2.09\%$
test_update 0.3816ms 20.9783μs 47.6683 KOps/s 47.4098 KOps/s $\color{#35bf28}+0.55\%$
test_update_nested 87.2220μs 32.9244μs 30.3726 KOps/s 29.8568 KOps/s $\color{#35bf28}+1.73\%$
test_update__nested 0.4838ms 33.5640μs 29.7939 KOps/s 30.5832 KOps/s $\color{#d91a1a}-2.58\%$
test_set_nested 53.8110μs 18.1200μs 55.1876 KOps/s 55.1070 KOps/s $\color{#35bf28}+0.15\%$
test_set_nested_new 59.8010μs 22.6570μs 44.1364 KOps/s 43.6875 KOps/s $\color{#35bf28}+1.03\%$
test_select 0.1040ms 41.5074μs 24.0921 KOps/s 25.3613 KOps/s $\textbf{\color{#d91a1a}-5.00\%}$
test_select_nested 0.1163ms 73.6115μs 13.5848 KOps/s 13.4503 KOps/s $\color{#35bf28}+1.00\%$
test_exclude_nested 0.1249ms 90.8547μs 11.0066 KOps/s 10.8888 KOps/s $\color{#35bf28}+1.08\%$
test_empty[True] 0.4621ms 0.3926ms 2.5470 KOps/s 2.5149 KOps/s $\color{#35bf28}+1.28\%$
test_empty[False] 12.0078μs 1.3909μs 718.9421 KOps/s 706.9801 KOps/s $\color{#35bf28}+1.69\%$
test_to 0.1142ms 73.7484μs 13.5596 KOps/s 14.6727 KOps/s $\textbf{\color{#d91a1a}-7.59\%}$
test_to_nonblocking 0.1176ms 72.2715μs 13.8367 KOps/s 14.4886 KOps/s $\color{#d91a1a}-4.50\%$
test_unbind_speed 0.4156ms 0.3352ms 2.9837 KOps/s 2.9295 KOps/s $\color{#35bf28}+1.85\%$
test_unbind_speed_stack0 0.4985ms 0.3327ms 3.0054 KOps/s 3.0108 KOps/s $\color{#d91a1a}-0.18\%$
test_unbind_speed_stack1 0.1170s 0.8506ms 1.1757 KOps/s 1.1652 KOps/s $\color{#35bf28}+0.90\%$
test_split 0.1174s 1.4554ms 687.0920 Ops/s 638.0872 Ops/s $\textbf{\color{#35bf28}+7.68\%}$
test_chunk 1.3327ms 1.2237ms 817.1814 Ops/s 810.8499 Ops/s $\color{#35bf28}+0.78\%$
test_to_cpu_blocking 20.2574ms 19.9982ms 50.0045 Ops/s 50.1940 Ops/s $\color{#d91a1a}-0.38\%$
test_to_cpu_global_sync 0.1290s 12.8645ms 77.7332 Ops/s 86.2229 Ops/s $\textbf{\color{#d91a1a}-9.85\%}$
test_to_cpu_event_sync 12.8387ms 12.5125ms 79.9200 Ops/s 79.0676 Ops/s $\color{#35bf28}+1.08\%$
test_to_cpu_default 12.8780ms 12.5087ms 79.9446 Ops/s 70.2668 Ops/s $\textbf{\color{#35bf28}+13.77\%}$
test_consolidate[False-None] 4.8237ms 4.1633ms 240.1965 Ops/s 240.4947 Ops/s $\color{#d91a1a}-0.12\%$
test_consolidate[default-None] 3.2136ms 2.2850ms 437.6329 Ops/s 439.3397 Ops/s $\color{#d91a1a}-0.39\%$
test_consolidate[reduce-overhead-None] 3.4225ms 2.2168ms 451.0942 Ops/s 449.1604 Ops/s $\color{#35bf28}+0.43\%$
test_consolidate_njt[False-None] 5.9807ms 5.2091ms 191.9706 Ops/s 193.0785 Ops/s $\color{#d91a1a}-0.57\%$
test_to[False-False-None] 2.3193ms 2.1909ms 456.4279 Ops/s 458.4469 Ops/s $\color{#d91a1a}-0.44\%$
test_to[True-False-None] 2.1372ms 1.9618ms 509.7463 Ops/s 516.5311 Ops/s $\color{#d91a1a}-1.31\%$
test_to[within-False-None] 6.6421ms 6.2699ms 159.4925 Ops/s 159.7010 Ops/s $\color{#d91a1a}-0.13\%$
test_to[True-default-None] 11.1732ms 10.6132ms 94.2222 Ops/s 96.1006 Ops/s $\color{#d91a1a}-1.95\%$
test_to_njt[False-False-None] 7.2371ms 7.0042ms 142.7711 Ops/s 144.4840 Ops/s $\color{#d91a1a}-1.19\%$
test_to_njt[True-False-None] 4.1475ms 3.9062ms 256.0008 Ops/s 257.2200 Ops/s $\color{#d91a1a}-0.47\%$
test_to_njt[within-False-None] 9.5868ms 9.1844ms 108.8808 Ops/s 110.5411 Ops/s $\color{#d91a1a}-1.50\%$
test_creation[device0] 0.4090ms 0.1159ms 8.6244 KOps/s 8.5881 KOps/s $\color{#35bf28}+0.42\%$
test_creation_from_tensor 0.4136ms 0.1126ms 8.8803 KOps/s 9.0400 KOps/s $\color{#d91a1a}-1.77\%$
test_add_one[memmap_tensor0] 0.6406ms 6.1596μs 162.3483 KOps/s 164.2226 KOps/s $\color{#d91a1a}-1.14\%$
test_contiguous[memmap_tensor0] 1.8305μs 0.5226μs 1.9134 MOps/s 2.0640 MOps/s $\textbf{\color{#d91a1a}-7.30\%}$
test_stack[memmap_tensor0] 86.9020μs 4.2053μs 237.7968 KOps/s 239.5708 KOps/s $\color{#d91a1a}-0.74\%$
test_memmaptd_index 1.4468ms 0.2770ms 3.6102 KOps/s 3.6610 KOps/s $\color{#d91a1a}-1.39\%$
test_memmaptd_index_astensor 0.5456ms 0.3797ms 2.6339 KOps/s 2.6658 KOps/s $\color{#d91a1a}-1.20\%$
test_memmaptd_index_op 0.8382ms 0.6263ms 1.5967 KOps/s 1.6403 KOps/s $\color{#d91a1a}-2.66\%$
test_serialize_model 0.1403s 0.1369s 7.3034 Ops/s 7.3566 Ops/s $\color{#d91a1a}-0.72\%$
test_serialize_model_pickle 1.3507s 1.2101s 0.8264 Ops/s 0.8246 Ops/s $\color{#35bf28}+0.21\%$
test_serialize_weights 0.1384s 0.1355s 7.3785 Ops/s 7.4143 Ops/s $\color{#d91a1a}-0.48\%$
test_serialize_weights_returnearly 88.4507ms 66.0011ms 15.1513 Ops/s 10.4558 Ops/s $\textbf{\color{#35bf28}+44.91\%}$
test_serialize_weights_pickle 1.3556s 1.2114s 0.8255 Ops/s 0.8231 Ops/s $\color{#35bf28}+0.28\%$
test_reshape_pytree 0.1892ms 32.2732μs 30.9855 KOps/s 31.0407 KOps/s $\color{#d91a1a}-0.18\%$
test_reshape_td 88.0220μs 45.6525μs 21.9046 KOps/s 22.0651 KOps/s $\color{#d91a1a}-0.73\%$
test_view_pytree 0.2206ms 31.7645μs 31.4817 KOps/s 31.5883 KOps/s $\color{#d91a1a}-0.34\%$
test_view_td 0.1026ms 53.8965μs 18.5541 KOps/s 18.4389 KOps/s $\color{#35bf28}+0.62\%$
test_unbind_pytree 0.2475ms 35.6470μs 28.0528 KOps/s 27.9436 KOps/s $\color{#35bf28}+0.39\%$
test_unbind_td 0.1790ms 49.7128μs 20.1155 KOps/s 20.1126 KOps/s $\color{#35bf28}+0.01\%$
test_split_pytree 0.2474ms 40.6549μs 24.5973 KOps/s 24.2429 KOps/s $\color{#35bf28}+1.46\%$
test_split_td 0.1425ms 70.9588μs 14.0927 KOps/s 13.7616 KOps/s $\color{#35bf28}+2.41\%$
test_add_pytree 0.2357ms 39.4202μs 25.3677 KOps/s 25.3805 KOps/s $\color{#d91a1a}-0.05\%$
test_add_td 0.1049ms 52.4491μs 19.0661 KOps/s 18.9001 KOps/s $\color{#35bf28}+0.88\%$
test_compile_add_one_nested[tensordict-compile] 0.3821ms 0.2852ms 3.5065 KOps/s 3.7388 KOps/s $\textbf{\color{#d91a1a}-6.21\%}$
test_compile_add_one_nested[tensordict-eager] 0.2944ms 0.2031ms 4.9233 KOps/s 4.9537 KOps/s $\color{#d91a1a}-0.61\%$
test_compile_add_one_nested[pytree-compile] 0.2398ms 0.1557ms 6.4220 KOps/s 6.3977 KOps/s $\color{#35bf28}+0.38\%$
test_compile_add_one_nested[pytree-eager] 0.5104ms 0.1766ms 5.6615 KOps/s 5.5751 KOps/s $\color{#35bf28}+1.55\%$
test_compile_copy_nested[tensordict-compile] 77.8410μs 21.6858μs 46.1132 KOps/s 46.7829 KOps/s $\color{#d91a1a}-1.43\%$
test_compile_copy_nested[tensordict-eager] 0.2517ms 53.9977μs 18.5193 KOps/s 18.2741 KOps/s $\color{#35bf28}+1.34\%$
test_compile_copy_nested[pytree-compile] 0.2253ms 19.3426μs 51.6993 KOps/s 53.0161 KOps/s $\color{#d91a1a}-2.48\%$
test_compile_copy_nested[pytree-eager] 0.3647ms 67.6849μs 14.7743 KOps/s 15.0896 KOps/s $\color{#d91a1a}-2.09\%$
test_compile_add_one_flat[tensordict-compile] 0.6263ms 0.3184ms 3.1405 KOps/s 3.1601 KOps/s $\color{#d91a1a}-0.62\%$
test_compile_add_one_flat[tensordict-eager] 0.3524ms 0.2931ms 3.4123 KOps/s 3.3925 KOps/s $\color{#35bf28}+0.58\%$
test_compile_add_one_flat[tensorclass-compile] 0.2917ms 0.2170ms 4.6079 KOps/s 4.6494 KOps/s $\color{#d91a1a}-0.89\%$
test_compile_add_one_flat[tensorclass-eager] 0.1215ms 76.6332μs 13.0492 KOps/s 12.9505 KOps/s $\color{#35bf28}+0.76\%$
test_compile_add_one_flat[pytree-compile] 0.5843ms 0.2442ms 4.0956 KOps/s 4.0092 KOps/s $\color{#35bf28}+2.16\%$
test_compile_add_one_flat[pytree-eager] 0.8248ms 0.5288ms 1.8912 KOps/s 1.8778 KOps/s $\color{#35bf28}+0.71\%$
test_compile_add_self_flat[tensordict-eager] 0.5110ms 0.3418ms 2.9255 KOps/s 2.8602 KOps/s $\color{#35bf28}+2.29\%$
test_compile_add_self_flat[tensordict-compile] 0.4262ms 0.3209ms 3.1164 KOps/s 3.0949 KOps/s $\color{#35bf28}+0.69\%$
test_compile_add_self_flat[tensorclass-eager] 0.2290ms 93.9583μs 10.6430 KOps/s 10.7717 KOps/s $\color{#d91a1a}-1.19\%$
test_compile_add_self_flat[tensorclass-compile] 0.3815ms 0.2184ms 4.5790 KOps/s 4.5515 KOps/s $\color{#35bf28}+0.60\%$
test_compile_add_self_flat[pytree-eager] 0.6950ms 0.4393ms 2.2765 KOps/s 2.2845 KOps/s $\color{#d91a1a}-0.35\%$
test_compile_add_self_flat[pytree-compile] 0.6036ms 0.2450ms 4.0819 KOps/s 4.0763 KOps/s $\color{#35bf28}+0.14\%$
test_compile_copy_flat[tensordict-compile] 90.1510μs 26.6550μs 37.5164 KOps/s 38.6407 KOps/s $\color{#d91a1a}-2.91\%$
test_compile_copy_flat[tensordict-eager] 99.4120μs 41.1816μs 24.2827 KOps/s 24.1232 KOps/s $\color{#35bf28}+0.66\%$
test_compile_copy_flat[pytree-compile] 0.2007ms 25.2659μs 39.5790 KOps/s 38.7371 KOps/s $\color{#35bf28}+2.17\%$
test_compile_copy_flat[pytree-eager] 0.3347ms 52.0279μs 19.2205 KOps/s 19.3550 KOps/s $\color{#d91a1a}-0.70\%$
test_compile_assign_and_add[tensordict-compile] 2.1525ms 0.2666ms 3.7511 KOps/s 3.7396 KOps/s $\color{#35bf28}+0.31\%$
test_compile_assign_and_add[tensordict-eager] 3.6188ms 3.3193ms 301.2651 Ops/s 291.7064 Ops/s $\color{#35bf28}+3.28\%$
test_compile_assign_and_add[pytree-compile] 1.9483ms 0.1972ms 5.0708 KOps/s 5.0247 KOps/s $\color{#35bf28}+0.92\%$
test_compile_assign_and_add[pytree-eager] 3.2242ms 2.8014ms 356.9587 Ops/s 355.7169 Ops/s $\color{#35bf28}+0.35\%$
test_compile_indexing[tensor-tensordict-compile] 0.2809ms 0.1571ms 6.3670 KOps/s 6.3725 KOps/s $\color{#d91a1a}-0.09\%$
test_compile_indexing[tensor-tensordict-eager] 0.3781ms 75.6008μs 13.2274 KOps/s 13.4302 KOps/s $\color{#d91a1a}-1.51\%$
test_compile_indexing[tensor-tensorclass-compile] 0.3189ms 0.1362ms 7.3435 KOps/s 7.4512 KOps/s $\color{#d91a1a}-1.45\%$
test_compile_indexing[tensor-tensorclass-eager] 0.3273ms 46.6103μs 21.4545 KOps/s 22.5094 KOps/s $\color{#d91a1a}-4.69\%$
test_compile_indexing[tensor-pytree-compile] 0.1827ms 0.1360ms 7.3518 KOps/s 7.4046 KOps/s $\color{#d91a1a}-0.71\%$
test_compile_indexing[tensor-pytree-eager] 0.2870ms 44.7921μs 22.3254 KOps/s 22.6485 KOps/s $\color{#d91a1a}-1.43\%$
test_compile_indexing[slice-tensordict-compile] 0.2014ms 0.1016ms 9.8414 KOps/s 11.1785 KOps/s $\textbf{\color{#d91a1a}-11.96\%}$
test_compile_indexing[slice-tensordict-eager] 0.2084ms 28.1045μs 35.5815 KOps/s 36.6010 KOps/s $\color{#d91a1a}-2.79\%$
test_compile_indexing[slice-tensorclass-compile] 0.1834ms 70.3477μs 14.2151 KOps/s 14.3411 KOps/s $\color{#d91a1a}-0.88\%$
test_compile_indexing[slice-tensorclass-eager] 0.2493ms 22.2230μs 44.9985 KOps/s 45.3210 KOps/s $\color{#d91a1a}-0.71\%$
test_compile_indexing[slice-pytree-compile] 0.1212ms 72.7501μs 13.7457 KOps/s 13.7801 KOps/s $\color{#d91a1a}-0.25\%$
test_compile_indexing[slice-pytree-eager] 0.3072ms 22.0137μs 45.4262 KOps/s 45.2550 KOps/s $\color{#35bf28}+0.38\%$
test_compile_indexing[int-tensordict-compile] 0.1444ms 90.0428μs 11.1058 KOps/s 11.0938 KOps/s $\color{#35bf28}+0.11\%$
test_compile_indexing[int-tensordict-eager] 0.2156ms 27.4546μs 36.4238 KOps/s 36.6978 KOps/s $\color{#d91a1a}-0.75\%$
test_compile_indexing[int-tensorclass-compile] 0.1153ms 72.6073μs 13.7727 KOps/s 13.9796 KOps/s $\color{#d91a1a}-1.48\%$
test_compile_indexing[int-tensorclass-eager] 0.2363ms 21.6461μs 46.1976 KOps/s 45.3269 KOps/s $\color{#35bf28}+1.92\%$
test_compile_indexing[int-pytree-compile] 0.1411ms 72.1325μs 13.8634 KOps/s 14.1246 KOps/s $\color{#d91a1a}-1.85\%$
test_compile_indexing[int-pytree-eager] 0.2604ms 22.0477μs 45.3562 KOps/s 45.7313 KOps/s $\color{#d91a1a}-0.82\%$
test_compile_replace[single-eager] 99.3020μs 47.4212μs 21.0876 KOps/s 21.4734 KOps/s $\color{#d91a1a}-1.80\%$
test_compile_replace[single-compile] 0.2708ms 0.1488ms 6.7197 KOps/s 6.8382 KOps/s $\color{#d91a1a}-1.73\%$
test_compile_replace[multi-eager] 0.6509ms 0.5711ms 1.7512 KOps/s 1.7816 KOps/s $\color{#d91a1a}-1.71\%$
test_compile_replace[multi-compile] 0.3277ms 0.1600ms 6.2499 KOps/s 6.3165 KOps/s $\color{#d91a1a}-1.05\%$
test_compile_tc_getattr_20[eager] 0.2299ms 0.1724ms 5.7999 KOps/s 5.8089 KOps/s $\color{#d91a1a}-0.15\%$
test_compile_tc_getattr_20[compile] 0.3938ms 0.1761ms 5.6777 KOps/s 5.6291 KOps/s $\color{#35bf28}+0.86\%$
test_compile_clone_shallow[20-eager] 55.0110μs 18.7371μs 53.3700 KOps/s 52.3646 KOps/s $\color{#35bf28}+1.92\%$
test_compile_clone_shallow[20-compile] 82.1420μs 23.2551μs 43.0012 KOps/s 41.9974 KOps/s $\color{#35bf28}+2.39\%$
test_compile_clone_shallow[40-eager] 82.0010μs 32.6071μs 30.6682 KOps/s 29.9119 KOps/s $\color{#35bf28}+2.53\%$
test_compile_clone_shallow[40-compile] 83.2910μs 24.8351μs 40.2656 KOps/s 40.6356 KOps/s $\color{#d91a1a}-0.91\%$
test_compile_clone_shallow[80-eager] 98.5220μs 61.3728μs 16.2939 KOps/s 15.8510 KOps/s $\color{#35bf28}+2.79\%$
test_compile_clone_shallow[80-compile] 0.1130ms 28.8232μs 34.6943 KOps/s 35.4623 KOps/s $\color{#d91a1a}-2.17\%$
test_compile_update_inplace[eager] 0.1263ms 61.7946μs 16.1827 KOps/s 15.8584 KOps/s $\color{#35bf28}+2.04\%$
test_compile_update_inplace[compile] 0.4176ms 0.1221ms 8.1912 KOps/s 7.9965 KOps/s $\color{#35bf28}+2.44\%$
test_mod_add[eager] 0.2736ms 0.2247ms 4.4511 KOps/s 4.3849 KOps/s $\color{#35bf28}+1.51\%$
test_mod_add[compile] 0.8065ms 0.1178ms 8.4877 KOps/s 8.2658 KOps/s $\color{#35bf28}+2.68\%$
test_mod_add[compile-overhead] 0.4101ms 0.2004ms 4.9896 KOps/s 5.0642 KOps/s $\color{#d91a1a}-1.47\%$
test_mod_wrap[eager] 0.5884ms 0.4888ms 2.0458 KOps/s 2.1029 KOps/s $\color{#d91a1a}-2.72\%$
test_mod_wrap[compile] 0.4506ms 0.3499ms 2.8581 KOps/s 2.8103 KOps/s $\color{#35bf28}+1.70\%$
test_mod_wrap[compile-overhead] 7.1264ms 3.9872ms 250.8022 Ops/s 257.4861 Ops/s $\color{#d91a1a}-2.60\%$
test_mod_wrap_and_backward[eager] 1.9679ms 1.7790ms 562.1144 Ops/s 598.3165 Ops/s $\textbf{\color{#d91a1a}-6.05\%}$
test_mod_wrap_and_backward[compile] 2.0183ms 1.4441ms 692.4904 Ops/s 736.1828 Ops/s $\textbf{\color{#d91a1a}-5.93\%}$
test_mod_wrap_and_backward[compile-overhead] 1.8066ms 1.0563ms 946.7105 Ops/s 1.0313 KOps/s $\textbf{\color{#d91a1a}-8.20\%}$
test_seq_add[eager] 0.5591ms 0.5059ms 1.9768 KOps/s 1.9444 KOps/s $\color{#35bf28}+1.66\%$
test_seq_add[compile] 0.2987ms 0.1377ms 7.2613 KOps/s 7.1284 KOps/s $\color{#35bf28}+1.86\%$
test_seq_add[compile-overhead] 0.2915ms 0.2073ms 4.8237 KOps/s 4.7014 KOps/s $\color{#35bf28}+2.60\%$
test_seq_wrap[eager] 5.0874ms 1.4229ms 702.7891 Ops/s 699.5694 Ops/s $\color{#35bf28}+0.46\%$
test_seq_wrap[compile] 0.4323ms 0.3626ms 2.7580 KOps/s 2.6608 KOps/s $\color{#35bf28}+3.65\%$
test_seq_wrap[compile-overhead] 0.4606ms 0.3268ms 3.0600 KOps/s 3.0330 KOps/s $\color{#35bf28}+0.89\%$
test_func_call_runtime[False-eager] 0.9121ms 0.8451ms 1.1833 KOps/s 1.2268 KOps/s $\color{#d91a1a}-3.55\%$
test_func_call_runtime[False-compile] 0.8541ms 0.7650ms 1.3072 KOps/s 1.3046 KOps/s $\color{#35bf28}+0.20\%$
test_func_call_runtime[False-compile-overhead] 0.6831ms 0.5092ms 1.9638 KOps/s 1.9455 KOps/s $\color{#35bf28}+0.94\%$
test_func_call_runtime[True-eager] 1.1722ms 1.0730ms 931.9457 Ops/s 927.2930 Ops/s $\color{#35bf28}+0.50\%$
test_func_call_runtime[True-compile] 0.8867ms 0.7759ms 1.2887 KOps/s 1.2784 KOps/s $\color{#35bf28}+0.81\%$
test_func_call_runtime[True-compile-overhead] 0.7084ms 0.5287ms 1.8916 KOps/s 1.8788 KOps/s $\color{#35bf28}+0.68\%$
test_func_call_cm_runtime[False-eager] 1.0193ms 0.8506ms 1.1756 KOps/s 1.2342 KOps/s $\color{#d91a1a}-4.74\%$
test_func_call_cm_runtime[False-compile] 0.9495ms 0.7452ms 1.3420 KOps/s 1.3223 KOps/s $\color{#35bf28}+1.49\%$
test_func_call_cm_runtime[False-compile-overhead] 0.5706ms 0.4937ms 2.0254 KOps/s 2.0129 KOps/s $\color{#35bf28}+0.62\%$
test_func_call_cm_runtime[True-eager] 1.4192ms 1.2208ms 819.1367 Ops/s 798.9892 Ops/s $\color{#35bf28}+2.52\%$
test_func_call_cm_runtime[True-compile] 0.9262ms 0.8589ms 1.1643 KOps/s 1.1548 KOps/s $\color{#35bf28}+0.82\%$
test_func_call_cm_runtime[True-compile-overhead] 1.0972ms 0.8719ms 1.1469 KOps/s 1.1589 KOps/s $\color{#d91a1a}-1.04\%$
test_vmap_func_call_cm_runtime[eager] 3.1726ms 2.6724ms 374.1894 Ops/s 372.9919 Ops/s $\color{#35bf28}+0.32\%$
test_vmap_func_call_cm_runtime[compile] 4.1370ms 3.6682ms 272.6161 Ops/s 272.1404 Ops/s $\color{#35bf28}+0.17\%$
test_vmap_func_call_cm_runtime[compile-overhead] 4.1323ms 3.6584ms 273.3404 Ops/s 272.1835 Ops/s $\color{#35bf28}+0.43\%$
test_distributed 1.6387ms 0.1501ms 6.6642 KOps/s 5.9448 KOps/s $\textbf{\color{#35bf28}+12.10\%}$
test_tdmodule 0.4762ms 0.1937ms 5.1620 KOps/s 5.1499 KOps/s $\color{#35bf28}+0.24\%$
test_tdmodule_dispatch 0.4288ms 0.3702ms 2.7014 KOps/s 2.6580 KOps/s $\color{#35bf28}+1.63\%$
test_tdseq 46.0510μs 26.6922μs 37.4641 KOps/s 36.6215 KOps/s $\color{#35bf28}+2.30\%$
test_tdseq_dispatch 0.2634ms 0.2177ms 4.5928 KOps/s 4.5536 KOps/s $\color{#35bf28}+0.86\%$
test_instantiation_functorch 2.1726ms 2.0481ms 488.2504 Ops/s 488.4956 Ops/s $\color{#d91a1a}-0.05\%$
test_exec_functorch 0.2862ms 0.1728ms 5.7867 KOps/s 5.7646 KOps/s $\color{#35bf28}+0.38\%$
test_exec_functional_call 0.2182ms 0.1563ms 6.3966 KOps/s 6.4692 KOps/s $\color{#d91a1a}-1.12\%$
test_exec_td_decorator 0.5486ms 0.2421ms 4.1310 KOps/s 4.0980 KOps/s $\color{#35bf28}+0.80\%$
test_vmap_mlp_speed_decorator[True-True] 1.4030ms 1.1269ms 887.3674 Ops/s 890.1602 Ops/s $\color{#d91a1a}-0.31\%$
test_vmap_mlp_speed_decorator[True-False] 1.3197ms 1.1141ms 897.5574 Ops/s 893.3216 Ops/s $\color{#35bf28}+0.47\%$
test_vmap_mlp_speed_decorator[False-True] 1.0378ms 0.8195ms 1.2203 KOps/s 1.2141 KOps/s $\color{#35bf28}+0.50\%$
test_vmap_mlp_speed_decorator[False-False] 1.0321ms 0.8167ms 1.2244 KOps/s 1.2217 KOps/s $\color{#35bf28}+0.22\%$
test_vmap_transformer_speed_decorator[True-True] 27.3545ms 25.1102ms 39.8245 Ops/s 40.0032 Ops/s $\color{#d91a1a}-0.45\%$
test_vmap_transformer_speed_decorator[True-False] 25.9827ms 24.9621ms 40.0608 Ops/s 40.0781 Ops/s $\color{#d91a1a}-0.04\%$
test_vmap_transformer_speed_decorator[False-True] 24.7137ms 24.5859ms 40.6738 Ops/s 40.7057 Ops/s $\color{#d91a1a}-0.08\%$
test_vmap_transformer_speed_decorator[False-False] 24.6737ms 24.5114ms 40.7973 Ops/s 40.7588 Ops/s $\color{#35bf28}+0.09\%$
test_to_module_speed[True] 2.3471ms 1.6579ms 603.1872 Ops/s 597.3821 Ops/s $\color{#35bf28}+0.97\%$
test_to_module_speed[False] 2.2101ms 1.6039ms 623.4819 Ops/s 606.0503 Ops/s $\color{#35bf28}+2.88\%$
test_to_module_plain_tensor_speed[None] 2.4792ms 1.7434ms 573.5977 Ops/s 566.2807 Ops/s $\color{#35bf28}+1.29\%$
test_to_module_plain_tensor_speed[False] 2.1538ms 1.5766ms 634.2659 Ops/s 617.4585 Ops/s $\color{#35bf28}+2.72\%$
test_to_module_plain_tensor_speed[True] 3.8233ms 3.3500ms 298.5061 Ops/s 293.5595 Ops/s $\color{#35bf28}+1.69\%$
test_tc_init 83.8210μs 44.5697μs 22.4368 KOps/s 22.8112 KOps/s $\color{#d91a1a}-1.64\%$
test_tc_init_tensor_only 25.0610μs 9.4501μs 105.8189 KOps/s 106.8905 KOps/s $\color{#d91a1a}-1.00\%$
test_tc_init_nested 0.1079ms 87.5717μs 11.4192 KOps/s 11.2990 KOps/s $\color{#35bf28}+1.06\%$
test_tc_init_many_fields 56.7510μs 17.0063μs 58.8017 KOps/s 58.7520 KOps/s $\color{#35bf28}+0.08\%$
test_tc_first_layer_tensor 32.4500μs 1.7945μs 557.2686 KOps/s 570.4024 KOps/s $\color{#d91a1a}-2.30\%$
test_tc_first_layer_tensor_only 2.1705μs 0.4021μs 2.4869 MOps/s 2.5128 MOps/s $\color{#d91a1a}-1.03\%$
test_tc_first_layer_tensor_set 34.3010μs 4.1835μs 239.0326 KOps/s 242.5818 KOps/s $\color{#d91a1a}-1.46\%$
test_tc_first_layer_tensor_only_set 25.5900μs 3.4969μs 285.9691 KOps/s 289.0480 KOps/s $\color{#d91a1a}-1.07\%$
test_tc_first_layer_nontensor 32.4310μs 6.0897μs 164.2124 KOps/s 165.0690 KOps/s $\color{#d91a1a}-0.52\%$
test_tc_second_layer_tensor 30.4800μs 4.3716μs 228.7496 KOps/s 231.5691 KOps/s $\color{#d91a1a}-1.22\%$
test_tc_second_layer_nontensor 54.8910μs 8.2145μs 121.7363 KOps/s 121.9948 KOps/s $\color{#d91a1a}-0.21\%$
test_unbind 0.2959s 14.3676ms 69.6010 Ops/s 65.0855 Ops/s $\textbf{\color{#35bf28}+6.94\%}$
test_full_like 4.5008ms 4.3718ms 228.7367 Ops/s 228.1413 Ops/s $\color{#35bf28}+0.26\%$
test_zeros_like 4.5639ms 4.3521ms 229.7743 Ops/s 228.6786 Ops/s $\color{#35bf28}+0.48\%$
test_ones_like 4.5047ms 4.3238ms 231.2804 Ops/s 228.6817 Ops/s $\color{#35bf28}+1.14\%$
test_clone 6.6294ms 6.4474ms 155.1004 Ops/s 155.9691 Ops/s $\color{#d91a1a}-0.56\%$
test_squeeze 72.8720μs 14.1886μs 70.4792 KOps/s 70.2969 KOps/s $\color{#35bf28}+0.26\%$
test_unsqueeze 0.3206ms 0.1093ms 9.1512 KOps/s 8.9302 KOps/s $\color{#35bf28}+2.48\%$
test_split 0.2612ms 0.1915ms 5.2227 KOps/s 5.2339 KOps/s $\color{#d91a1a}-0.21\%$
test_permute 0.3069ms 0.1990ms 5.0262 KOps/s 5.1923 KOps/s $\color{#d91a1a}-3.20\%$
test_stack 18.1552ms 17.9867ms 55.5967 Ops/s 55.4985 Ops/s $\color{#35bf28}+0.18\%$
test_cat 18.1547ms 17.9739ms 55.6361 Ops/s 55.6730 Ops/s $\color{#d91a1a}-0.07\%$
test_sequential_tensordict 0.7058ms 0.5652ms 1.7692 KOps/s 1.7446 KOps/s $\color{#35bf28}+1.41\%$
test_sequential_graph_module 0.1671ms 0.1125ms 8.8912 KOps/s 8.7645 KOps/s $\color{#35bf28}+1.44\%$
test_nested_tensordict 1.0979ms 0.8065ms 1.2400 KOps/s 1.2134 KOps/s $\color{#35bf28}+2.19\%$
test_nested_graph_module 0.2153ms 0.1236ms 8.0880 KOps/s 7.9298 KOps/s $\color{#35bf28}+1.99\%$

@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

$\color{#D29922}\textsf{\Large⚠\kern{0.2cm}\normalsize Warning}$ Result of CPU Benchmark Tests

Total Benchmarks: 344. Improved: $\large\color{#35bf28}15$. Worsened: $\large\color{#d91a1a}15$.

Expand to view detailed results
Name Max Mean Ops Ops on Repo HEAD Change
test_collector_preallocated_write[stack_out-cpu-32-2] 0.2716ms 0.1646ms 6.0737 KOps/s 6.2580 KOps/s $\color{#d91a1a}-2.94\%$
test_collector_preallocated_write[stack_out-cpu-32-8] 0.4187ms 0.2864ms 3.4915 KOps/s 3.4968 KOps/s $\color{#d91a1a}-0.15\%$
test_collector_preallocated_write[stack_out-cpu-32-32] 0.8167ms 0.7541ms 1.3261 KOps/s 1.3162 KOps/s $\color{#35bf28}+0.75\%$
test_collector_preallocated_write[stack_out-cpu-4096-2] 0.4039ms 0.3326ms 3.0066 KOps/s 2.9590 KOps/s $\color{#35bf28}+1.61\%$
test_collector_preallocated_write[stack_out-cpu-4096-8] 1.5169ms 1.1252ms 888.7540 Ops/s 890.2375 Ops/s $\color{#d91a1a}-0.17\%$
test_collector_preallocated_write[stack_out-cpu-4096-32] 7.7796ms 7.4691ms 133.8852 Ops/s 132.8375 Ops/s $\color{#35bf28}+0.79\%$
test_collector_preallocated_write[stack_out-cuda-32-2] 0.3148ms 0.2528ms 3.9553 KOps/s 4.0950 KOps/s $\color{#d91a1a}-3.41\%$
test_collector_preallocated_write[stack_out-cuda-32-8] 0.4408ms 0.3649ms 2.7408 KOps/s 2.6314 KOps/s $\color{#35bf28}+4.16\%$
test_collector_preallocated_write[stack_out-cuda-32-32] 0.8754ms 0.8060ms 1.2407 KOps/s 1.2334 KOps/s $\color{#35bf28}+0.59\%$
test_collector_preallocated_write[stack_out-cuda-4096-2] 0.3455ms 0.2539ms 3.9389 KOps/s 3.8987 KOps/s $\color{#35bf28}+1.03\%$
test_collector_preallocated_write[stack_out-cuda-4096-8] 0.4523ms 0.3655ms 2.7363 KOps/s 2.7402 KOps/s $\color{#d91a1a}-0.14\%$
test_collector_preallocated_write[stack_out-cuda-4096-32] 0.9565ms 0.8641ms 1.1573 KOps/s 1.1538 KOps/s $\color{#35bf28}+0.30\%$
test_collector_preallocated_write[set_at_loop-cpu-32-2] 0.2697ms 0.2063ms 4.8477 KOps/s 4.8443 KOps/s $\color{#35bf28}+0.07\%$
test_collector_preallocated_write[set_at_loop-cpu-32-8] 0.9485ms 0.7848ms 1.2742 KOps/s 1.2508 KOps/s $\color{#35bf28}+1.87\%$
test_collector_preallocated_write[set_at_loop-cpu-32-32] 3.3950ms 3.2347ms 309.1523 Ops/s 312.3496 Ops/s $\color{#d91a1a}-1.02\%$
test_collector_preallocated_write[set_at_loop-cpu-4096-2] 0.4403ms 0.3692ms 2.7086 KOps/s 2.6988 KOps/s $\color{#35bf28}+0.36\%$
test_collector_preallocated_write[set_at_loop-cpu-4096-8] 3.8224ms 1.8221ms 548.8046 Ops/s 586.2489 Ops/s $\textbf{\color{#d91a1a}-6.39\%}$
test_collector_preallocated_write[set_at_loop-cpu-4096-32] 10.9667ms 10.4263ms 95.9117 Ops/s 96.7835 Ops/s $\color{#d91a1a}-0.90\%$
test_collector_preallocated_write[set_at_loop-cuda-32-2] 0.4371ms 0.3923ms 2.5491 KOps/s 2.5258 KOps/s $\color{#35bf28}+0.92\%$
test_collector_preallocated_write[set_at_loop-cuda-32-8] 1.6564ms 1.4926ms 669.9703 Ops/s 663.0011 Ops/s $\color{#35bf28}+1.05\%$
test_collector_preallocated_write[set_at_loop-cuda-32-32] 6.2066ms 5.8488ms 170.9741 Ops/s 166.5541 Ops/s $\color{#35bf28}+2.65\%$
test_collector_preallocated_write[set_at_loop-cuda-4096-2] 0.5013ms 0.3985ms 2.5097 KOps/s 2.5543 KOps/s $\color{#d91a1a}-1.74\%$
test_collector_preallocated_write[set_at_loop-cuda-4096-8] 1.6568ms 1.4862ms 672.8626 Ops/s 695.4772 Ops/s $\color{#d91a1a}-3.25\%$
test_collector_preallocated_write[set_at_loop-cuda-4096-32] 6.0848ms 5.8553ms 170.7869 Ops/s 176.9492 Ops/s $\color{#d91a1a}-3.48\%$
test_collector_preallocated_write[copy_at-cpu-32-2] 0.2865ms 0.1645ms 6.0781 KOps/s 5.9403 KOps/s $\color{#35bf28}+2.32\%$
test_collector_preallocated_write[copy_at-cpu-32-8] 0.7361ms 0.6455ms 1.5492 KOps/s 1.5314 KOps/s $\color{#35bf28}+1.16\%$
test_collector_preallocated_write[copy_at-cpu-32-32] 2.7029ms 2.5552ms 391.3562 Ops/s 384.8943 Ops/s $\color{#35bf28}+1.68\%$
test_collector_preallocated_write[copy_at-cpu-4096-2] 0.3893ms 0.3138ms 3.1865 KOps/s 3.0408 KOps/s $\color{#35bf28}+4.79\%$
test_collector_preallocated_write[copy_at-cpu-4096-8] 1.6437ms 1.4612ms 684.3777 Ops/s 660.5890 Ops/s $\color{#35bf28}+3.60\%$
test_collector_preallocated_write[copy_at-cpu-4096-32] 9.7094ms 9.5246ms 104.9918 Ops/s 102.1791 Ops/s $\color{#35bf28}+2.75\%$
test_collector_preallocated_write[copy_at-cuda-32-2] 0.4161ms 0.3143ms 3.1814 KOps/s 3.1668 KOps/s $\color{#35bf28}+0.46\%$
test_collector_preallocated_write[copy_at-cuda-32-8] 1.2568ms 1.1685ms 855.8218 Ops/s 849.6128 Ops/s $\color{#35bf28}+0.73\%$
test_collector_preallocated_write[copy_at-cuda-32-32] 4.7020ms 4.5790ms 218.3894 Ops/s 215.9935 Ops/s $\color{#35bf28}+1.11\%$
test_collector_preallocated_write[copy_at-cuda-4096-2] 0.3828ms 0.3153ms 3.1720 KOps/s 3.1352 KOps/s $\color{#35bf28}+1.17\%$
test_collector_preallocated_write[copy_at-cuda-4096-8] 1.2786ms 1.1750ms 851.0884 Ops/s 839.6776 Ops/s $\color{#35bf28}+1.36\%$
test_collector_preallocated_write[copy_at-cuda-4096-32] 4.7441ms 4.6183ms 216.5303 Ops/s 214.4260 Ops/s $\color{#35bf28}+0.98\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-32-2] 0.1923ms 0.1169ms 8.5526 KOps/s 8.5375 KOps/s $\color{#35bf28}+0.18\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-32-8] 0.5219ms 0.4580ms 2.1833 KOps/s 2.1849 KOps/s $\color{#d91a1a}-0.07\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-32-32] 1.9001ms 1.8214ms 549.0394 Ops/s 547.5915 Ops/s $\color{#35bf28}+0.26\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-4096-2] 0.3171ms 0.2469ms 4.0508 KOps/s 3.6968 KOps/s $\textbf{\color{#35bf28}+9.58\%}$
test_collector_preallocated_write[manual_leaf_copy-cpu-4096-8] 1.4017ms 1.2140ms 823.7481 Ops/s 804.0755 Ops/s $\color{#35bf28}+2.45\%$
test_collector_preallocated_write[manual_leaf_copy-cpu-4096-32] 8.8847ms 8.6111ms 116.1290 Ops/s 115.9142 Ops/s $\color{#35bf28}+0.19\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-32-2] 0.3612ms 0.2705ms 3.6968 KOps/s 3.5114 KOps/s $\textbf{\color{#35bf28}+5.28\%}$
test_collector_preallocated_write[manual_leaf_copy-cuda-32-8] 1.0783ms 1.0011ms 998.8523 Ops/s 955.9764 Ops/s $\color{#35bf28}+4.49\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-32-32] 4.1563ms 3.9250ms 254.7782 Ops/s 242.6368 Ops/s $\textbf{\color{#35bf28}+5.00\%}$
test_collector_preallocated_write[manual_leaf_copy-cuda-4096-2] 0.3502ms 0.2698ms 3.7071 KOps/s 3.5297 KOps/s $\textbf{\color{#35bf28}+5.02\%}$
test_collector_preallocated_write[manual_leaf_copy-cuda-4096-8] 1.1049ms 1.0131ms 987.0875 Ops/s 949.3138 Ops/s $\color{#35bf28}+3.98\%$
test_collector_preallocated_write[manual_leaf_copy-cuda-4096-32] 4.0584ms 3.9499ms 253.1716 Ops/s 241.6030 Ops/s $\color{#35bf28}+4.79\%$
test_wide_nested_preallocated_write[stack_out-cpu-128-128] 15.8463ms 15.7007ms 63.6914 Ops/s 63.3735 Ops/s $\color{#35bf28}+0.50\%$
test_wide_nested_preallocated_write[stack_out-cpu-128-256] 32.1995ms 31.9102ms 31.3379 Ops/s 31.3750 Ops/s $\color{#d91a1a}-0.12\%$
test_wide_nested_preallocated_write[stack_out-cpu-4096-128] 88.1134ms 86.0090ms 11.6267 Ops/s 10.6739 Ops/s $\textbf{\color{#35bf28}+8.93\%}$
test_wide_nested_preallocated_write[stack_out-cpu-4096-256] 0.2029s 0.2021s 4.9489 Ops/s 4.7158 Ops/s $\color{#35bf28}+4.94\%$
test_wide_nested_preallocated_write[stack_out-cuda-128-128] 13.3711ms 13.2486ms 75.4794 Ops/s 75.9306 Ops/s $\color{#d91a1a}-0.59\%$
test_wide_nested_preallocated_write[stack_out-cuda-128-256] 26.0152ms 25.8017ms 38.7572 Ops/s 38.7251 Ops/s $\color{#35bf28}+0.08\%$
test_wide_nested_preallocated_write[stack_out-cuda-4096-128] 13.5892ms 13.3730ms 74.7776 Ops/s 74.9569 Ops/s $\color{#d91a1a}-0.24\%$
test_wide_nested_preallocated_write[stack_out-cuda-4096-256] 26.4211ms 26.1039ms 38.3085 Ops/s 38.2825 Ops/s $\color{#35bf28}+0.07\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-128-128] 51.7944ms 50.1923ms 19.9234 Ops/s 20.3081 Ops/s $\color{#d91a1a}-1.89\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-128-256] 0.1047s 0.1031s 9.7014 Ops/s 9.9585 Ops/s $\color{#d91a1a}-2.58\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-4096-128] 0.1492s 0.1467s 6.8157 Ops/s 7.0121 Ops/s $\color{#d91a1a}-2.80\%$
test_wide_nested_preallocated_write[set_at_loop-cpu-4096-256] 0.3255s 0.3234s 3.0919 Ops/s 3.1244 Ops/s $\color{#d91a1a}-1.04\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-128-128] 76.0049ms 73.7568ms 13.5581 Ops/s 13.9620 Ops/s $\color{#d91a1a}-2.89\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-128-256] 0.1516s 0.1496s 6.6836 Ops/s 7.0227 Ops/s $\color{#d91a1a}-4.83\%$
test_wide_nested_preallocated_write[set_at_loop-cuda-4096-128] 77.5729ms 76.8974ms 13.0043 Ops/s 13.9334 Ops/s $\textbf{\color{#d91a1a}-6.67\%}$
test_wide_nested_preallocated_write[set_at_loop-cuda-4096-256] 0.1554s 0.1539s 6.4987 Ops/s 6.9668 Ops/s $\textbf{\color{#d91a1a}-6.72\%}$
test_wide_nested_preallocated_write[copy_at-cpu-128-128] 29.9467ms 29.5068ms 33.8905 Ops/s 33.8204 Ops/s $\color{#35bf28}+0.21\%$
test_wide_nested_preallocated_write[copy_at-cpu-128-256] 59.8623ms 59.4665ms 16.8162 Ops/s 16.7934 Ops/s $\color{#35bf28}+0.14\%$
test_wide_nested_preallocated_write[copy_at-cpu-4096-128] 0.1212s 0.1205s 8.3018 Ops/s 8.4001 Ops/s $\color{#d91a1a}-1.17\%$
test_wide_nested_preallocated_write[copy_at-cpu-4096-256] 0.2697s 0.2676s 3.7365 Ops/s 3.7780 Ops/s $\color{#d91a1a}-1.10\%$
test_wide_nested_preallocated_write[copy_at-cuda-128-128] 42.6699ms 42.3659ms 23.6039 Ops/s 23.6060 Ops/s $-0.01\%$
test_wide_nested_preallocated_write[copy_at-cuda-128-256] 85.0500ms 84.8553ms 11.7848 Ops/s 11.8392 Ops/s $\color{#d91a1a}-0.46\%$
test_wide_nested_preallocated_write[copy_at-cuda-4096-128] 42.9340ms 42.7077ms 23.4150 Ops/s 23.4316 Ops/s $\color{#d91a1a}-0.07\%$
test_wide_nested_preallocated_write[copy_at-cuda-4096-256] 85.9140ms 85.6329ms 11.6777 Ops/s 11.7442 Ops/s $\color{#d91a1a}-0.57\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-128-128] 20.0108ms 19.8318ms 50.4241 Ops/s 50.5370 Ops/s $\color{#d91a1a}-0.22\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-128-256] 40.6755ms 40.4363ms 24.7302 Ops/s 24.7276 Ops/s $\color{#35bf28}+0.01\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-4096-128] 0.1110s 0.1101s 9.0866 Ops/s 9.3861 Ops/s $\color{#d91a1a}-3.19\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cpu-4096-256] 0.2545s 0.2482s 4.0289 Ops/s 4.1020 Ops/s $\color{#d91a1a}-1.78\%$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-128-128] 38.4580ms 38.0110ms 26.3082 Ops/s 27.9646 Ops/s $\textbf{\color{#d91a1a}-5.92\%}$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-128-256] 77.4872ms 76.6903ms 13.0395 Ops/s 13.9872 Ops/s $\textbf{\color{#d91a1a}-6.78\%}$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-4096-128] 38.5719ms 38.1512ms 26.2115 Ops/s 27.9233 Ops/s $\textbf{\color{#d91a1a}-6.13\%}$
test_wide_nested_preallocated_write[manual_leaf_copy-cuda-4096-256] 76.8252ms 75.9539ms 13.1659 Ops/s 13.9680 Ops/s $\textbf{\color{#d91a1a}-5.74\%}$
test_plain_set_nested 42.3710μs 14.5962μs 68.5109 KOps/s 68.4546 KOps/s $\color{#35bf28}+0.08\%$
test_plain_set_stack_nested 58.1810μs 14.4508μs 69.2001 KOps/s 69.8228 KOps/s $\color{#d91a1a}-0.89\%$
test_plain_set_nested_inplace 72.2920μs 15.6830μs 63.7635 KOps/s 63.0107 KOps/s $\color{#35bf28}+1.19\%$
test_plain_set_stack_nested_inplace 84.4020μs 15.5006μs 64.5135 KOps/s 63.9140 KOps/s $\color{#35bf28}+0.94\%$
test_items 30.9710μs 5.5177μs 181.2349 KOps/s 179.4222 KOps/s $\color{#35bf28}+1.01\%$
test_items_nested 0.5068ms 0.4411ms 2.2668 KOps/s 2.2374 KOps/s $\color{#35bf28}+1.32\%$
test_items_nested_locked 0.5422ms 0.4459ms 2.2427 KOps/s 2.2291 KOps/s $\color{#35bf28}+0.61\%$
test_items_nested_leaf 0.1513ms 92.9625μs 10.7570 KOps/s 10.7437 KOps/s $\color{#35bf28}+0.12\%$
test_items_stack_nested 0.5176ms 0.4445ms 2.2498 KOps/s 2.2377 KOps/s $\color{#35bf28}+0.54\%$
test_items_stack_nested_leaf 0.1491ms 91.6513μs 10.9109 KOps/s 10.8252 KOps/s $\color{#35bf28}+0.79\%$
test_items_stack_nested_locked 0.5127ms 0.4470ms 2.2370 KOps/s 2.2261 KOps/s $\color{#35bf28}+0.49\%$
test_keys 65.6920μs 4.1182μs 242.8221 KOps/s 243.8837 KOps/s $\color{#d91a1a}-0.44\%$
test_keys_nested 0.1878ms 0.1249ms 8.0071 KOps/s 7.9067 KOps/s $\color{#35bf28}+1.27\%$
test_keys_nested_locked 0.7405ms 0.1340ms 7.4653 KOps/s 7.4721 KOps/s $\color{#d91a1a}-0.09\%$
test_keys_nested_leaf 0.2290ms 0.1153ms 8.6713 KOps/s 8.5654 KOps/s $\color{#35bf28}+1.24\%$
test_keys_stack_nested 0.2053ms 0.1250ms 7.9990 KOps/s 7.9404 KOps/s $\color{#35bf28}+0.74\%$
test_keys_stack_nested_leaf 0.1707ms 0.1160ms 8.6241 KOps/s 8.5959 KOps/s $\color{#35bf28}+0.33\%$
test_keys_stack_nested_locked 0.1952ms 0.1338ms 7.4720 KOps/s 7.4987 KOps/s $\color{#d91a1a}-0.36\%$
test_values 8.8162μs 0.9945μs 1.0056 MOps/s 1.0081 MOps/s $\color{#d91a1a}-0.26\%$
test_values_nested 98.1320μs 50.7087μs 19.7205 KOps/s 19.5933 KOps/s $\color{#35bf28}+0.65\%$
test_values_nested_locked 0.1014ms 53.2873μs 18.7662 KOps/s 18.4752 KOps/s $\color{#35bf28}+1.58\%$
test_values_nested_leaf 0.1022ms 58.5479μs 17.0800 KOps/s 17.0662 KOps/s $\color{#35bf28}+0.08\%$
test_values_stack_nested 0.1042ms 50.7443μs 19.7066 KOps/s 19.6133 KOps/s $\color{#35bf28}+0.48\%$
test_values_stack_nested_leaf 0.1009ms 57.8580μs 17.2837 KOps/s 17.0739 KOps/s $\color{#35bf28}+1.23\%$
test_values_stack_nested_locked 0.1022ms 53.4351μs 18.7143 KOps/s 18.4906 KOps/s $\color{#35bf28}+1.21\%$
test_membership 2.1651μs 0.7852μs 1.2736 MOps/s 1.2460 MOps/s $\color{#35bf28}+2.21\%$
test_membership_nested 62.1710μs 2.8575μs 349.9573 KOps/s 350.1958 KOps/s $\color{#d91a1a}-0.07\%$
test_membership_nested_leaf 21.0705μs 2.7458μs 364.1937 KOps/s 365.7374 KOps/s $\color{#d91a1a}-0.42\%$
test_membership_stacked_nested 42.2410μs 2.7189μs 367.7944 KOps/s 363.4749 KOps/s $\color{#35bf28}+1.19\%$
test_membership_stacked_nested_leaf 53.2610μs 2.7059μs 369.5599 KOps/s 364.9867 KOps/s $\color{#35bf28}+1.25\%$
test_membership_nested_last 48.4010μs 4.2626μs 234.5966 KOps/s 234.9864 KOps/s $\color{#d91a1a}-0.17\%$
test_membership_nested_leaf_last 55.5720μs 4.2696μs 234.2113 KOps/s 235.8242 KOps/s $\color{#d91a1a}-0.68\%$
test_membership_stacked_nested_last 47.1610μs 4.0995μs 243.9324 KOps/s 242.5743 KOps/s $\color{#35bf28}+0.56\%$
test_membership_stacked_nested_leaf_last 69.2310μs 4.0849μs 244.8050 KOps/s 244.8251 KOps/s $-0.01\%$
test_nested_getleaf 51.5210μs 20.1628μs 49.5963 KOps/s 48.7847 KOps/s $\color{#35bf28}+1.66\%$
test_nested_get 71.1320μs 18.7324μs 53.3834 KOps/s 51.5695 KOps/s $\color{#35bf28}+3.52\%$
test_stacked_getleaf 78.5320μs 19.8723μs 50.3214 KOps/s 50.0694 KOps/s $\color{#35bf28}+0.50\%$
test_stacked_get 73.4420μs 18.9647μs 52.7296 KOps/s 52.1623 KOps/s $\color{#35bf28}+1.09\%$
test_nested_getitemleaf 89.5020μs 20.8298μs 48.0081 KOps/s 48.0413 KOps/s $\color{#d91a1a}-0.07\%$
test_nested_getitem 93.5920μs 19.6016μs 51.0162 KOps/s 50.4524 KOps/s $\color{#35bf28}+1.12\%$
test_stacked_getitemleaf 79.8220μs 20.7225μs 48.2567 KOps/s 48.4678 KOps/s $\color{#d91a1a}-0.44\%$
test_stacked_getitem 55.7210μs 19.3837μs 51.5896 KOps/s 50.6637 KOps/s $\color{#35bf28}+1.83\%$
test_lock_nested 0.6001ms 0.4738ms 2.1106 KOps/s 2.0661 KOps/s $\color{#35bf28}+2.16\%$
test_lock_stack_nested 0.6484ms 0.4814ms 2.0774 KOps/s 2.0767 KOps/s $\color{#35bf28}+0.03\%$
test_unlock_nested 0.4549ms 0.3777ms 2.6478 KOps/s 2.6292 KOps/s $\color{#35bf28}+0.71\%$
test_unlock_stack_nested 0.5690ms 0.3831ms 2.6106 KOps/s 2.6249 KOps/s $\color{#d91a1a}-0.55\%$
test_flatten_speed 0.4437ms 0.1162ms 8.6032 KOps/s 8.4558 KOps/s $\color{#35bf28}+1.74\%$
test_unflatten_speed 0.6763ms 0.5381ms 1.8583 KOps/s 1.8579 KOps/s $\color{#35bf28}+0.02\%$
test_common_ops 0.8165ms 0.6752ms 1.4812 KOps/s 1.4656 KOps/s $\color{#35bf28}+1.06\%$
test_creation 0.1290ms 3.0036μs 332.9357 KOps/s 333.8977 KOps/s $\color{#d91a1a}-0.29\%$
test_creation_empty 39.6610μs 6.5950μs 151.6305 KOps/s 150.7922 KOps/s $\color{#35bf28}+0.56\%$
test_creation_nested_1 40.4710μs 10.9378μs 91.4257 KOps/s 92.3311 KOps/s $\color{#d91a1a}-0.98\%$
test_creation_nested_2 40.6110μs 12.7506μs 78.4274 KOps/s 78.0529 KOps/s $\color{#35bf28}+0.48\%$
test_creation_many_keys[10] 66.8810μs 19.7064μs 50.7450 KOps/s 50.0796 KOps/s $\color{#35bf28}+1.33\%$
test_creation_many_keys[50] 0.1277ms 85.0921μs 11.7520 KOps/s 11.6880 KOps/s $\color{#35bf28}+0.55\%$
test_creation_many_keys[100] 0.2480ms 0.1676ms 5.9660 KOps/s 5.9507 KOps/s $\color{#35bf28}+0.26\%$
test_creation_nested_many_keys[10] 71.8910μs 42.7552μs 23.3890 KOps/s 23.4759 KOps/s $\color{#d91a1a}-0.37\%$
test_creation_nested_many_keys[50] 0.2034ms 0.1734ms 5.7663 KOps/s 5.7823 KOps/s $\color{#d91a1a}-0.28\%$
test_clone 37.6010μs 12.2076μs 81.9160 KOps/s 81.1060 KOps/s $\color{#35bf28}+1.00\%$
test_getitem[int] 1.5278ms 14.7466μs 67.8122 KOps/s 67.7093 KOps/s $\color{#35bf28}+0.15\%$
test_getitem[slice_int] 0.1400ms 23.8638μs 41.9045 KOps/s 41.4528 KOps/s $\color{#35bf28}+1.09\%$
test_getitem[range] 0.1721ms 61.4103μs 16.2839 KOps/s 17.0431 KOps/s $\color{#d91a1a}-4.45\%$
test_getitem[tuple] 0.1394ms 23.3897μs 42.7538 KOps/s 43.2256 KOps/s $\color{#d91a1a}-1.09\%$
test_getitem[list] 0.1822ms 54.7748μs 18.2566 KOps/s 18.3720 KOps/s $\color{#d91a1a}-0.63\%$
test_setitem_dim[int] 54.8010μs 24.5786μs 40.6858 KOps/s 39.7342 KOps/s $\color{#35bf28}+2.39\%$
test_setitem_dim[slice_int] 64.5410μs 41.3171μs 24.2031 KOps/s 24.2434 KOps/s $\color{#d91a1a}-0.17\%$
test_setitem_dim[range] 0.1189ms 91.5710μs 10.9205 KOps/s 11.1923 KOps/s $\color{#d91a1a}-2.43\%$
test_setitem_dim[tuple] 59.0510μs 37.4059μs 26.7338 KOps/s 26.9720 KOps/s $\color{#d91a1a}-0.88\%$
test_setitem 82.9320μs 15.9128μs 62.8426 KOps/s 61.7321 KOps/s $\color{#35bf28}+1.80\%$
test_set 46.9910μs 15.7101μs 63.6532 KOps/s 64.0885 KOps/s $\color{#d91a1a}-0.68\%$
test_set_shared 0.5183ms 0.2035ms 4.9133 KOps/s 4.9435 KOps/s $\color{#d91a1a}-0.61\%$
test_update 0.4156ms 20.1931μs 49.5219 KOps/s 49.2380 KOps/s $\color{#35bf28}+0.58\%$
test_update_nested 65.8220μs 31.2620μs 31.9877 KOps/s 31.8583 KOps/s $\color{#35bf28}+0.41\%$
test_update__nested 0.5427ms 31.5708μs 31.6748 KOps/s 31.6671 KOps/s $\color{#35bf28}+0.02\%$
test_set_nested 49.4410μs 17.2679μs 57.9108 KOps/s 58.3213 KOps/s $\color{#d91a1a}-0.70\%$
test_set_nested_new 54.2210μs 21.8206μs 45.8283 KOps/s 46.2527 KOps/s $\color{#d91a1a}-0.92\%$
test_select 83.1820μs 37.7747μs 26.4727 KOps/s 26.9082 KOps/s $\color{#d91a1a}-1.62\%$
test_select_nested 0.1061ms 70.0608μs 14.2733 KOps/s 14.1719 KOps/s $\color{#35bf28}+0.72\%$
test_exclude_nested 0.1229ms 86.6738μs 11.5375 KOps/s 11.5446 KOps/s $\color{#d91a1a}-0.06\%$
test_empty[True] 0.4377ms 0.3800ms 2.6315 KOps/s 2.6221 KOps/s $\color{#35bf28}+0.36\%$
test_empty[False] 8.0028μs 1.3280μs 752.9936 KOps/s 752.2765 KOps/s $\color{#35bf28}+0.10\%$
test_to 0.1124ms 68.0649μs 14.6919 KOps/s 14.6728 KOps/s $\color{#35bf28}+0.13\%$
test_to_nonblocking 0.1101ms 67.7377μs 14.7628 KOps/s 14.8588 KOps/s $\color{#d91a1a}-0.65\%$
test_unbind_speed 0.4216ms 0.3219ms 3.1063 KOps/s 3.0925 KOps/s $\color{#35bf28}+0.45\%$
test_unbind_speed_stack0 0.3644ms 0.3173ms 3.1513 KOps/s 3.1743 KOps/s $\color{#d91a1a}-0.72\%$
test_unbind_speed_stack1 0.1171s 1.0627ms 940.9726 Ops/s 1.2120 KOps/s $\textbf{\color{#d91a1a}-22.36\%}$
test_split 1.3189ms 1.2415ms 805.4787 Ops/s 646.8488 Ops/s $\textbf{\color{#35bf28}+24.52\%}$
test_chunk 0.1175s 1.3405ms 745.9980 Ops/s 841.2915 Ops/s $\textbf{\color{#d91a1a}-11.33\%}$
test_to_cpu_blocking 19.9910ms 19.8712ms 50.3241 Ops/s 50.2974 Ops/s $\color{#35bf28}+0.05\%$
test_to_cpu_global_sync 11.6844ms 11.5534ms 86.5548 Ops/s 86.7562 Ops/s $\color{#d91a1a}-0.23\%$
test_to_cpu_event_sync 12.9721ms 12.6049ms 79.3340 Ops/s 79.9108 Ops/s $\color{#d91a1a}-0.72\%$
test_to_cpu_default 12.9551ms 12.6147ms 79.2724 Ops/s 70.7344 Ops/s $\textbf{\color{#35bf28}+12.07\%}$
test_consolidate[False-None] 0.1481s 4.5859ms 218.0613 Ops/s 250.3538 Ops/s $\textbf{\color{#d91a1a}-12.90\%}$
test_consolidate[default-None] 3.1634ms 2.2259ms 449.2631 Ops/s 449.4220 Ops/s $\color{#d91a1a}-0.04\%$
test_consolidate[reduce-overhead-None] 3.3094ms 2.1571ms 463.5773 Ops/s 466.2779 Ops/s $\color{#d91a1a}-0.58\%$
test_consolidate_njt[False-None] 5.2335ms 4.9855ms 200.5814 Ops/s 198.8755 Ops/s $\color{#35bf28}+0.86\%$
test_to[False-False-None] 2.2704ms 2.1636ms 462.1981 Ops/s 458.5623 Ops/s $\color{#35bf28}+0.79\%$
test_to[True-False-None] 2.1041ms 1.9114ms 523.1896 Ops/s 522.6657 Ops/s $\color{#35bf28}+0.10\%$
test_to[within-False-None] 0.8672s 11.4691ms 87.1907 Ops/s 166.8893 Ops/s $\textbf{\color{#d91a1a}-47.76\%}$
test_to[True-default-None] 10.6803ms 10.0388ms 99.6136 Ops/s 98.2743 Ops/s $\color{#35bf28}+1.36\%$
test_to_njt[False-False-None] 7.0831ms 6.8098ms 146.8482 Ops/s 147.6525 Ops/s $\color{#d91a1a}-0.54\%$
test_to_njt[True-False-None] 4.0252ms 3.7506ms 266.6272 Ops/s 270.1545 Ops/s $\color{#d91a1a}-1.31\%$
test_to_njt[within-False-None] 11.0127ms 8.8270ms 113.2893 Ops/s 113.7017 Ops/s $\color{#d91a1a}-0.36\%$
test_creation[device0] 0.3883ms 0.1160ms 8.6206 KOps/s 8.6513 KOps/s $\color{#d91a1a}-0.35\%$
test_creation_from_tensor 0.4781ms 0.1144ms 8.7418 KOps/s 8.7403 KOps/s $\color{#35bf28}+0.02\%$
test_add_one[memmap_tensor0] 0.4232ms 5.9412μs 168.3160 KOps/s 168.5050 KOps/s $\color{#d91a1a}-0.11\%$
test_contiguous[memmap_tensor0] 2.6011μs 0.4461μs 2.2415 MOps/s 2.2122 MOps/s $\color{#35bf28}+1.33\%$
test_stack[memmap_tensor0] 49.7010μs 4.0187μs 248.8363 KOps/s 249.7874 KOps/s $\color{#d91a1a}-0.38\%$
test_memmaptd_index 1.7194ms 0.2624ms 3.8111 KOps/s 3.7316 KOps/s $\color{#35bf28}+2.13\%$
test_memmaptd_index_astensor 0.5027ms 0.3582ms 2.7919 KOps/s 2.7602 KOps/s $\color{#35bf28}+1.15\%$
test_memmaptd_index_op 0.8293ms 0.6039ms 1.6558 KOps/s 1.6332 KOps/s $\color{#35bf28}+1.39\%$
test_serialize_model 0.3445s 0.1650s 6.0608 Ops/s 7.4289 Ops/s $\textbf{\color{#d91a1a}-18.42\%}$
test_serialize_model_pickle 1.3704s 1.2141s 0.8236 Ops/s 0.8266 Ops/s $\color{#d91a1a}-0.36\%$
test_serialize_weights 0.1350s 0.1336s 7.4833 Ops/s 7.3916 Ops/s $\color{#35bf28}+1.24\%$
test_serialize_weights_returnearly 76.9213ms 63.7143ms 15.6951 Ops/s 10.8287 Ops/s $\textbf{\color{#35bf28}+44.94\%}$
test_serialize_weights_pickle 1.3699s 1.2132s 0.8242 Ops/s 0.8213 Ops/s $\color{#35bf28}+0.36\%$
test_reshape_pytree 6.3538ms 31.1492μs 32.1035 KOps/s 32.6311 KOps/s $\color{#d91a1a}-1.62\%$
test_reshape_td 66.2120μs 43.0629μs 23.2219 KOps/s 23.0204 KOps/s $\color{#35bf28}+0.88\%$
test_view_pytree 0.2179ms 30.4163μs 32.8771 KOps/s 33.2241 KOps/s $\color{#d91a1a}-1.04\%$
test_view_td 86.1220μs 51.2103μs 19.5273 KOps/s 19.2927 KOps/s $\color{#35bf28}+1.22\%$
test_unbind_pytree 0.2236ms 34.5017μs 28.9841 KOps/s 28.9780 KOps/s $\color{#35bf28}+0.02\%$
test_unbind_td 0.1412ms 47.4759μs 21.0633 KOps/s 20.9281 KOps/s $\color{#35bf28}+0.65\%$
test_split_pytree 0.2376ms 38.1743μs 26.1956 KOps/s 25.4565 KOps/s $\color{#35bf28}+2.90\%$
test_split_td 0.1456ms 67.0078μs 14.9236 KOps/s 14.9466 KOps/s $\color{#d91a1a}-0.15\%$
test_add_pytree 0.2257ms 38.8277μs 25.7548 KOps/s 26.2385 KOps/s $\color{#d91a1a}-1.84\%$
test_add_td 96.1920μs 51.3247μs 19.4838 KOps/s 19.7925 KOps/s $\color{#d91a1a}-1.56\%$
test_compile_add_one_nested[tensordict-compile] 0.4300ms 0.2742ms 3.6475 KOps/s 3.7953 KOps/s $\color{#d91a1a}-3.90\%$
test_compile_add_one_nested[tensordict-eager] 0.4363ms 0.1962ms 5.0980 KOps/s 5.1574 KOps/s $\color{#d91a1a}-1.15\%$
test_compile_add_one_nested[pytree-compile] 0.2266ms 0.1560ms 6.4114 KOps/s 6.6557 KOps/s $\color{#d91a1a}-3.67\%$
test_compile_add_one_nested[pytree-eager] 0.4930ms 0.1748ms 5.7204 KOps/s 5.7191 KOps/s $\color{#35bf28}+0.02\%$
test_compile_copy_nested[tensordict-compile] 0.1085ms 21.9681μs 45.5205 KOps/s 47.0562 KOps/s $\color{#d91a1a}-3.26\%$
test_compile_copy_nested[tensordict-eager] 0.1350ms 50.2539μs 19.8989 KOps/s 19.5324 KOps/s $\color{#35bf28}+1.88\%$
test_compile_copy_nested[pytree-compile] 0.1997ms 18.9937μs 52.6491 KOps/s 52.1101 KOps/s $\color{#35bf28}+1.03\%$
test_compile_copy_nested[pytree-eager] 0.3675ms 62.8644μs 15.9073 KOps/s 15.7174 KOps/s $\color{#35bf28}+1.21\%$
test_compile_add_one_flat[tensordict-compile] 0.4052ms 0.3135ms 3.1900 KOps/s 3.2238 KOps/s $\color{#d91a1a}-1.05\%$
test_compile_add_one_flat[tensordict-eager] 0.3349ms 0.2827ms 3.5370 KOps/s 3.5486 KOps/s $\color{#d91a1a}-0.33\%$
test_compile_add_one_flat[tensorclass-compile] 0.4011ms 0.2117ms 4.7239 KOps/s 4.6266 KOps/s $\color{#35bf28}+2.10\%$
test_compile_add_one_flat[tensorclass-eager] 0.1648ms 74.2045μs 13.4763 KOps/s 13.4312 KOps/s $\color{#35bf28}+0.34\%$
test_compile_add_one_flat[pytree-compile] 0.6391ms 0.2361ms 4.2357 KOps/s 4.1910 KOps/s $\color{#35bf28}+1.07\%$
test_compile_add_one_flat[pytree-eager] 0.8350ms 0.5323ms 1.8786 KOps/s 1.8984 KOps/s $\color{#d91a1a}-1.04\%$
test_compile_add_self_flat[tensordict-eager] 0.4966ms 0.3302ms 3.0287 KOps/s 2.9896 KOps/s $\color{#35bf28}+1.31\%$
test_compile_add_self_flat[tensordict-compile] 0.4093ms 0.3149ms 3.1756 KOps/s 3.1839 KOps/s $\color{#d91a1a}-0.26\%$
test_compile_add_self_flat[tensorclass-eager] 0.2239ms 92.8045μs 10.7753 KOps/s 10.8817 KOps/s $\color{#d91a1a}-0.98\%$
test_compile_add_self_flat[tensorclass-compile] 0.3752ms 0.2189ms 4.5675 KOps/s 4.6940 KOps/s $\color{#d91a1a}-2.69\%$
test_compile_add_self_flat[pytree-eager] 0.7247ms 0.4424ms 2.2606 KOps/s 2.3161 KOps/s $\color{#d91a1a}-2.40\%$
test_compile_add_self_flat[pytree-compile] 0.4229ms 0.2427ms 4.1208 KOps/s 4.1597 KOps/s $\color{#d91a1a}-0.93\%$
test_compile_copy_flat[tensordict-compile] 82.5220μs 26.1178μs 38.2881 KOps/s 39.8403 KOps/s $\color{#d91a1a}-3.90\%$
test_compile_copy_flat[tensordict-eager] 77.4110μs 39.5031μs 25.3145 KOps/s 25.2217 KOps/s $\color{#35bf28}+0.37\%$
test_compile_copy_flat[pytree-compile] 0.1205ms 26.0797μs 38.3440 KOps/s 40.2261 KOps/s $\color{#d91a1a}-4.68\%$
test_compile_copy_flat[pytree-eager] 0.3274ms 49.8812μs 20.0476 KOps/s 19.8445 KOps/s $\color{#35bf28}+1.02\%$
test_compile_assign_and_add[tensordict-compile] 2.0291ms 0.2543ms 3.9318 KOps/s 3.6440 KOps/s $\textbf{\color{#35bf28}+7.90\%}$
test_compile_assign_and_add[tensordict-eager] 3.4647ms 3.2677ms 306.0234 Ops/s 290.9154 Ops/s $\textbf{\color{#35bf28}+5.19\%}$
test_compile_assign_and_add[pytree-compile] 1.8579ms 0.1938ms 5.1594 KOps/s 5.1896 KOps/s $\color{#d91a1a}-0.58\%$
test_compile_assign_and_add[pytree-eager] 3.0029ms 2.7527ms 363.2741 Ops/s 366.2815 Ops/s $\color{#d91a1a}-0.82\%$
test_compile_indexing[tensor-tensordict-compile] 0.3150ms 0.1496ms 6.6861 KOps/s 6.6429 KOps/s $\color{#35bf28}+0.65\%$
test_compile_indexing[tensor-tensordict-eager] 0.3723ms 73.4404μs 13.6165 KOps/s 13.6615 KOps/s $\color{#d91a1a}-0.33\%$
test_compile_indexing[tensor-tensorclass-compile] 0.2856ms 0.1310ms 7.6349 KOps/s 7.4156 KOps/s $\color{#35bf28}+2.96\%$
test_compile_indexing[tensor-tensorclass-eager] 0.3041ms 44.7216μs 22.3606 KOps/s 22.1465 KOps/s $\color{#35bf28}+0.97\%$
test_compile_indexing[tensor-pytree-compile] 0.1942ms 0.1348ms 7.4211 KOps/s 7.5773 KOps/s $\color{#d91a1a}-2.06\%$
test_compile_indexing[tensor-pytree-eager] 0.3227ms 45.4187μs 22.0174 KOps/s 22.6914 KOps/s $\color{#d91a1a}-2.97\%$
test_compile_indexing[slice-tensordict-compile] 0.2148ms 89.5448μs 11.1676 KOps/s 11.3999 KOps/s $\color{#d91a1a}-2.04\%$
test_compile_indexing[slice-tensordict-eager] 0.2159ms 26.3346μs 37.9728 KOps/s 36.3584 KOps/s $\color{#35bf28}+4.44\%$
test_compile_indexing[slice-tensorclass-compile] 0.1828ms 69.2390μs 14.4427 KOps/s 14.2663 KOps/s $\color{#35bf28}+1.24\%$
test_compile_indexing[slice-tensorclass-eager] 0.2502ms 21.0372μs 47.5349 KOps/s 47.1986 KOps/s $\color{#35bf28}+0.71\%$
test_compile_indexing[slice-pytree-compile] 0.1179ms 71.7244μs 13.9423 KOps/s 14.0620 KOps/s $\color{#d91a1a}-0.85\%$
test_compile_indexing[slice-pytree-eager] 0.2983ms 20.9706μs 47.6859 KOps/s 47.4330 KOps/s $\color{#35bf28}+0.53\%$
test_compile_indexing[int-tensordict-compile] 0.1512ms 88.4426μs 11.3068 KOps/s 11.2906 KOps/s $\color{#35bf28}+0.14\%$
test_compile_indexing[int-tensordict-eager] 0.2595ms 27.6504μs 36.1658 KOps/s 38.0861 KOps/s $\textbf{\color{#d91a1a}-5.04\%}$
test_compile_indexing[int-tensorclass-compile] 0.1682ms 71.6501μs 13.9567 KOps/s 14.1367 KOps/s $\color{#d91a1a}-1.27\%$
test_compile_indexing[int-tensorclass-eager] 0.2533ms 21.6995μs 46.0840 KOps/s 47.5132 KOps/s $\color{#d91a1a}-3.01\%$
test_compile_indexing[int-pytree-compile] 0.1404ms 71.8546μs 13.9170 KOps/s 14.1131 KOps/s $\color{#d91a1a}-1.39\%$
test_compile_indexing[int-pytree-eager] 0.2633ms 20.9610μs 47.7077 KOps/s 47.4505 KOps/s $\color{#35bf28}+0.54\%$
test_compile_replace[single-eager] 91.9020μs 46.4339μs 21.5360 KOps/s 20.7339 KOps/s $\color{#35bf28}+3.87\%$
test_compile_replace[single-compile] 0.2525ms 0.1454ms 6.8753 KOps/s 6.8199 KOps/s $\color{#35bf28}+0.81\%$
test_compile_replace[multi-eager] 0.6360ms 0.5621ms 1.7791 KOps/s 1.7560 KOps/s $\color{#35bf28}+1.31\%$
test_compile_replace[multi-compile] 0.2967ms 0.1548ms 6.4586 KOps/s 6.3817 KOps/s $\color{#35bf28}+1.21\%$
test_compile_tc_getattr_20[eager] 0.2496ms 0.1716ms 5.8260 KOps/s 5.8844 KOps/s $\color{#d91a1a}-0.99\%$
test_compile_tc_getattr_20[compile] 0.4083ms 0.1716ms 5.8261 KOps/s 5.8496 KOps/s $\color{#d91a1a}-0.40\%$
test_compile_clone_shallow[20-eager] 49.4110μs 18.2583μs 54.7695 KOps/s 54.3289 KOps/s $\color{#35bf28}+0.81\%$
test_compile_clone_shallow[20-compile] 73.8410μs 23.3576μs 42.8127 KOps/s 43.2030 KOps/s $\color{#d91a1a}-0.90\%$
test_compile_clone_shallow[40-eager] 94.8220μs 32.4337μs 30.8321 KOps/s 30.9699 KOps/s $\color{#d91a1a}-0.44\%$
test_compile_clone_shallow[40-compile] 0.1044ms 24.2268μs 41.2766 KOps/s 38.9603 KOps/s $\textbf{\color{#35bf28}+5.95\%}$
test_compile_clone_shallow[80-eager] 90.2310μs 60.7891μs 16.4503 KOps/s 16.7157 KOps/s $\color{#d91a1a}-1.59\%$
test_compile_clone_shallow[80-compile] 79.1810μs 28.6904μs 34.8549 KOps/s 35.6978 KOps/s $\color{#d91a1a}-2.36\%$
test_compile_update_inplace[eager] 0.1005ms 59.7834μs 16.7271 KOps/s 16.4515 KOps/s $\color{#35bf28}+1.67\%$
test_compile_update_inplace[compile] 0.4889ms 0.1222ms 8.1862 KOps/s 8.3732 KOps/s $\color{#d91a1a}-2.23\%$
test_mod_add[eager] 0.3118ms 0.2196ms 4.5535 KOps/s 4.5974 KOps/s $\color{#d91a1a}-0.96\%$
test_mod_add[compile] 0.2475ms 0.1197ms 8.3523 KOps/s 8.3315 KOps/s $\color{#35bf28}+0.25\%$
test_mod_add[compile-overhead] 0.2772ms 0.1879ms 5.3206 KOps/s 5.0405 KOps/s $\textbf{\color{#35bf28}+5.56\%}$
test_mod_wrap[eager] 0.5718ms 0.4770ms 2.0965 KOps/s 2.1164 KOps/s $\color{#d91a1a}-0.94\%$
test_mod_wrap[compile] 0.4169ms 0.3370ms 2.9673 KOps/s 2.9492 KOps/s $\color{#35bf28}+0.61\%$
test_mod_wrap[compile-overhead] 7.1577ms 4.0127ms 249.2096 Ops/s 252.8916 Ops/s $\color{#d91a1a}-1.46\%$
test_mod_wrap_and_backward[eager] 1.8307ms 1.6449ms 607.9243 Ops/s 607.7739 Ops/s $\color{#35bf28}+0.02\%$
test_mod_wrap_and_backward[compile] 2.0123ms 1.3222ms 756.3107 Ops/s 762.3821 Ops/s $\color{#d91a1a}-0.80\%$
test_mod_wrap_and_backward[compile-overhead] 1.5441ms 0.9197ms 1.0873 KOps/s 1.0743 KOps/s $\color{#35bf28}+1.20\%$
test_seq_add[eager] 0.5419ms 0.4912ms 2.0357 KOps/s 2.0474 KOps/s $\color{#d91a1a}-0.57\%$
test_seq_add[compile] 0.1923ms 0.1304ms 7.6676 KOps/s 7.4474 KOps/s $\color{#35bf28}+2.96\%$
test_seq_add[compile-overhead] 0.2823ms 0.1978ms 5.0559 KOps/s 4.8531 KOps/s $\color{#35bf28}+4.18\%$
test_seq_wrap[eager] 5.2782ms 1.3728ms 728.4495 Ops/s 721.7704 Ops/s $\color{#35bf28}+0.93\%$
test_seq_wrap[compile] 0.4415ms 0.3558ms 2.8109 KOps/s 2.6342 KOps/s $\textbf{\color{#35bf28}+6.71\%}$
test_seq_wrap[compile-overhead] 0.4580ms 0.3152ms 3.1726 KOps/s 3.0592 KOps/s $\color{#35bf28}+3.71\%$
test_func_call_runtime[False-eager] 0.8336ms 0.7812ms 1.2800 KOps/s 1.2099 KOps/s $\textbf{\color{#35bf28}+5.80\%}$
test_func_call_runtime[False-compile] 0.8974ms 0.7440ms 1.3442 KOps/s 1.3368 KOps/s $\color{#35bf28}+0.55\%$
test_func_call_runtime[False-compile-overhead] 0.6697ms 0.4928ms 2.0293 KOps/s 2.0147 KOps/s $\color{#35bf28}+0.72\%$
test_func_call_runtime[True-eager] 1.1435ms 1.0266ms 974.1082 Ops/s 963.0559 Ops/s $\color{#35bf28}+1.15\%$
test_func_call_runtime[True-compile] 0.8642ms 0.7637ms 1.3093 KOps/s 1.2803 KOps/s $\color{#35bf28}+2.27\%$
test_func_call_runtime[True-compile-overhead] 0.6882ms 0.5117ms 1.9543 KOps/s 1.9608 KOps/s $\color{#d91a1a}-0.33\%$
test_func_call_cm_runtime[False-eager] 0.8753ms 0.8063ms 1.2403 KOps/s 1.2243 KOps/s $\color{#35bf28}+1.30\%$
test_func_call_cm_runtime[False-compile] 0.8976ms 0.7335ms 1.3634 KOps/s 1.3656 KOps/s $\color{#d91a1a}-0.16\%$
test_func_call_cm_runtime[False-compile-overhead] 0.5622ms 0.4777ms 2.0934 KOps/s 2.0934 KOps/s $-0.00\%$
test_func_call_cm_runtime[True-eager] 1.3051ms 1.1806ms 847.0501 Ops/s 849.7098 Ops/s $\color{#d91a1a}-0.31\%$
test_func_call_cm_runtime[True-compile] 0.9362ms 0.8364ms 1.1957 KOps/s 1.1990 KOps/s $\color{#d91a1a}-0.28\%$
test_func_call_cm_runtime[True-compile-overhead] 1.1352ms 0.8516ms 1.1742 KOps/s 1.1875 KOps/s $\color{#d91a1a}-1.11\%$
test_vmap_func_call_cm_runtime[eager] 3.1677ms 2.6087ms 383.3332 Ops/s 381.9028 Ops/s $\color{#35bf28}+0.37\%$
test_vmap_func_call_cm_runtime[compile] 4.2973ms 3.5938ms 278.2564 Ops/s 279.3921 Ops/s $\color{#d91a1a}-0.41\%$
test_vmap_func_call_cm_runtime[compile-overhead] 4.5271ms 3.5786ms 279.4392 Ops/s 277.2735 Ops/s $\color{#35bf28}+0.78\%$
test_distributed 0.5675ms 0.1437ms 6.9603 KOps/s 6.9764 KOps/s $\color{#d91a1a}-0.23\%$
test_tdmodule 0.4881ms 0.1859ms 5.3791 KOps/s 5.3024 KOps/s $\color{#35bf28}+1.45\%$
test_tdmodule_dispatch 0.3921ms 0.3625ms 2.7590 KOps/s 2.7963 KOps/s $\color{#d91a1a}-1.33\%$
test_tdseq 45.4310μs 26.0280μs 38.4202 KOps/s 38.2435 KOps/s $\color{#35bf28}+0.46\%$
test_tdseq_dispatch 0.2407ms 0.2109ms 4.7408 KOps/s 4.7676 KOps/s $\color{#d91a1a}-0.56\%$
test_instantiation_functorch 2.0560ms 1.9228ms 520.0691 Ops/s 514.3334 Ops/s $\color{#35bf28}+1.12\%$
test_exec_functorch 0.2086ms 0.1673ms 5.9776 KOps/s 5.8901 KOps/s $\color{#35bf28}+1.49\%$
test_exec_functional_call 0.1896ms 0.1497ms 6.6807 KOps/s 6.6446 KOps/s $\color{#35bf28}+0.54\%$
test_exec_td_decorator 0.6079ms 0.2351ms 4.2542 KOps/s 4.2965 KOps/s $\color{#d91a1a}-0.99\%$
test_vmap_mlp_speed_decorator[True-True] 1.3085ms 1.0925ms 915.2943 Ops/s 915.4745 Ops/s $\color{#d91a1a}-0.02\%$
test_vmap_mlp_speed_decorator[True-False] 1.3224ms 1.0866ms 920.3173 Ops/s 919.4735 Ops/s $\color{#35bf28}+0.09\%$
test_vmap_mlp_speed_decorator[False-True] 1.0143ms 0.7989ms 1.2518 KOps/s 1.2470 KOps/s $\color{#35bf28}+0.38\%$
test_vmap_mlp_speed_decorator[False-False] 1.0133ms 0.8021ms 1.2468 KOps/s 1.2514 KOps/s $\color{#d91a1a}-0.37\%$
test_vmap_transformer_speed_decorator[True-True] 25.0611ms 24.3298ms 41.1019 Ops/s 40.4122 Ops/s $\color{#35bf28}+1.71\%$
test_vmap_transformer_speed_decorator[True-False] 25.1468ms 24.2862ms 41.1756 Ops/s 40.3251 Ops/s $\color{#35bf28}+2.11\%$
test_vmap_transformer_speed_decorator[False-True] 24.5950ms 23.9918ms 41.6809 Ops/s 40.8533 Ops/s $\color{#35bf28}+2.03\%$
test_vmap_transformer_speed_decorator[False-False] 25.0245ms 24.0052ms 41.6577 Ops/s 41.4269 Ops/s $\color{#35bf28}+0.56\%$
test_to_module_speed[True] 1.7471ms 1.5905ms 628.7149 Ops/s 629.1155 Ops/s $\color{#d91a1a}-0.06\%$
test_to_module_speed[False] 1.6682ms 1.5653ms 638.8652 Ops/s 641.7534 Ops/s $\color{#d91a1a}-0.45\%$
test_to_module_plain_tensor_speed[None] 1.7889ms 1.6684ms 599.3667 Ops/s 596.5970 Ops/s $\color{#35bf28}+0.46\%$
test_to_module_plain_tensor_speed[False] 1.6691ms 1.5349ms 651.5177 Ops/s 656.3718 Ops/s $\color{#d91a1a}-0.74\%$
test_to_module_plain_tensor_speed[True] 3.3811ms 3.2343ms 309.1816 Ops/s 308.0308 Ops/s $\color{#35bf28}+0.37\%$
test_tc_init 83.3520μs 42.4137μs 23.5773 KOps/s 23.2855 KOps/s $\color{#35bf28}+1.25\%$
test_tc_init_tensor_only 89.3010μs 8.8853μs 112.5457 KOps/s 111.2303 KOps/s $\color{#35bf28}+1.18\%$
test_tc_init_nested 0.1732ms 81.8903μs 12.2115 KOps/s 11.7253 KOps/s $\color{#35bf28}+4.15\%$
test_tc_init_many_fields 66.7510μs 16.2623μs 61.4918 KOps/s 60.2907 KOps/s $\color{#35bf28}+1.99\%$
test_tc_first_layer_tensor 53.8910μs 1.7063μs 586.0682 KOps/s 585.6782 KOps/s $\color{#35bf28}+0.07\%$
test_tc_first_layer_tensor_only 2.9776μs 0.3905μs 2.5611 MOps/s 2.6207 MOps/s $\color{#d91a1a}-2.27\%$
test_tc_first_layer_tensor_set 30.1510μs 4.0057μs 249.6420 KOps/s 247.1695 KOps/s $\color{#35bf28}+1.00\%$
test_tc_first_layer_tensor_only_set 22.6100μs 3.3481μs 298.6742 KOps/s 294.3358 KOps/s $\color{#35bf28}+1.47\%$
test_tc_first_layer_nontensor 33.4110μs 5.8172μs 171.9041 KOps/s 169.5603 KOps/s $\color{#35bf28}+1.38\%$
test_tc_second_layer_tensor 34.9710μs 4.1732μs 239.6250 KOps/s 237.3022 KOps/s $\color{#35bf28}+0.98\%$
test_tc_second_layer_nontensor 35.2810μs 8.1399μs 122.8517 KOps/s 120.1652 KOps/s $\color{#35bf28}+2.24\%$
test_unbind 0.2836s 14.2380ms 70.2348 Ops/s 59.7258 Ops/s $\textbf{\color{#35bf28}+17.60\%}$
test_full_like 4.5582ms 4.3965ms 227.4555 Ops/s 226.9233 Ops/s $\color{#35bf28}+0.23\%$
test_zeros_like 4.4944ms 4.3735ms 228.6496 Ops/s 228.2491 Ops/s $\color{#35bf28}+0.18\%$
test_ones_like 4.4864ms 4.3787ms 228.3797 Ops/s 227.7515 Ops/s $\color{#35bf28}+0.28\%$
test_clone 6.8683ms 6.6171ms 151.1235 Ops/s 151.4470 Ops/s $\color{#d91a1a}-0.21\%$
test_squeeze 67.9010μs 14.3288μs 69.7893 KOps/s 73.3599 KOps/s $\color{#d91a1a}-4.87\%$
test_unsqueeze 0.1660ms 0.1124ms 8.8990 KOps/s 8.8697 KOps/s $\color{#35bf28}+0.33\%$
test_split 0.3837ms 0.1794ms 5.5733 KOps/s 5.4532 KOps/s $\color{#35bf28}+2.20\%$
test_permute 0.2295ms 0.1891ms 5.2880 KOps/s 5.3011 KOps/s $\color{#d91a1a}-0.25\%$
test_stack 54.4103ms 51.8419ms 19.2894 Ops/s 28.4388 Ops/s $\textbf{\color{#d91a1a}-32.17\%}$
test_cat 44.0898ms 43.5330ms 22.9711 Ops/s 28.3993 Ops/s $\textbf{\color{#d91a1a}-19.11\%}$
test_sequential_tensordict 0.7537ms 0.5484ms 1.8233 KOps/s 1.8083 KOps/s $\color{#35bf28}+0.83\%$
test_sequential_graph_module 0.2407ms 0.1127ms 8.8768 KOps/s 9.0128 KOps/s $\color{#d91a1a}-1.51\%$
test_nested_tensordict 1.9165ms 0.7997ms 1.2504 KOps/s 1.2839 KOps/s $\color{#d91a1a}-2.61\%$
test_nested_graph_module 0.1717ms 0.1239ms 8.0713 KOps/s 8.3396 KOps/s $\color{#d91a1a}-3.22\%$

[ghstack-poisoned]
vmoens added a commit that referenced this pull request Jul 9, 2026
…pies

The multithreaded path of `consolidate` used one executor task per leaf,
each running a Python-level `copy_`. This made `num_threads>0` up to 4x
slower than the sequential fused `torch.cat` for tensordicts with many
small leaves, and up to 2x slower when writing to a memory-mapped file.

Rework the copy stage:

- Split the leaves into contiguous chunks of roughly equal byte size
  (at most one chunk per thread) and run one fused `torch.cat` per chunk.
- When all leaves already live on the storage device, prepare the flat
  uint8 views on the main thread: this work is GIL-bound and only adds
  contention inside workers, which now run a single GIL-releasing copy.
- When leaves need a device change, keep per-leaf copies inside the
  worker threads so device transfers can overlap.
- When writing to a memory-mapped file with no device change, fall back
  to the sequential fused copy: concurrent writes to a fresh file
  mapping are 2-4x slower than a single sequential one on local
  filesystems (page-fault and writeback contention).
- Share the storage-view rebuild step between the threaded and
  sequential paths (the threaded path previously duplicated it with a
  per-leaf `assign` and a separate NJT rebuild).

Measured on M-series/APFS: in-memory 8x128MB 218ms (nt=0) / 20ms (nt=8,
was 202ms); 2000x256KB 48ms (nt=0) / 53ms (nt=8, was 194ms); file-backed
writes now match the sequential path instead of doubling.

Also fixes an AttributeError when `non_blocking=True` was used without
an explicit `device` (the sync check dereferenced `device.type` on
`None`).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ghstack-source-id: c29cc57
Pull-Request: #1740
@vmoens
vmoens merged commit e7439db into gh/vmoens/93/base Jul 9, 2026
66 of 67 checks passed
@vmoens
vmoens deleted the gh/vmoens/93/head branch July 9, 2026 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Benchmarks CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Performance Test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant