Skip to content

neighbors

Benchmarks of ordito.neighbors against every library that computes the same thing. Each chart shows the time of every library relative to ordito on CUDA (1x, in green): a longer bar took longer. The table under each chart lists every input the function was measured on. See Benchmarks for how to read and reproduce these numbers.

Measured on GPU: NVIDIA GeForce RTX 5090 · CPU: Intel Xeon w7-2495X

Summary

0.1x1x10x100x1000xordito (CUDA): the reference, 1xordito (CUDA)1xMeshLib: 8.3x ordito's time, geometric mean over 4 functions; slower than ordito in 4MeshLib8.3x (4)Open3D: 30x ordito's time, geometric mean over 9 functions; slower than ordito in 9Open3D30x (9)PyTorch3D (CUDA): 57x ordito's time, geometric mean over 6 functions; slower than ordito in 6PyTorch3D (CUDA)57x (6)SciPy: 74x ordito's time, geometric mean over 12 functions; slower than ordito in 12SciPy74x (12)libigl: 194x ordito's time, geometric mean over 7 functions; slower than ordito in 7libigl194x (7)
Time relative to ordito (CUDA), geometric mean over the neighbors functions both implement; in parentheses, the number of functions. Log scale. Runs stopped at the time limit are left out.
Values
Library Time relative to ordito Functions compared ordito faster in
MeshLib 8.3x 4 4
Open3D 30x 9 9
PyTorch3D (CUDA) 57x 6 6
SciPy 74x 12 12
libigl 194x 7 7

query_nearest_bvh_k7

0.1x1x10x100xordito (CUDA): 1.85 ms, 1x ordito's timeordito (CUDA)1x · 1.85 msPyTorch3D (CUDA): 43.89 ms, 24x ordito's timePyTorch3D (CUDA)24x · 43.89 msOpen3D: 117.91 ms, 64x ordito's timeOpen3D64x · 117.91 msSciPy: 147.45 ms, 80x ordito's timeSciPy80x · 147.45 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 1.85 ms 1x
PyTorch3D (CUDA) 43.89 ms 24x
Open3D 117.91 ms 64x
SciPy 147.45 ms 80x
libigl out of memory
All inputs
Input ordito (CUDA) libigl Open3D PyTorch3D (CUDA) SciPy
sphere_small 343.9 µs
bunny_decimated 416.8 µs 23.08 ms 3.02 ms 937.7 µs 8.45 ms
bunny 488.0 µs 250.71 ms 12.83 ms 3.78 ms 26.79 ms
dragon 1.85 ms out of memory 117.91 ms 43.89 ms 147.45 ms
happy_buddha 1.92 ms out of memory (predicted) 145.57 ms 55.84 ms 181.46 ms
lucy 51.67 ms out of memory (predicted) 5.343 s 2.120 s 6.364 s

query_nearest_bvh_k64

0.1x1x10x100xordito (CUDA): 3.49 ms, 1x ordito's timeordito (CUDA)1x · 3.49 msOpen3D: 120.30 ms, 34x ordito's timeOpen3D34x · 120.30 msSciPy: 275.25 ms, 79x ordito's timeSciPy79x · 275.25 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 3.49 ms 1x
Open3D 120.30 ms 34x
SciPy 275.25 ms 79x
libigl out of memory
All inputs
Input ordito (CUDA) libigl Open3D SciPy
sphere_small 733.5 µs
bunny_decimated 1.16 ms 50.73 ms 4.37 ms 47.75 ms
bunny 1.59 ms 308.48 ms 15.42 ms 126.40 ms
dragon 3.49 ms out of memory 120.30 ms 275.25 ms
happy_buddha 4.13 ms out of memory (predicted) 148.28 ms 332.02 ms
lucy 57.56 ms out of memory (predicted) 5.651 s 6.537 s

query_nearest_hashgrid_k7

0.1x1x10x100x1000xordito (CUDA): 1.23 ms, 1x ordito's timeordito (CUDA)1x · 1.23 msOpen3D: 121.78 ms, 99x ordito's timeOpen3D99x · 121.78 msPyTorch3D (CUDA): 149.37 ms, 121x ordito's timePyTorch3D (CUDA)121x · 149.37 msSciPy: 151.16 ms, 123x ordito's timeSciPy123x · 151.16 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 1.23 ms 1x
Open3D 121.78 ms 99x
PyTorch3D (CUDA) 149.37 ms 121x
SciPy 151.16 ms 123x
libigl out of memory
All inputs
Input ordito (CUDA) libigl Open3D PyTorch3D (CUDA) SciPy
sphere_small 229.8 µs
bunny_decimated 382.3 µs 22.50 ms 3.14 ms 8.58 ms 8.30 ms
bunny 535.5 µs 235.76 ms 12.91 ms 27.42 ms 27.11 ms
dragon 1.23 ms out of memory 121.78 ms 149.37 ms 151.16 ms
happy_buddha 1.27 ms out of memory (predicted) 153.61 ms 185.06 ms 193.88 ms
lucy 36.44 ms out of memory (predicted) 5.979 s 5.964 s 5.912 s

bvh_from_points

0.1x1x10x100x1000xordito (CUDA): 472.2 µs, 1x ordito's timeordito (CUDA)1x · 472.2 µsSciPy: 93.99 ms, 199x ordito's timeSciPy199x · 93.99 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · leaf_size=4 · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 472.2 µs 1x
SciPy 93.99 ms 199x
libigl out of memory
All inputs
Input ordito (CUDA) libigl SciPy
sphere_small leaf_size=4 156.6 µs
sphere_small leaf_size=32 175.0 µs
bunny_decimated leaf_size=4 166.0 µs 5.54 ms 1.31 ms
bunny_decimated leaf_size=32 176.9 µs 5.66 ms 1.31 ms
bunny leaf_size=4 179.7 µs 202.23 ms 6.32 ms
bunny leaf_size=32 180.6 µs 204.55 ms 6.33 ms
dragon leaf_size=4 472.2 µs out of memory 93.99 ms
dragon leaf_size=32 472.3 µs out of memory 95.23 ms
happy_buddha leaf_size=4 523.5 µs out of memory (predicted) 115.85 ms
happy_buddha leaf_size=32 524.6 µs out of memory (predicted) 114.42 ms
lucy leaf_size=4 12.40 ms out of memory (predicted) 4.287 s
lucy leaf_size=32 12.50 ms out of memory (predicted) 4.268 s

hashgrid_from_points

0.1x1x10x100x1000xordito (CUDA): 101.7 µs, 1x ordito's timeordito (CUDA)1x · 101.7 µsSciPy: 93.59 ms, 921x ordito's timeSciPy921x · 93.59 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · grid_bins=32 · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 101.7 µs 1x
SciPy 93.59 ms 921x
libigl out of memory
All inputs
Input ordito (CUDA) libigl SciPy
sphere_small grid_bins=32 49.6 µs
sphere_small grid_bins=256 141.7 µs
bunny_decimated grid_bins=32 89.5 µs 5.71 ms 1.28 ms
bunny_decimated grid_bins=256 165.6 µs 5.57 ms 1.31 ms
bunny grid_bins=32 90.2 µs 203.04 ms 6.74 ms
bunny grid_bins=256 166.9 µs 202.95 ms 6.34 ms
dragon grid_bins=32 101.7 µs out of memory 93.59 ms
dragon grid_bins=256 177.7 µs out of memory 93.64 ms
happy_buddha grid_bins=32 92.4 µs out of memory (predicted) 117.82 ms
happy_buddha grid_bins=256 180.9 µs out of memory (predicted) 113.43 ms
lucy grid_bins=32 861.3 µs out of memory (predicted) 4.272 s
lucy grid_bins=256 1.08 ms out of memory (predicted) 4.278 s

query_ball_bvh

0.1x1x10x100x1000xordito (CUDA): 351.6 µs, 1x ordito's timeordito (CUDA)1x · 351.6 µsOpen3D: 1.83 ms, 5.2x ordito's timeOpen3D5.2x · 1.83 msSciPy: 47.73 ms, 136x ordito's timeSciPy136x · 47.73 msPyTorch3D (CUDA): 50.68 ms, 144x ordito's timePyTorch3D (CUDA)144x · 50.68 ms
dragon (871 414 faces) · radius_scale=2.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 351.6 µs 1x
Open3D 1.83 ms 5.2x
SciPy 47.73 ms 136x
PyTorch3D (CUDA) 50.68 ms 144x
All inputs
Input ordito (CUDA) Open3D PyTorch3D (CUDA) SciPy
sphere_small radius_scale=2.0 246.9 µs
sphere_small radius_scale=4.0 540.6 µs
bunny_decimated radius_scale=2.0 306.4 µs 1.37 ms 18.40 ms 17.93 ms
bunny_decimated radius_scale=4.0 750.3 µs 2.42 ms 49.73 ms 47.89 ms
bunny radius_scale=2.0 306.8 µs 3.00 ms 45.53 ms 45.39 ms
bunny radius_scale=4.0 728.0 µs 5.46 ms 128.17 ms 128.77 ms
dragon radius_scale=2.0 351.6 µs 1.83 ms 50.68 ms 47.73 ms
dragon radius_scale=4.0 946.4 µs 4.27 ms 115.29 ms 120.80 ms
happy_buddha radius_scale=2.0 352.0 µs 1.67 ms 48.35 ms 47.38 ms
happy_buddha radius_scale=4.0 907.5 µs 4.16 ms 110.20 ms 120.45 ms
lucy radius_scale=2.0 208.3 µs 825.7 µs 75.87 ms 69.63 ms
lucy radius_scale=4.0 460.1 µs 1.41 ms 122.22 ms 122.91 ms

query_bvh_box

0.1x1x10x100x1000xordito (CUDA): 647.9 µs, 1x ordito's timeordito (CUDA)1x · 647.9 µsOpen3D: 186.99 ms, 289x ordito's timeOpen3D289x · 186.99 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 647.9 µs 1x
Open3D 186.99 ms 289x
All inputs
Input ordito (CUDA) Open3D
sphere_small 436.1 µs
bunny_decimated 589.2 µs 5.95 ms
bunny 557.9 µs 17.65 ms
dragon 647.9 µs 186.99 ms
happy_buddha 545.4 µs 306.65 ms
lucy 263.6 µs 9.843 s

query_ball_hashgrid

0.1x1x10x100x1000xordito (CUDA): 1.04 ms, 1x ordito's timeordito (CUDA)1x · 1.04 msOpen3D: 1.74 ms, 1.7x ordito's timeOpen3D1.7x · 1.74 msSciPy: 47.87 ms, 46x ordito's timeSciPy46x · 47.87 msPyTorch3D (CUDA): 117.84 ms, 114x ordito's timePyTorch3D (CUDA)114x · 117.84 ms
dragon (871 414 faces) · grid_bins=32 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.04 ms 1x
Open3D 1.74 ms 1.7x
SciPy 47.87 ms 46x
PyTorch3D (CUDA) 117.84 ms 114x
All inputs
Input ordito (CUDA) Open3D PyTorch3D (CUDA) SciPy
sphere_small grid_bins=32 271.5 µs
sphere_small grid_bins=256 269.3 µs
bunny_decimated grid_bins=32 349.7 µs 1.42 ms 2.08 ms 18.16 ms
bunny_decimated grid_bins=256 369.6 µs 1.47 ms 2.07 ms 18.25 ms
bunny grid_bins=32 433.4 µs 3.12 ms 10.84 ms 44.91 ms
bunny grid_bins=256 366.4 µs 3.10 ms 10.84 ms 45.38 ms
dragon grid_bins=32 1.04 ms 1.74 ms 117.84 ms 47.87 ms
dragon grid_bins=256 422.1 µs 1.71 ms 115.60 ms 47.85 ms
happy_buddha grid_bins=32 1.18 ms 1.64 ms 138.98 ms 52.94 ms
happy_buddha grid_bins=256 409.6 µs 1.71 ms 139.00 ms 45.92 ms
lucy grid_bins=32 31.20 ms 825.8 µs 3.575 s 69.90 ms
lucy grid_bins=256 372.1 µs 834.9 µs 3.575 s 71.36 ms

query_nearest_bvh_k1

0.1x1x10x100x1000xordito (CUDA): 625.7 µs, 1x ordito's timeordito (CUDA)1x · 625.7 µsMeshLib: 15.65 ms, 25x ordito's timeMeshLib25x · 15.65 msPyTorch3D (CUDA): 33.85 ms, 54x ordito's timePyTorch3D (CUDA)54x · 33.85 msOpen3D: 125.54 ms, 201x ordito's timeOpen3D201x · 125.54 msSciPy: 167.32 ms, 267x ordito's timeSciPy267x · 167.32 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 625.7 µs 1x
MeshLib 15.65 ms 25x
PyTorch3D (CUDA) 33.85 ms 54x
Open3D 125.54 ms 201x
SciPy 167.32 ms 267x
libigl out of memory
All inputs
Input ordito (CUDA) libigl MeshLib Open3D PyTorch3D (CUDA) SciPy
sphere_small 193.1 µs
bunny_decimated 226.1 µs 22.52 ms 534.1 µs 2.80 ms 666.5 µs 5.57 ms
bunny 259.6 µs 238.25 ms 1.73 ms 11.65 ms 2.82 ms 20.99 ms
dragon 625.7 µs out of memory 15.65 ms 125.54 ms 33.85 ms 167.32 ms
happy_buddha 808.5 µs out of memory (predicted) 16.02 ms 145.44 ms 40.85 ms 188.75 ms
lucy 17.02 ms out of memory (predicted) 614.42 ms 5.530 s 1.815 s 6.196 s

query_nearest_hashgrid_k1

0.1x1x10x100x1000xordito (CUDA): 981.3 µs, 1x ordito's timeordito (CUDA)1x · 981.3 µsMeshLib: 17.04 ms, 17x ordito's timeMeshLib17x · 17.04 msOpen3D: 131.70 ms, 134x ordito's timeOpen3D134x · 131.70 msSciPy: 145.69 ms, 148x ordito's timeSciPy148x · 145.69 msPyTorch3D (CUDA): 165.11 ms, 168x ordito's timePyTorch3D (CUDA)168x · 165.11 mslibigl: out of memorylibiglout of memory
dragon (871 414 faces) · time relative to ordito, log scale · a red cross is a run that left no time
Values
Library Median Relative to ordito
ordito (CUDA) 981.3 µs 1x
MeshLib 17.04 ms 17x
Open3D 131.70 ms 134x
SciPy 145.69 ms 148x
PyTorch3D (CUDA) 165.11 ms 168x
libigl out of memory
All inputs
Input ordito (CUDA) libigl MeshLib Open3D PyTorch3D (CUDA) SciPy
sphere_small 248.8 µs
bunny_decimated 280.6 µs 21.44 ms 647.8 µs 2.75 ms 5.23 ms 5.03 ms
bunny 321.7 µs 270.12 ms 1.80 ms 11.72 ms 19.80 ms 18.39 ms
dragon 981.3 µs out of memory 17.04 ms 131.70 ms 165.11 ms 145.69 ms
happy_buddha 1.06 ms out of memory (predicted) 16.87 ms 157.41 ms 190.42 ms 164.32 ms
lucy 18.29 ms out of memory (predicted) 613.10 ms 5.668 s 6.376 s 6.451 s

query_ball

0.01x0.1x1xSciPy: 60.17 ms, 0.58x ordito's timeSciPy0.58x · 60.17 msordito (CUDA): 103.19 ms, 1x ordito's timeordito (CUDA)1x · 103.19 ms
dragon (871 414 faces) · radius_scale=2.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
SciPy 60.17 ms 0.58x
ordito (CUDA) 103.19 ms 1x
All inputs
Input ordito (CUDA) SciPy
sphere_small radius_scale=2.0 3.38 ms
sphere_small radius_scale=4.0 3.68 ms
bunny_decimated radius_scale=2.0 10.63 ms 22.35 ms
bunny_decimated radius_scale=4.0 11.56 ms 61.99 ms
bunny radius_scale=2.0 28.15 ms 55.89 ms
bunny radius_scale=4.0 103.63 ms 163.65 ms
dragon radius_scale=2.0 103.19 ms 60.17 ms
dragon radius_scale=4.0 25.44 ms 146.93 ms
happy_buddha radius_scale=2.0 27.29 ms 63.94 ms
happy_buddha radius_scale=4.0 103.02 ms 149.76 ms
lucy radius_scale=2.0 25.62 ms 86.24 ms
lucy radius_scale=4.0 25.85 ms 144.54 ms

query_ball_count

0.1x1x10x100x1000xordito (CUDA): 189.3 µs, 1x ordito's timeordito (CUDA)1x · 189.3 µsSciPy: 52.25 ms, 276x ordito's timeSciPy276x · 52.25 ms
dragon (871 414 faces) · radius_scale=2.0 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 189.3 µs 1x
SciPy 52.25 ms 276x
All inputs
Input ordito (CUDA) SciPy
sphere_small radius_scale=2.0 119.4 µs
sphere_small radius_scale=4.0 277.6 µs
bunny_decimated radius_scale=2.0 163.1 µs 15.18 ms
bunny_decimated radius_scale=4.0 421.4 µs 29.27 ms
bunny radius_scale=2.0 167.3 µs 39.33 ms
bunny radius_scale=4.0 419.9 µs 69.71 ms
dragon radius_scale=2.0 189.3 µs 52.25 ms
dragon radius_scale=4.0 528.1 µs 92.06 ms
happy_buddha radius_scale=2.0 190.7 µs 49.48 ms
happy_buddha radius_scale=4.0 517.4 µs 92.45 ms
lucy radius_scale=2.0 103.8 µs 83.39 ms
lucy radius_scale=4.0 247.0 µs 146.27 ms

closest_pair

0.1x1x10x100x1000xordito (CUDA): 420.8 µs, 1x ordito's timeordito (CUDA)1x · 420.8 µsMeshLib: 7.88 ms, 19x ordito's timeMeshLib19x · 7.88 msSciPy: 125.84 ms, 299x ordito's timeSciPy299x · 125.84 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 420.8 µs 1x
MeshLib 7.88 ms 19x
SciPy 125.84 ms 299x
All inputs
Input ordito (CUDA) MeshLib SciPy
sphere_small 209.7 µs 619.3 µs 1.70 ms
sphere_med 357.5 µs 2.32 ms 28.75 ms
sphere_large 420.8 µs 7.88 ms 125.84 ms

nearest_neighbor_distance

0.1x1x10x100xordito (CUDA): 451.6 µs, 1x ordito's timeordito (CUDA)1x · 451.6 µsMeshLib: 7.34 ms, 16x ordito's timeMeshLib16x · 7.34 msOpen3D: 44.78 ms, 99x ordito's timeOpen3D99x · 44.78 ms
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 451.6 µs 1x
MeshLib 7.34 ms 16x
Open3D 44.78 ms 99x
All inputs
Input ordito (CUDA) MeshLib Open3D
sphere_small 230.7 µs 352.1 µs 622.7 µs
sphere_med 345.6 µs 2.08 ms 11.31 ms
sphere_large 451.6 µs 7.34 ms 44.78 ms

Without a reference

No other library computes these, so they have no comparison. ordito (CUDA)'s median time on the largest input it was measured on:

Function Input ordito (CUDA)
query_nearest_hashgrid_k7_off_cloud lucy offset_edges=8.0 58.73 ms
query_nearest_bvh_k7_off_cloud lucy offset_edges=8.0 126.88 ms
query_weighted_nearest lucy weight_spread=4.0 62.91 ms
bvh_from_bounds lucy 12.71 ms
query_bvh_ball lucy radius_scale=4.0 649.1 µs
knn_initial_radius sphere_large 83.3 µs
query_geodesic_ball lucy 732.33 ms