Skip to content

voxels

Benchmarks of ordito.voxels 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.01x0.1x1x10x100xPyTorch3D (CUDA): 0.76x ordito's time, geometric mean over 2 functions; slower than ordito in 1PyTorch3D (CUDA)0.76x (2)ordito (CUDA): the reference, 1xordito (CUDA)1xSciPy: 3.6x ordito's time, geometric mean over 1 functions; slower than ordito in 1SciPy3.6x (1)MeshLib: 4.3x ordito's time, geometric mean over 4 functions; slower than ordito in 2MeshLib4.3x (4)trimesh: 18x ordito's time, geometric mean over 6 functions; slower than ordito in 6trimesh18x (6)libigl: 18x ordito's time, geometric mean over 2 functions; slower than ordito in 2libigl18x (2)Open3D: 46x ordito's time, geometric mean over 4 functions; slower than ordito in 4Open3D46x (4)PyVista: 76x ordito's time, geometric mean over 3 functions; slower than ordito in 3PyVista76x (3)
Time relative to ordito (CUDA), geometric mean over the voxels 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
PyTorch3D (CUDA) 0.76x 2 1
SciPy 3.6x 1 1
MeshLib 4.3x 4 2
trimesh 18x 6 6
libigl 18x 2 2
Open3D 46x 4 4
PyVista 76x 3 3

voxelize_mesh

0.1x1x10x100x1000x10000xordito (CUDA): 636.0 µs, 1x ordito's timeordito (CUDA)1x · 636.0 µsMeshLib: 109.34 ms, 172x ordito's timeMeshLib172x · 109.34 msOpen3D: 161.89 ms, 255x ordito's timeOpen3D255x · 161.89 msPyVista: 255.97 ms, 402x ordito's timePyVista402x · 255.97 mstrimesh: 655.79 ms, 1031x ordito's timetrimesh1031x · 655.79 ms
dragon (871 414 faces) · divisor=64 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 636.0 µs 1x
MeshLib 109.34 ms 172x
Open3D 161.89 ms 255x
PyVista 255.97 ms 402x
trimesh 655.79 ms 1031x
All inputs
Input ordito (CUDA) MeshLib Open3D PyVista trimesh
sphere_small divisor=64 314.8 µs
sphere_small divisor=256 385.6 µs
bunny_decimated divisor=64 345.0 µs 16.82 ms 7.08 ms 8.89 ms 58.49 ms
bunny_decimated divisor=256 411.0 µs 58.38 ms 33.79 ms 21.29 ms 1.230 s
bunny divisor=64 337.3 µs 23.65 ms 14.20 ms 25.95 ms 87.20 ms
bunny divisor=256 392.4 µs 95.18 ms 51.56 ms 50.72 ms 1.664 s
dragon divisor=64 636.0 µs 109.34 ms 161.89 ms 255.97 ms 655.79 ms
dragon divisor=256 963.3 µs 192.02 ms 249.76 ms 332.24 ms 2.818 s
happy_buddha divisor=64 697.6 µs 132.16 ms 200.11 ms 321.47 ms 819.21 ms
happy_buddha divisor=256 1.03 ms 210.17 ms 300.41 ms 412.04 ms 3.188 s
lucy divisor=64 16.70 ms 2.508 s 4.174 s 9.121 s 25.426 s
lucy divisor=256 18.26 ms 2.801 s 4.637 s 10.884 s 51.724 s

voxelize_points

0.1x1x10x100xordito (CUDA): 372.7 µs, 1x ordito's timeordito (CUDA)1x · 372.7 µsOpen3D: 8.28 ms, 22x ordito's timeOpen3D22x · 8.28 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 372.7 µs 1x
Open3D 8.28 ms 22x
All inputs
Input ordito (CUDA) Open3D
sphere_small 357.6 µs
bunny_decimated 314.4 µs 876.2 µs
bunny 304.8 µs 1.78 ms
dragon 372.7 µs 8.28 ms
happy_buddha 385.7 µs 10.10 ms
lucy 7.06 ms 225.59 ms

voxel_down_sample

0.1x1x10x100xordito (CUDA): 309.3 µs, 1x ordito's timeordito (CUDA)1x · 309.3 µsMeshLib: 5.93 ms, 19x ordito's timeMeshLib19x · 5.93 msOpen3D: 7.04 ms, 23x ordito's timeOpen3D23x · 7.04 ms
dragon (871 414 faces) · divisor=64 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 309.3 µs 1x
MeshLib 5.93 ms 19x
Open3D 7.04 ms 23x
All inputs
Input ordito (CUDA) MeshLib Open3D
sphere_small divisor=64 284.0 µs
sphere_small divisor=256 316.8 µs
bunny_decimated divisor=64 227.1 µs 306.8 µs 504.9 µs
bunny_decimated divisor=256 286.8 µs 5.50 ms 748.0 µs
bunny divisor=64 228.1 µs 851.0 µs 1.05 ms
bunny divisor=256 247.1 µs 5.90 ms 4.44 ms
dragon divisor=64 309.3 µs 5.93 ms 7.04 ms
dragon divisor=256 293.5 µs 12.46 ms 18.50 ms
happy_buddha divisor=64 342.8 µs 7.09 ms 8.26 ms
happy_buddha divisor=256 330.2 µs 13.74 ms 21.92 ms
lucy divisor=64 5.30 ms 122.73 ms 237.76 ms
lucy divisor=256 2.59 ms 148.80 ms 247.49 ms

occupancy_at_points

0.1x1x10x100xordito (CUDA): 24.2 µs, 1x ordito's timeordito (CUDA)1x · 24.2 µsOpen3D: 424.3 µs, 18x ordito's timeOpen3D18x · 424.3 µs
dragon (871 414 faces) · n_queries=10000 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 24.2 µs 1x
Open3D 424.3 µs 18x
All inputs
Input ordito (CUDA) Open3D
sphere_small n_queries=10000 24.2 µs
sphere_small n_queries=1000000 31.7 µs
bunny_decimated n_queries=10000 27.8 µs 309.6 µs
bunny_decimated n_queries=1000000 29.6 µs 33.67 ms
bunny n_queries=10000 22.1 µs 331.6 µs
bunny n_queries=1000000 31.5 µs 38.07 ms
dragon n_queries=10000 24.2 µs 424.3 µs
dragon n_queries=1000000 31.6 µs 40.69 ms
happy_buddha n_queries=10000 24.1 µs 358.6 µs
happy_buddha n_queries=1000000 31.9 µs 43.59 ms
lucy n_queries=10000 25.6 µs 426.5 µs
lucy n_queries=1000000 37.3 µs 44.77 ms

dilate

0.01x0.1x1x10xMeshLib: 147.2 µs, 0.44x ordito's timeMeshLib0.44x · 147.2 µsordito (CUDA): 331.5 µs, 1x ordito's timeordito (CUDA)1x · 331.5 µstrimesh: 1.59 ms, 4.8x ordito's timetrimesh4.8x · 1.59 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 147.2 µs 0.44x
ordito (CUDA) 331.5 µs 1x
trimesh 1.59 ms 4.8x
All inputs
Input ordito (CUDA) MeshLib trimesh
sphere_small 346.0 µs
bunny_decimated 322.7 µs 100.4 µs 1.50 ms
bunny 331.9 µs 255.4 µs 1.39 ms
dragon 331.5 µs 147.2 µs 1.59 ms
happy_buddha 328.0 µs 171.3 µs 1.51 ms
lucy 322.2 µs 173.0 µs 1.33 ms

fill_cavities

0.1x1x10xordito (CUDA): 460.9 µs, 1x ordito's timeordito (CUDA)1x · 460.9 µstrimesh: 3.56 ms, 7.7x ordito's timetrimesh7.7x · 3.56 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 460.9 µs 1x
trimesh 3.56 ms 7.7x
All inputs
Input ordito (CUDA) trimesh
sphere_small 503.6 µs
bunny_decimated 481.1 µs 4.46 ms
bunny 459.2 µs 4.73 ms
dragon 460.9 µs 3.56 ms
happy_buddha 457.9 µs 2.90 ms
lucy 452.6 µs 2.76 ms

fill_orthographic

0.1x1x10xordito (CUDA): 447.0 µs, 1x ordito's timeordito (CUDA)1x · 447.0 µstrimesh: 3.30 ms, 7.4x ordito's timetrimesh7.4x · 3.30 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 447.0 µs 1x
trimesh 3.30 ms 7.4x
All inputs
Input ordito (CUDA) trimesh
sphere_small 471.7 µs
bunny_decimated 480.3 µs 3.87 ms
bunny 469.1 µs 3.87 ms
dragon 447.0 µs 3.30 ms
happy_buddha 440.9 µs 2.77 ms
lucy 455.8 µs 2.34 ms

to_boxes

0.1x1x10x100xordito (CUDA): 715.7 µs, 1x ordito's timeordito (CUDA)1x · 715.7 µsPyVista: 16.58 ms, 23x ordito's timePyVista23x · 16.58 mstrimesh: 21.54 ms, 30x ordito's timetrimesh30x · 21.54 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 715.7 µs 1x
PyVista 16.58 ms 23x
trimesh 21.54 ms 30x
All inputs
Input ordito (CUDA) PyVista trimesh
sphere_small 776.5 µs
bunny_decimated 691.4 µs 13.26 ms 20.28 ms
bunny 685.9 µs 13.55 ms 19.74 ms
dragon 715.7 µs 16.58 ms 21.54 ms
happy_buddha 719.4 µs 15.55 ms 23.06 ms
lucy 670.6 µs 10.79 ms 15.47 ms

voxel_corners

0.1x1x10xordito (CUDA): 588.4 µs, 1x ordito's timeordito (CUDA)1x · 588.4 µslibigl: 4.42 ms, 7.5x ordito's timelibigl7.5x · 4.42 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 588.4 µs 1x
libigl 4.42 ms 7.5x
All inputs
Input ordito (CUDA) libigl
sphere_small 608.7 µs
bunny_decimated 606.3 µs 3.77 ms
bunny 586.3 µs 4.00 ms
dragon 588.4 µs 4.42 ms
happy_buddha 623.7 µs 4.39 ms
lucy 569.5 µs 2.84 ms

splat_onto_grid

0.1x1x10xordito (CUDA): 119.8 µs, 1x ordito's timeordito (CUDA)1x · 119.8 µsPyTorch3D (CUDA): 137.4 µs, 1.1x ordito's timePyTorch3D (CUDA)1.1x · 137.4 µs
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 119.8 µs 1x
PyTorch3D (CUDA) 137.4 µs 1.1x
All inputs
Input ordito (CUDA) PyTorch3D (CUDA)
sphere_small 51.3 µs 121.7 µs
sphere_med 58.5 µs 114.3 µs
sphere_large 119.8 µs 137.4 µs

sample_grid_trilinear

0.01x0.1x1xPyTorch3D (CUDA): 13.5 µs, 0.35x ordito's timePyTorch3D (CUDA)0.35x · 13.5 µsordito (CUDA): 39.0 µs, 1x ordito's timeordito (CUDA)1x · 39.0 µs
sphere_large (327 680 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
PyTorch3D (CUDA) 13.5 µs 0.35x
ordito (CUDA) 39.0 µs 1x
All inputs
Input ordito (CUDA) PyTorch3D (CUDA)
sphere_small 41.6 µs 13.0 µs
sphere_med 37.4 µs 12.4 µs
sphere_large 39.0 µs 13.5 µs

grid_points

0.1x1x10x100x1000xordito (CUDA): 25.4 µs, 1x ordito's timeordito (CUDA)1x · 25.4 µslibigl: 1.31 ms, 52x ordito's timelibigl52x · 1.31 msPyVista: 2.80 ms, 110x ordito's timePyVista110x · 2.80 ms
resolution=64 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 25.4 µs 1x
libigl 1.31 ms 52x
PyVista 2.80 ms 110x
All inputs
Input ordito (CUDA) libigl PyVista
resolution=64 25.4 µs 1.31 ms 2.80 ms
resolution=256 150.7 µs

erode

0.01x0.1x1xMeshLib: 91.0 µs, 0.10x ordito's timeMeshLib0.10x · 91.0 µsordito (CUDA): 896.3 µs, 1x ordito's timeordito (CUDA)1x · 896.3 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
MeshLib 91.0 µs 0.10x
ordito (CUDA) 896.3 µs 1x
All inputs
Input ordito (CUDA) MeshLib
sphere_small 329.6 µs
bunny_decimated 314.7 µs 123.9 µs
bunny 327.5 µs 137.0 µs
dragon 896.3 µs 91.0 µs
happy_buddha 314.6 µs 120.4 µs
lucy 341.5 µs 93.0 µs

closing

0.1x1x10xordito (CUDA): 701.2 µs, 1x ordito's timeordito (CUDA)1x · 701.2 µstrimesh: 2.96 ms, 4.2x ordito's timetrimesh4.2x · 2.96 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 701.2 µs 1x
trimesh 2.96 ms 4.2x
All inputs
Input ordito (CUDA) trimesh
sphere_small 671.3 µs
bunny_decimated 640.0 µs 2.78 ms
bunny 636.2 µs 3.18 ms
dragon 701.2 µs 2.96 ms
happy_buddha 644.6 µs 2.02 ms
lucy 742.9 µs 2.16 ms

opening

0.1x1x10xordito (CUDA): 639.2 µs, 1x ordito's timeordito (CUDA)1x · 639.2 µsSciPy: 2.40 ms, 3.8x ordito's timeSciPy3.8x · 2.40 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 639.2 µs 1x
SciPy 2.40 ms 3.8x
All inputs
Input ordito (CUDA) SciPy
sphere_small 660.7 µs
bunny_decimated 629.7 µs 2.90 ms
bunny 661.2 µs 2.91 ms
dragon 639.2 µs 2.40 ms
happy_buddha 623.2 µs 1.96 ms
lucy 671.8 µs 1.79 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)
pool_by_voxel lucy 2.45 ms
cells lucy order=sorted 212.5 µs
from_cells lucy 235.4 µs
grid_transform sphere_small 18.6 µs
resolve_voxel_grid lucy 315.2 µs
cell_indices lucy 246.4 µs
cell_centers lucy 69.2 µs
occupancy_at_cells lucy 25.4 µs
union lucy 331.2 µs
intersection lucy 322.5 µs
difference lucy 360.5 µs
revoxelize lucy 706.3 µs
surface_voxels lucy 349.4 µs
to_dense lucy 116.6 µs
from_dense lucy 269.3 µs
to_field lucy 127.4 µs