Skip to content

Skip pruning for degenerated contact buckets.

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

[BUG FIX] Skip contact pruning for degenerated buckets. #2836

Skip pruning for degenerated contact buckets.
02d7003
Select commit
Loading
Failed to load commit list.
GitHub Actions / Benchmark Comparison succeeded May 28, 2026 in 0s

Benchmark Comparison

✅ No regressions detected. See tables below.

Details

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

Runtime FPS

status env batch_size use_contact_island dtype backend gjk_collision constraint_solver current FPS baseline FPS [last (mean ± std)] (*1) Δ FPS (*2)
anymal_random 30000 False field cuda - - 9,399,346 9,571,715 (9,455,587 ± 63,053) -1.8%
anymal_random 30000 False ndarray cuda - - 7,671,405 7,718,057 (7,830,758 ± 148,614) -0.6%
anymal_uniform 30000 False field cuda - - 12,415,188 12,301,404 (12,361,856 ± 133,917) +0.9%
anymal_uniform 30000 False ndarray cuda - - 10,633,052 10,432,232 (10,527,428 ± 120,607) +1.9%
anymal_uniform_kinematic 0 False field cpu - - 1,565 1,608 (1,586 ± 17) -2.7%
anymal_uniform_kinematic 0 False ndarray cpu - - 940 964 (961 ± 8) -2.5%
anymal_uniform_kinematic 30000 False field cuda - - 10,357,517 10,484,751 (10,406,225 ± 200,139) -1.2%
anymal_uniform_kinematic 30000 False ndarray cuda - - 8,246,875 8,272,285 (8,239,523 ± 55,544) -0.3%
anymal_zero 0 False field cpu - - 5,108 5,034 (5,059 ± 29) +1.5%
anymal_zero 0 False ndarray cpu - - 3,124 3,118 (3,103 ± 13) +0.2%
anymal_zero 30000 False field cuda - - 19,293,157 19,187,597 (19,315,923 ± 241,533) +0.6%
anymal_zero 30000 False ndarray cuda - - 14,302,023 14,731,008 (14,534,886 ± 139,293) -2.9%
box_pyramid_3 4096 False field cuda - - 1,554,745 1,566,977 (1,569,662 ± 17,173) -0.8%
box_pyramid_3 4096 False ndarray cuda - - 1,109,694 1,132,121 (1,119,245 ± 8,325) -2.0%
box_pyramid_4 4096 False field cuda - - 618,930 625,794 (621,446 ± 3,658) -1.1%
box_pyramid_4 4096 False ndarray cuda - - 470,470 473,658 (470,580 ± 4,283) -0.7%
box_pyramid_5 4096 False field cuda - - 217,426 217,197 (216,534 ± 808) +0.1%
box_pyramid_5 4096 False ndarray cuda - - 173,138 173,558 (171,864 ± 2,417) -0.2%
box_pyramid_6 4096 False field cuda False - 84,060 83,906 (83,079 ± 502) +0.2%
box_pyramid_6 4096 False field cuda True - 87,058 86,771 (86,344 ± 675) +0.3%
box_pyramid_6 4096 False ndarray cuda False - 71,821 72,994 (71,629 ± 1,037) -1.6%
box_pyramid_6 4096 False ndarray cuda True - 73,554 74,669 (73,241 ± 1,025) -1.5%
dex_hand 4096 False field cuda - - 24,556 25,335 (25,319 ± 167) -3.1%
dex_hand 4096 False ndarray cuda - - 19,061 19,681 (19,327 ± 182) -3.2%
duck_in_box_easy 30000 False field cuda False - 26,827,839 27,218,416 (26,810,599 ± 426,628) -1.4%
duck_in_box_easy 30000 False field cuda True - 9,532,126 9,768,504 (9,638,895 ± 147,179) -2.4%
duck_in_box_easy 30000 False ndarray cuda False - 20,160,883 20,109,181 (20,191,015 ± 127,565) +0.3%
duck_in_box_easy 30000 False ndarray cuda True - 8,600,261 8,452,205 (8,463,033 ± 71,543) +1.8%
duck_in_box_hard 0 False field cpu - - 3,997 4,003 (3,980 ± 25) -0.1%
duck_in_box_hard 0 False ndarray cpu - - 2,689 2,708 (2,698 ± 37) -0.7%
duck_in_box_hard 30000 False field cuda False - 10,720,805 10,969,343 (10,736,619 ± 125,956) -2.3%
duck_in_box_hard 30000 False field cuda True - 3,305,821 3,251,795 (3,304,161 ± 45,787) +1.7%
duck_in_box_hard 30000 False ndarray cuda False - 7,918,084 8,135,530 (7,971,738 ± 131,651) -2.7%
duck_in_box_hard 30000 False ndarray cuda True - 2,728,734 2,857,094 (2,776,174 ± 45,387) -4.5%
franka 30000 False field cuda - - 22,937,276 22,849,973 (22,373,178 ± 402,859) +0.4%
franka 30000 False ndarray cuda - - 16,410,025 16,694,099 (16,399,939 ± 367,869) -1.7%
franka_accessors 0 False field cpu - - 1,001 1,014 (1,006 ± 17) -1.3%
franka_accessors 0 False ndarray cpu - - 786 816 (816 ± 16) -3.7%
franka_accessors 30000 False field cuda - - 15,292,891 15,408,616 (15,263,310 ± 119,230) -0.8%
franka_accessors 30000 False ndarray cuda - - 11,256,496 11,609,379 (11,361,044 ± 164,077) -3.0%
franka_free 30000 False field cuda - - 32,931,705 33,609,214 (33,127,158 ± 394,385) -2.0%
franka_free 30000 False ndarray cuda - - 21,130,291 21,114,552 (20,984,838 ± 134,296) +0.1%
franka_random 0 False field cpu - - 4,423 4,457 (4,466 ± 32) -0.8%
franka_random 0 False ndarray cpu - - 2,799 2,815 (2,847 ± 49) -0.6%
franka_random 30000 False field cuda False - 17,012,174 16,686,276 (16,655,709 ± 263,790) +2.0%
franka_random 30000 False field cuda True - 11,716,274 11,468,730 (11,447,665 ± 71,820) +2.2%
franka_random 30000 False field cuda - CG 16,740,499 16,598,155 (16,674,191 ± 171,463) +0.9%
franka_random 30000 False field cuda - Newton 16,549,627 16,909,629 (16,620,678 ± 202,701) -2.1%
franka_random 30000 False ndarray cuda False - 12,475,164 12,785,875 (12,545,138 ± 125,759) -2.4%
franka_random 30000 False ndarray cuda True - 8,714,448 8,843,781 (8,678,165 ± 91,967) -1.5%
franka_random 30000 False ndarray cuda - CG 12,406,479 12,510,147 (12,570,312 ± 291,312) -0.8%
franka_random 30000 False ndarray cuda - Newton 12,414,521 12,500,737 (12,650,850 ± 265,320) -0.7%
g1_fall 4096 False field cuda - Newton 1,573,960 1,614,989 (1,617,449 ± 9,651) -2.5%
g1_fall 4096 False ndarray cuda - Newton 1,117,079 1,143,268 (1,153,031 ± 8,548) -2.3%
go2 4096 False field cuda False CG 4,671,094 4,635,553 (4,635,303 ± 36,410) +0.8%
go2 4096 False field cuda False Newton 5,492,835 5,608,229 (5,490,291 ± 64,886) -2.1%
go2 4096 False field cuda True - 3,751,346 3,747,260 (3,729,764 ± 37,288) +0.1%
go2 4096 False ndarray cuda False CG 3,067,002 3,062,247 (3,071,425 ± 14,810) +0.2%
go2 4096 False ndarray cuda False Newton 3,417,603 3,426,440 (3,441,942 ± 23,907) -0.3%
go2 4096 False ndarray cuda True - 2,484,971 2,484,457 (2,470,472 ± 15,251) +0.0%
shadow_hand_cubes 0 False field cpu - - 39 39 (39 ± 0) +0.0%
shadow_hand_cubes 0 False ndarray cpu - - 31 31 (31 ± 0) +0.0%
shadow_hand_cubes_sparse 0 False field cpu - - 62 62 (61 ± 0) +0.0%
shadow_hand_cubes_sparse 0 False ndarray cpu - - 43 43 (42 ± 0) +0.0%

Baselines considered: 5 commits

Compile Time

status env batch_size use_contact_island dtype backend gjk_collision constraint_solver current compile baseline compile [last (mean ± std)] (*1) Δ compile (*2)
anymal_random 30000 False field cuda - - 75.50 75.90 (76.00 ± 0.45) -0.5%
anymal_random 30000 False ndarray cuda - - 69 69 (69 ± 1) +0.0%
anymal_uniform 30000 False field cuda - - 75.60 75.60 (74.04 ± 1.43) +0.0%
anymal_uniform 30000 False ndarray cuda - - 68.50 66.70 (68.52 ± 1.28) +2.7%
anymal_uniform_kinematic 0 False field cpu - - 40.30 41.10 (40.14 ± 0.50) -1.9%
anymal_uniform_kinematic 0 False ndarray cpu - - 34.90 34.50 (35.20 ± 0.66) +1.2%
anymal_uniform_kinematic 30000 False field cuda - - 74.80 74.00 (74.90 ± 0.64) +1.1%
anymal_uniform_kinematic 30000 False ndarray cuda - - 68.30 68.90 (68.06 ± 0.84) -0.9%
anymal_zero 0 False field cpu - - 36.60 35.90 (36.02 ± 0.36) +1.9%
anymal_zero 0 False ndarray cpu - - 31.30 30.80 (31.10 ± 0.16) +1.6%
anymal_zero 30000 False field cuda - - 75 75 (76 ± 0) -1.1%
anymal_zero 30000 False ndarray cuda - - 65.90 68.40 (69.06 ± 0.45) -3.7%
box_pyramid_3 4096 False field cuda - - 72.50 73.60 (74.96 ± 1.60) -1.5%
box_pyramid_3 4096 False ndarray cuda - - 69.60 70.30 (68.32 ± 1.77) -1.0%
box_pyramid_4 4096 False field cuda - - 81.60 79.90 (87.96 ± 5.85) +2.1%
box_pyramid_4 4096 False ndarray cuda - - 73.90 74.20 (79.42 ± 6.10) -0.4%
box_pyramid_5 4096 False field cuda - - 92.80 93.50 (89.26 ± 5.71) -0.7%
box_pyramid_5 4096 False ndarray cuda - - 88 86 (79 ± 6) +2.1%
box_pyramid_6 4096 False field cuda False - 83.40 93.60 (91.52 ± 4.82) -10.9%
box_pyramid_6 4096 False field cuda True - 72.70 60.40 (69.92 ± 4.67) +20.4%
box_pyramid_6 4096 False ndarray cuda False - 74.90 85.80 (79.74 ± 4.91) -12.7%
box_pyramid_6 4096 False ndarray cuda True - 65.30 54.40 (57.18 ± 4.45) +20.0%
dex_hand 4096 False field cuda - - 103.10 102.20 (104.72 ± 1.76) +0.9%
dex_hand 4096 False ndarray cuda - - 97.30 95.90 (96.54 ± 0.49) +1.5%
duck_in_box_easy 30000 False field cuda False - 71.60 71.20 (73.36 ± 1.12) +0.6%
duck_in_box_easy 30000 False field cuda True - 51.10 50.90 (50.82 ± 0.35) +0.4%
duck_in_box_easy 30000 False ndarray cuda False - 68.30 69.00 (67.84 ± 1.26) -1.0%
duck_in_box_easy 30000 False ndarray cuda True - 45.20 44.10 (44.78 ± 0.51) +2.5%
duck_in_box_hard 0 False field cpu - - 39.20 38.80 (39.06 ± 0.23) +1.0%
duck_in_box_hard 0 False ndarray cpu - - 34.70 34.30 (34.32 ± 0.35) +1.2%
duck_in_box_hard 30000 False field cuda False - 72.20 73.00 (72.30 ± 0.97) -1.1%
duck_in_box_hard 30000 False field cuda True - 51.20 50.70 (51.54 ± 0.64) +1.0%
duck_in_box_hard 30000 False ndarray cuda False - 64.70 66.80 (66.20 ± 0.43) -3.1%
duck_in_box_hard 30000 False ndarray cuda True - 44.50 44.70 (45.60 ± 0.67) -0.4%
franka 30000 False field cuda - - 71.80 70.10 (70.38 ± 0.42) +2.4%
franka 30000 False ndarray cuda - - 63.90 63.00 (63.10 ± 0.42) +1.4%
franka_accessors 0 False field cpu - - 36.70 36.60 (36.46 ± 0.30) +0.3%
franka_accessors 0 False ndarray cpu - - 32.50 31.60 (32.28 ± 0.59) +2.8%
franka_accessors 30000 False field cuda - - 71.10 72.10 (71.34 ± 1.18) -1.4%
franka_accessors 30000 False ndarray cuda - - 62.80 63.90 (63.78 ± 0.49) -1.7%
franka_free 30000 False field cuda - - 69.20 69.30 (69.46 ± 0.92) -0.1%
franka_free 30000 False ndarray cuda - - 62.50 62.70 (62.78 ± 0.34) -0.3%
franka_random 0 False field cpu - - 35.90 35.80 (36.14 ± 0.33) +0.3%
franka_random 0 False ndarray cpu - - 31.20 30.80 (31.16 ± 0.43) +1.3%
franka_random 30000 False field cuda False - 69.80 68.50 (69.36 ± 0.49) +1.9%
franka_random 30000 False field cuda True - 49.20 48.40 (48.76 ± 0.36) +1.7%
franka_random 30000 False field cuda - CG 69.70 68.90 (69.48 ± 0.73) +1.2%
franka_random 30000 False field cuda - Newton 69.50 70.50 (70.56 ± 0.33) -1.4%
franka_random 30000 False ndarray cuda False - 62.90 63.40 (63.32 ± 0.76) -0.8%
franka_random 30000 False ndarray cuda True - 41.90 42.40 (41.92 ± 0.24) -1.2%
franka_random 30000 False ndarray cuda - CG 61.50 62.10 (62.92 ± 0.65) -1.0%
franka_random 30000 False ndarray cuda - Newton 63.40 62.90 (63.50 ± 0.69) +0.8%
g1_fall 4096 False field cuda - Newton 75.50 70.80 (74.46 ± 2.63) +6.6%
g1_fall 4096 False ndarray cuda - Newton 65.60 69.30 (67.88 ± 1.31) -5.3%
go2 4096 False field cuda False CG 69.70 68.90 (68.90 ± 0.49) +1.2%
go2 4096 False field cuda False Newton 92.40 82.00 (84.52 ± 4.65) +12.7%
go2 4096 False field cuda True - 59 72 (69 ± 4) -18.4%
go2 4096 False ndarray cuda False CG 63.60 63.70 (63.48 ± 0.65) -0.2%
go2 4096 False ndarray cuda False Newton 73.90 86.40 (82.34 ± 6.24) -14.5%
go2 4096 False ndarray cuda True - 53.30 65.00 (58.46 ± 5.52) -18.0%
shadow_hand_cubes 0 False field cpu - - 37.70 37.70 (37.94 ± 0.29) +0.0%
shadow_hand_cubes 0 False ndarray cpu - - 32.80 33.30 (32.96 ± 0.29) -1.5%
shadow_hand_cubes_sparse 0 False field cpu - - 37.30 37.30 (37.06 ± 0.33) +0.0%
shadow_hand_cubes_sparse 0 False ndarray cpu - - 32.70 32.40 (32.40 ± 0.39) +0.9%

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,690 12,690 (12,690 ± 0) +0.0%
anymal_random 30000 gpu ndarray - - 12,658 12,658 (12,659 ± 3) +0.0%
anymal_uniform 30000 gpu field - - 12,690 12,690 (12,690 ± 0) +0.0%
anymal_uniform 30000 gpu ndarray - - 12,658 12,658 (12,658 ± 0) +0.0%
anymal_uniform_kinematic 0 cpu field - - 952 952 (952 ± 0) +0.0%
anymal_uniform_kinematic 0 cpu ndarray - - 984 1,016 (1,009 ± 12) -3.1%
anymal_uniform_kinematic 30000 gpu field - - 12,962 13,026 (13,026 ± 0) -0.5%
anymal_uniform_kinematic 30000 gpu ndarray - - 13,026 13,026 (13,026 ± 0) +0.0%
anymal_zero 0 cpu field - - 920 920 (920 ± 0) +0.0%
anymal_zero 0 cpu ndarray - - 1,016 1,016 (1,016 ± 0) +0.0%
anymal_zero 30000 gpu field - - 12,690 12,690 (12,690 ± 0) +0.0%
anymal_zero 30000 gpu ndarray - - 12,658 12,570 (12,640 ± 34) +0.7%
box_pyramid_3 4096 gpu field - - 2,048 2,048 (2,048 ± 0) +0.0%
box_pyramid_3 4096 gpu ndarray - - 2,048 2,048 (2,048 ± 0) +0.0%
box_pyramid_4 4096 gpu field - - 2,982 2,950 (2,956 ± 12) +1.1%
box_pyramid_4 4096 gpu ndarray - - 2,950 2,950 (2,956 ± 12) +0.0%
box_pyramid_5 4096 gpu field - - 6,598 6,598 (6,598 ± 0) +0.0%
box_pyramid_5 4096 gpu ndarray - - 6,598 6,598 (6,598 ± 0) +0.0%
box_pyramid_6 4096 gpu field False - 9,628 9,628 (9,628 ± 0) +0.0%
box_pyramid_6 4096 gpu field True - 10,182 10,182 (10,182 ± 0) +0.0%
box_pyramid_6 4096 gpu ndarray False - 9,628 9,628 (9,628 ± 0) +0.0%
box_pyramid_6 4096 gpu ndarray True - 10,182 10,182 (10,182 ± 0) +0.0%
dex_hand 4096 gpu field - - 9,082 9,082 (9,082 ± 0) +0.0%
dex_hand 4096 gpu ndarray - - 9,050 9,078 (9,066 ± 13) -0.3%
duck_in_box_easy 30000 gpu field False - 3,386 3,378 (3,378 ± 0) +0.2%
duck_in_box_easy 30000 gpu field True - 4,026 4,018 (4,018 ± 0) +0.2%
duck_in_box_easy 30000 gpu ndarray False - 3,378 3,378 (3,379 ± 3) +0.0%
duck_in_box_easy 30000 gpu ndarray True - 3,986 3,986 (3,986 ± 0) +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,746 13,746 (13,749 ± 3) +0.0%
duck_in_box_hard 30000 gpu field True - 14,386 14,394 (14,387 ± 3) -0.1%
duck_in_box_hard 30000 gpu ndarray False - 13,746 13,746 (13,747 ± 3) +0.0%
duck_in_box_hard 30000 gpu ndarray True - 14,354 14,386 (14,379 ± 12) -0.2%
franka 30000 gpu field - - 16,580 16,580 (16,580 ± 0) +0.0%
franka 30000 gpu ndarray - - 16,612 16,548 (16,567 ± 15) +0.4%
franka_accessors 0 cpu field - - 1,304 1,304 (1,304 ± 0) +0.0%
franka_accessors 0 cpu ndarray - - 1,400 1,400 (1,400 ± 0) +0.0%
franka_accessors 30000 gpu field - - 16,572 16,700 (16,610 ± 50) -0.8%
franka_accessors 30000 gpu ndarray - - 16,540 16,540 (16,572 ± 48) +0.0%
franka_free 30000 gpu field - - 16,196 16,196 (16,213 ± 21) +0.0%
franka_free 30000 gpu ndarray - - 16,196 16,196 (16,185 ± 17) +0.0%
franka_random 0 cpu field - - 1,304 1,304 (1,304 ± 0) +0.0%
franka_random 0 cpu ndarray - - 1,400 1,400 (1,400 ± 0) +0.0%
franka_random 30000 gpu field False - 16,196 16,196 (16,226 ± 41) +0.0%
franka_random 30000 gpu field True - 16,890 16,890 (16,915 ± 36) +0.0%
franka_random 30000 gpu field - CG 16,226 16,290 (16,290 ± 39) -0.4%
franka_random 30000 gpu field - Newton 16,578 16,578 (16,616 ± 50) +0.0%
franka_random 30000 gpu ndarray False - 16,164 16,196 (16,189 ± 12) -0.2%
franka_random 30000 gpu ndarray True - 16,890 16,890 (16,890 ± 0) +0.0%
franka_random 30000 gpu ndarray - CG 16,226 16,194 (16,219 ± 23) +0.2%
franka_random 30000 gpu ndarray - Newton 16,578 16,546 (16,565 ± 25) +0.2%
g1_fall 4096 gpu field - Newton 4,768 4,768 (4,768 ± 0) +0.0%
g1_fall 4096 gpu ndarray - Newton 4,768 4,768 (4,768 ± 0) +0.0%
go2 4096 gpu field False CG 3,616 3,616 (3,616 ± 0) +0.0%
go2 4096 gpu field False Newton 3,968 3,968 (3,968 ± 0) +0.0%
go2 4096 gpu field True - 4,280 4,280 (4,280 ± 0) +0.0%
go2 4096 gpu ndarray False CG 3,616 3,616 (3,616 ± 0) +0.0%
go2 4096 gpu ndarray False Newton 3,968 3,968 (3,968 ± 0) +0.0%
go2 4096 gpu ndarray True - 4,280 4,280 (4,273 ± 12) +0.0%
shadow_hand_cubes 0 cpu field - - 1,344 1,344 (1,344 ± 0) +0.0%
shadow_hand_cubes 0 cpu ndarray - - 1,440 1,408 (1,420 ± 15) +2.3%
shadow_hand_cubes_sparse 0 cpu field - - 1,304 1,304 (1,304 ± 0) +0.0%
shadow_hand_cubes_sparse 0 cpu ndarray - - 1,400 1,400 (1,400 ± 0) +0.0%

Baselines considered: 5 commits

  • Commit 1: 6007f26

  • Commit 2: d7fabbb

  • Commit 3: 192b528

  • Commit 4: 78dc129

  • Commit 5: 93a064f

  • (*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