Skip to content

Add lazy velocity update to kinematic entity.

5ae1cd3
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Draft

[MISC] Add lazy velocity update to kinematic entity. #2558

Add lazy velocity update to kinematic entity.
5ae1cd3
Select commit
Loading
Failed to load commit list.
GitHub Actions / Benchmark Comparison failed Mar 16, 2026 in 0s

Benchmark Comparison

🔴 Regressions detected. See tables below.

Details

Thresholds: runtime ± 8%, compile ± 30%, mem ± 4%

Runtime FPS

status env batch_size constraint_solver use_contact_island dtype backend gjk_collision current FPS baseline FPS [last (mean ± std)] (*1) Δ FPS (*2)
anymal_random 30000 - False field cuda - 8,634,979 8,657,922 (8,762,218 ± 189,593) -0.3%
anymal_random 30000 - False ndarray cuda - 6,925,657 6,902,501 (7,004,952 ± 123,170) +0.3%
anymal_uniform 30000 - False field cuda - 11,622,755 11,619,630 (11,887,984 ± 318,220) +0.0%
anymal_uniform 30000 - False ndarray cuda - 9,446,928 9,603,654 (9,712,555 ± 286,016) -1.6%
anymal_uniform_kinematic 0 - False field cpu - 1,800 1,777 (1,778 ± 12) +1.3%
anymal_uniform_kinematic 0 - False ndarray cpu - 959 952 (949 ± 7) +0.7%
anymal_uniform_kinematic 30000 - False field cuda - 9,754,988 9,901,823 (9,954,472 ± 289,637) -1.5%
anymal_uniform_kinematic 30000 - False ndarray cuda - 7,486,510 7,349,393 (7,469,073 ± 112,218) +1.9%
anymal_zero 0 - False field cpu - 6,116 6,125 (6,164 ± 58) -0.1%
anymal_zero 0 - False ndarray cpu - 3,498 3,389 (3,426 ± 35) +3.2%
anymal_zero 30000 - False field cuda - 18,212,782 17,845,687 (18,408,778 ± 586,613) +2.1%
anymal_zero 30000 - False ndarray cuda - 12,990,761 12,921,731 (13,254,442 ± 392,161) +0.5%
box_pyramid_3 4096 - False field cuda - 636,434 637,942 (643,671 ± 10,812) -0.2%
box_pyramid_3 4096 - False ndarray cuda - 464,759 469,215 (474,076 ± 10,877) -0.9%
box_pyramid_4 4096 - False field cuda - 204,755 205,922 (205,153 ± 881) -0.6%
box_pyramid_4 4096 - False ndarray cuda - 153,214 153,613 (155,519 ± 2,032) -0.3%
box_pyramid_5 4096 - False field cuda - 78,938 79,017 (78,872 ± 1,499) -0.1%
box_pyramid_5 4096 - False ndarray cuda - 59,573 59,770 (59,374 ± 327) -0.3%
box_pyramid_6 4096 - False field cuda False 23,785 23,598 (22,867 ± 368) +0.8%
⚠️ box_pyramid_6 4096 - False field cuda True 25,351 23,274 (23,971 ± 1,013) +8.9%
box_pyramid_6 4096 - False ndarray cuda False 17,741 18,614 (18,428 ± 124) -4.7%
box_pyramid_6 4096 - False ndarray cuda True 19,855 20,002 (18,673 ± 990) -0.7%
dex_hand 4096 - False field cuda - 7,804 7,728 (6,724 ± 1,220) +1.0%
dex_hand 4096 - False ndarray cuda - 5,553 5,570 (4,926 ± 752) -0.3%
duck_in_box_easy 30000 - False field cuda False 28,263,138 28,532,887 (28,146,348 ± 273,587) -0.9%
duck_in_box_easy 30000 - False field cuda True 11,052,836 11,033,576 (11,165,187 ± 232,563) +0.2%
duck_in_box_easy 30000 - False ndarray cuda False 19,457,944 19,415,642 (19,694,520 ± 315,941) +0.2%
duck_in_box_easy 30000 - False ndarray cuda True 9,229,443 9,218,344 (9,363,804 ± 156,377) +0.1%
duck_in_box_hard 0 - False field cpu - 4,560 4,704 (4,686 ± 77) -3.1%
duck_in_box_hard 0 - False ndarray cpu - 2,947 2,932 (2,874 ± 78) +0.5%
duck_in_box_hard 30000 - False field cuda False 10,124,955 9,880,631 (8,796,823 ± 1,295,191) +2.5%
duck_in_box_hard 30000 - False field cuda True 3,687,312 3,671,496 (3,316,446 ± 450,021) +0.4%
duck_in_box_hard 30000 - False ndarray cuda False 6,717,825 6,774,406 (6,396,540 ± 417,717) -0.8%
duck_in_box_hard 30000 - False ndarray cuda True 2,875,075 2,893,207 (2,612,209 ± 330,723) -0.6%
franka 30000 - False field cuda - 19,996,477 20,636,558 (21,394,249 ± 1,285,686) -3.1%
franka 30000 - False ndarray cuda - 14,255,497 14,194,344 (14,623,146 ± 438,051) +0.4%
franka_accessors 0 - False field cpu - 1,780 1,738 (1,776 ± 23) +2.4%
franka_accessors 0 - False ndarray cpu - 1,277 1,297 (1,302 ± 22) -1.5%
franka_accessors 30000 - False field cuda - 20,347,338 20,289,660 (20,698,618 ± 568,915) +0.3%
franka_accessors 30000 - False ndarray cuda - 14,267,128 14,184,486 (14,474,045 ± 242,889) +0.6%
franka_free 30000 - False field cuda - 37,323,648 37,235,611 (38,396,870 ± 1,756,689) +0.2%
franka_free 30000 - False ndarray cuda - 22,155,572 22,139,364 (22,925,211 ± 754,556) +0.1%
franka_random 0 - False field cpu - 5,402 5,376 (5,389 ± 20) +0.5%
franka_random 0 - False ndarray cpu - 3,164 3,041 (3,181 ± 80) +4.0%
franka_random 30000 CG False field cuda - 15,274,989 15,547,790 (15,074,872 ± 562,833) -1.8%
franka_random 30000 CG False ndarray cuda - 10,837,460 10,699,694 (10,561,811 ± 272,971) +1.3%
franka_random 30000 Newton False field cuda - 14,911,137 14,967,178 (14,663,269 ± 349,363) -0.4%
franka_random 30000 Newton False ndarray cuda - 10,683,733 10,715,627 (10,644,163 ± 202,845) -0.3%
franka_random 30000 - False field cuda False 14,941,126 14,856,509 (14,525,942 ± 479,737) +0.6%
franka_random 30000 - False field cuda True 11,876,747 11,653,721 (10,113,926 ± 1,849,154) +1.9%
franka_random 30000 - False ndarray cuda False 10,694,844 10,712,923 (10,641,374 ± 171,193) -0.2%
franka_random 30000 - False ndarray cuda True 7,967,240 8,067,276 (7,211,390 ± 960,572) -1.2%
g1_fall 4096 Newton False field cuda - 609,316 612,811 (608,152 ± 6,151) -0.6%
g1_fall 4096 Newton False ndarray cuda - 432,913 434,437 (429,295 ± 5,826) -0.4%
go2 4096 CG False field cuda False 2,890,813 2,914,705 (2,917,999 ± 15,492) -0.8%
🔴 go2 4096 CG False ndarray cuda False 1,682,497 2,022,575 (2,028,017 ± 14,195) -16.8%
go2 4096 Newton False field cuda False 3,289,220 3,280,059 (3,326,611 ± 60,398) +0.3%
go2 4096 Newton False ndarray cuda False 2,218,367 2,208,550 (2,251,243 ± 28,593) +0.4%
go2 4096 - False field cuda True 2,647,889 2,616,846 (2,506,075 ± 121,650) +1.2%
go2 4096 - False ndarray cuda True 1,785,415 1,792,370 (1,704,091 ± 93,183) -0.4%

Baselines considered: 5 commits

Compile Time

status env batch_size constraint_solver use_contact_island dtype backend gjk_collision current compile baseline compile [last (mean ± std)] (*1) Δ compile (*2)
anymal_random 30000 - False field cuda - 93.80 92.20 (78.18 ± 13.52) +1.7%
anymal_random 30000 - False ndarray cuda - 72.60 69.00 (59.66 ± 12.13) +5.2%
anymal_uniform 30000 - False field cuda - 93.20 93.00 (80.24 ± 13.32) +0.2%
anymal_uniform 30000 - False ndarray cuda - 69.50 67.20 (58.58 ± 11.16) +3.4%
anymal_uniform_kinematic 0 - False field cpu - 55.50 56.20 (56.86 ± 2.33) -1.2%
anymal_uniform_kinematic 0 - False ndarray cpu - 38 38 (38 ± 0) +0.0%
anymal_uniform_kinematic 30000 - False field cuda - 95.50 92.80 (81.54 ± 12.04) +2.9%
anymal_uniform_kinematic 30000 - False ndarray cuda - 72 67 (58 ± 12) +6.5%
anymal_zero 0 - False field cpu - 52.80 51.00 (51.26 ± 1.28) +3.5%
anymal_zero 0 - False ndarray cpu - 35 34 (35 ± 0) +1.2%
anymal_zero 30000 - False field cuda - 93.40 92.20 (78.84 ± 13.35) +1.3%
anymal_zero 30000 - False ndarray cuda - 71.60 68.30 (59.56 ± 12.57) +4.8%
box_pyramid_3 4096 - False field cuda - 87.70 85.20 (74.46 ± 13.92) +2.9%
box_pyramid_3 4096 - False ndarray cuda - 69.70 66.50 (57.00 ± 11.54) +4.8%
box_pyramid_4 4096 - False field cuda - 87.70 90.70 (76.42 ± 14.89) -3.3%
box_pyramid_4 4096 - False ndarray cuda - 65.70 63.70 (54.78 ± 11.32) +3.1%
box_pyramid_5 4096 - False field cuda - 85.50 91.40 (75.54 ± 15.25) -6.5%
box_pyramid_5 4096 - False ndarray cuda - 65.60 64.10 (55.10 ± 11.25) +2.3%
box_pyramid_6 4096 - False field cuda False 85.80 91.20 (76.06 ± 15.25) -5.9%
box_pyramid_6 4096 - False field cuda True 54.90 55.20 (48.10 ± 8.54) -0.5%
box_pyramid_6 4096 - False ndarray cuda False 68.40 67.00 (57.24 ± 11.09) +2.1%
box_pyramid_6 4096 - False ndarray cuda True 42.10 40.90 (35.92 ± 6.31) +2.9%
dex_hand 4096 - False field cuda - 98.20 94.90 (83.86 ± 13.87) +3.5%
dex_hand 4096 - False ndarray cuda - 80 75 (66 ± 11) +5.8%
duck_in_box_easy 30000 - False field cuda False 91.30 88.50 (80.54 ± 11.48) +3.2%
duck_in_box_easy 30000 - False field cuda True 62.20 61.50 (55.22 ± 7.43) +1.1%
duck_in_box_easy 30000 - False ndarray cuda False 71.70 68.60 (60.48 ± 12.42) +4.5%
duck_in_box_easy 30000 - False ndarray cuda True 48.80 49.50 (43.66 ± 6.66) -1.4%
duck_in_box_hard 0 - False field cpu - 56.70 54.60 (53.60 ± 2.09) +3.8%
duck_in_box_hard 0 - False ndarray cpu - 39.70 38.90 (37.72 ± 1.68) +2.1%
duck_in_box_hard 30000 - False field cuda False 90.30 84.50 (76.10 ± 12.93) +6.9%
duck_in_box_hard 30000 - False field cuda True 56.10 55.00 (48.32 ± 7.55) +2.0%
duck_in_box_hard 30000 - False ndarray cuda False 68.60 66.50 (56.64 ± 12.37) +3.2%
duck_in_box_hard 30000 - False ndarray cuda True 44.20 39.50 (36.34 ± 4.40) +11.9%
franka 30000 - False field cuda - 88.20 84.60 (72.46 ± 13.28) +4.3%
franka 30000 - False ndarray cuda - 66.70 66.10 (55.18 ± 12.43) +0.9%
franka_accessors 0 - False field cpu - 50.40 52.20 (51.48 ± 1.16) -3.4%
franka_accessors 0 - False ndarray cpu - 34.50 34.60 (34.84 ± 0.98) -0.3%
franka_accessors 30000 - False field cuda - 86.60 87.10 (74.86 ± 13.42) -0.6%
franka_accessors 30000 - False ndarray cuda - 66.90 65.80 (56.44 ± 11.29) +1.7%
franka_free 30000 - False field cuda - 88.20 91.70 (76.28 ± 14.76) -3.8%
franka_free 30000 - False ndarray cuda - 66.50 64.60 (55.74 ± 11.12) +2.9%
franka_random 0 - False field cpu - 49.50 53.40 (51.68 ± 2.09) -7.3%
franka_random 0 - False ndarray cpu - 34.60 34.50 (35.00 ± 0.38) +0.3%
franka_random 30000 CG False field cuda - 83.20 81.10 (71.84 ± 12.39) +2.6%
franka_random 30000 CG False ndarray cuda - 64.70 65.40 (54.58 ± 11.77) -1.1%
franka_random 30000 Newton False field cuda - 86.50 84.90 (73.16 ± 12.51) +1.9%
franka_random 30000 Newton False ndarray cuda - 68 64 (55 ± 11) +4.9%
franka_random 30000 - False field cuda False 84.40 85.50 (73.00 ± 11.63) -1.3%
franka_random 30000 - False field cuda True 53.20 55.50 (47.36 ± 8.25) -4.1%
franka_random 30000 - False ndarray cuda False 65.70 62.80 (54.48 ± 11.91) +4.6%
franka_random 30000 - False ndarray cuda True 41.40 40.70 (35.82 ± 6.22) +1.7%
g1_fall 4096 Newton False field cuda - 86.50 86.70 (73.88 ± 13.50) -0.2%
g1_fall 4096 Newton False ndarray cuda - 65.80 65.40 (55.00 ± 11.60) +0.6%
go2 4096 CG False field cuda False 86.40 84.30 (73.16 ± 13.94) +2.5%
go2 4096 CG False ndarray cuda False 66.80 67.80 (56.78 ± 11.12) -1.5%
go2 4096 Newton False field cuda False 87.40 86.50 (74.60 ± 13.11) +1.0%
go2 4096 Newton False ndarray cuda False 67.40 65.10 (56.00 ± 11.70) +3.5%
go2 4096 - False field cuda True 54.70 54.20 (47.66 ± 7.62) +0.9%
go2 4096 - False ndarray cuda True 41.80 41.10 (36.30 ± 6.26) +1.7%

Baselines considered: 5 commits

Memory usage

status env batch_size backend dtype gjk_collision constraint_solver current memory baseline memory [last (mean ± std)] (*1) Δ memory (*2)
anymal_random 30000 gpu field - - 12,528 12,592 (11,814 ± 863) -0.5%
anymal_random 30000 gpu ndarray - - 12,496 12,472 (11,769 ± 879) +0.2%
anymal_uniform 30000 gpu field - - 12,592 12,592 (11,832 ± 877) +0.0%
anymal_uniform 30000 gpu ndarray - - 12,560 12,560 (11,817 ± 891) +0.0%
anymal_uniform_kinematic 0 cpu field - - 806 806 (806 ± 0) +0.0%
anymal_uniform_kinematic 0 cpu ndarray - - 806 806 (806 ± 0) +0.0%
anymal_uniform_kinematic 30000 gpu field - - 12,960 12,960 (12,217 ± 891) +0.0%
anymal_uniform_kinematic 30000 gpu ndarray - - 12,928 12,928 (12,185 ± 891) +0.0%
anymal_zero 0 cpu field - - 806 806 (806 ± 0) +0.0%
anymal_zero 0 cpu ndarray - - 806 806 (806 ± 0) +0.0%
anymal_zero 30000 gpu field - - 12,592 12,536 (11,777 ± 894) +0.4%
anymal_zero 30000 gpu ndarray - - 12,560 12,472 (11,800 ± 877) +0.7%
box_pyramid_3 4096 gpu field - - 2,174 2,174 (2,097 ± 92) +0.0%
box_pyramid_3 4096 gpu ndarray - - 2,174 2,174 (2,097 ± 92) +0.0%
box_pyramid_4 4096 gpu field - - 3,056 3,056 (2,940 ± 138) +0.0%
box_pyramid_4 4096 gpu ndarray - - 3,056 3,056 (2,928 ± 153) +0.0%
box_pyramid_5 4096 gpu field - - 6,684 6,684 (6,492 ± 229) +0.0%
box_pyramid_5 4096 gpu ndarray - - 6,684 6,684 (6,492 ± 230) +0.0%
box_pyramid_6 4096 gpu field False - 9,722 9,722 (9,490 ± 277) +0.0%
box_pyramid_6 4096 gpu field True - 10,192 10,192 (9,744 ± 537) +0.0%
box_pyramid_6 4096 gpu ndarray False - 9,722 9,722 (9,490 ± 277) +0.0%
box_pyramid_6 4096 gpu ndarray True - 10,192 10,192 (9,744 ± 537) +0.0%
dex_hand 4096 gpu field - - 9,140 9,140 (8,840 ± 348) +0.0%
dex_hand 4096 gpu ndarray - - 9,112 9,140 (8,847 ± 351) -0.3%
duck_in_box_easy 30000 gpu field False - 3,384 3,384 (3,222 ± 195) +0.0%
duck_in_box_easy 30000 gpu field True - 3,992 3,992 (3,603 ± 460) +0.0%
duck_in_box_easy 30000 gpu ndarray False - 3,440 3,352 (3,228 ± 189) +2.6%
duck_in_box_easy 30000 gpu ndarray True - 3,952 3,952 (3,568 ± 460) +0.0%
duck_in_box_hard 0 cpu field - - 8 8 (8 ± 0) +0.0%
duck_in_box_hard 0 cpu ndarray - - 8 8 (8 ± 0) +0.0%
duck_in_box_hard 30000 gpu field False - 13,464 13,464 (12,220 ± 1,527) +0.0%
duck_in_box_hard 30000 gpu field True - 14,104 14,008 (12,547 ± 1,789) +0.7%
duck_in_box_hard 30000 gpu ndarray False - 13,432 13,432 (12,171 ± 1,552) +0.0%
duck_in_box_hard 30000 gpu ndarray True - 14,064 13,976 (12,534 ± 1,769) +0.6%
franka 30000 gpu field - - 16,418 16,354 (15,010 ± 1,638) +0.4%
franka 30000 gpu ndarray - - 16,322 16,322 (14,997 ± 1,641) +0.0%
franka_accessors 0 cpu field - - 1,222 1,222 (1,222 ± 0) +0.0%
franka_accessors 0 cpu ndarray - - 1,222 1,222 (1,222 ± 0) +0.0%
franka_accessors 30000 gpu field - - 16,346 16,346 (14,989 ± 1,628) +0.0%
franka_accessors 30000 gpu ndarray - - 16,314 16,314 (14,963 ± 1,620) +0.0%
franka_free 30000 gpu field - - 15,950 15,950 (14,612 ± 1,605) +0.0%
franka_free 30000 gpu ndarray - - 15,918 15,918 (14,561 ± 1,628) +0.0%
franka_random 0 cpu field - - 1,222 1,222 (1,222 ± 0) +0.0%
franka_random 0 cpu ndarray - - 1,222 1,222 (1,222 ± 0) +0.0%
franka_random 30000 gpu field False - 15,950 16,078 (14,625 ± 1,641) -0.8%
franka_random 30000 gpu field True - 16,568 16,600 (15,006 ± 1,899) -0.2%
franka_random 30000 gpu field - CG 16,000 16,000 (14,662 ± 1,605) +0.0%
franka_random 30000 gpu field - Newton 16,352 16,352 (14,995 ± 1,628) +0.0%
franka_random 30000 gpu ndarray False - 15,918 15,918 (14,612 ± 1,670) +0.0%
franka_random 30000 gpu ndarray True - 16,536 16,568 (14,968 ± 1,894) -0.2%
franka_random 30000 gpu ndarray - CG 15,968 16,032 (14,630 ± 1,631) -0.4%
franka_random 30000 gpu ndarray - Newton 16,384 16,384 (14,976 ± 1,638) +0.0%
g1_fall 4096 gpu field - Newton 4,830 4,830 (4,599 ± 276) +0.0%
g1_fall 4096 gpu ndarray - Newton 4,830 4,830 (4,644 ± 233) +0.0%
go2 4096 gpu field False CG 3,710 3,710 (3,479 ± 276) +0.0%
go2 4096 gpu field False Newton 4,062 4,062 (3,831 ± 276) +0.0%
go2 4096 gpu field True - 4,246 4,246 (3,810 ± 522) +0.0%
go2 4096 gpu ndarray False CG 3,710 3,710 (3,466 ± 291) +0.0%
go2 4096 gpu ndarray False Newton 4,062 4,062 (3,818 ± 291) +0.0%
go2 4096 gpu ndarray True - 4,246 4,246 (3,798 ± 537) +0.0%

Baselines considered: 5 commits

  • Commit 1: 9238414

  • Commit 2: cfef9de

  • Commit 3: 5fd3857

  • Commit 4: 64429b6

  • Commit 5: 986a116

  • (*1) last: last commit on main, mean/std: stats over commit hashes 5 commits if available.

  • (*2) Δ: relative difference between PR and last commit on main, i.e. (PR - main) / main * 100%.

Artifact: Download raw data