Skip to content

laplacian

Benchmarks of ordito.laplacian 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.1x1x10x100x1000x10000xordito (CUDA): the reference, 1xordito (CUDA)1xPyTorch3D (CUDA): 3.7x ordito's time, geometric mean over 4 functions; slower than ordito in 4PyTorch3D (CUDA)3.7x (4)potpourri3d: 168x ordito's time, geometric mean over 2 functions; slower than ordito in 2potpourri3d168x (2)libigl: 226x ordito's time, geometric mean over 7 functions; slower than ordito in 7libigl226x (7)trimesh: 648x ordito's time, geometric mean over 2 functions; slower than ordito in 2trimesh648x (2)PyVista: 1627x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyVista1627x (1)
Time relative to ordito (CUDA), geometric mean over the laplacian 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) 3.7x 4 4
potpourri3d 168x 2 2
libigl 226x 7 7
trimesh 648x 2 2
PyVista 1627x 1 1

cotmatrix_entries

0.1x1x10x100x1000x10000xordito (CUDA): 23.4 µs, 1x ordito's timeordito (CUDA)1x · 23.4 µslibigl: 30.52 ms, 1305x ordito's timelibigl1305x · 30.52 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 23.4 µs 1x
libigl 30.52 ms 1305x
All inputs
Input ordito (CUDA) libigl
sphere_small 22.8 µs
bunny_decimated 22.9 µs 4.29 ms
bunny 21.6 µs 5.03 ms
dragon 23.4 µs 30.52 ms
happy_buddha 30.0 µs 29.68 ms
lucy 574.6 µs 1.501 s

cotmatrix_entries_intrinsic

0.1x1x10x100x1000x10000xordito (CUDA): 21.5 µs, 1x ordito's timeordito (CUDA)1x · 21.5 µslibigl: 21.56 ms, 1002x ordito's timelibigl1002x · 21.56 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 21.5 µs 1x
libigl 21.56 ms 1002x
All inputs
Input ordito (CUDA) libigl
sphere_small 26.4 µs
bunny_decimated 19.8 µs 2.80 ms
bunny 17.8 µs 3.72 ms
dragon 21.5 µs 21.56 ms
happy_buddha 29.3 µs 29.03 ms
lucy 672.1 µs 1.701 s

cotmatrix

0.1x1x10x100x1000xordito (CUDA): 810.7 µs, 1x ordito's timeordito (CUDA)1x · 810.7 µsPyTorch3D (CUDA): 2.91 ms, 3.6x ordito's timePyTorch3D (CUDA)3.6x · 2.91 mslibigl: 268.25 ms, 331x ordito's timelibigl331x · 268.25 mspotpourri3d: 602.84 ms, 744x ordito's timepotpourri3d744x · 602.84 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 810.7 µs 1x
PyTorch3D (CUDA) 2.91 ms 3.6x
libigl 268.25 ms 331x
potpourri3d 602.84 ms 744x
All inputs
Input ordito (CUDA) libigl potpourri3d PyTorch3D (CUDA)
sphere_small 181.3 µs
bunny_decimated 173.5 µs 7.22 ms 7.55 ms 529.6 µs
bunny 191.1 µs 17.49 ms 34.47 ms 574.4 µs
dragon 810.7 µs 268.25 ms 602.84 ms 2.91 ms
happy_buddha 927.9 µs 345.81 ms 763.06 ms 3.78 ms
lucy 35.69 ms 9.061 s 23.892 s 127.51 ms

laplacian_equal_weight

0.1x1x10x100x1000xordito (CUDA): 411.5 µs, 1x ordito's timeordito (CUDA)1x · 411.5 µsPyTorch3D (CUDA): 1.92 ms, 4.7x ordito's timePyTorch3D (CUDA)4.7x · 1.92 mstrimesh: 121.12 ms, 294x ordito's timetrimesh294x · 121.12 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 411.5 µs 1x
PyTorch3D (CUDA) 1.92 ms 4.7x
trimesh 121.12 ms 294x
All inputs
Input ordito (CUDA) PyTorch3D (CUDA) trimesh
sphere_small 148.4 µs
bunny_decimated 130.8 µs 391.6 µs 1.91 ms
bunny 188.4 µs 442.3 µs 9.07 ms
dragon 411.5 µs 1.92 ms 121.12 ms
happy_buddha 565.7 µs 2.74 ms 151.97 ms
lucy 20.47 ms 120.52 ms 4.748 s

laplacian_inverse_distance

0.1x1x10x100x1000x10000x100000xordito (CUDA): 447.3 µs, 1x ordito's timeordito (CUDA)1x · 447.3 µsPyTorch3D (CUDA): 1.66 ms, 3.7x ordito's timePyTorch3D (CUDA)3.7x · 1.66 mstrimesh: 5.928 s, 13254x ordito's timetrimesh13254x · 5.928 s
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 447.3 µs 1x
PyTorch3D (CUDA) 1.66 ms 3.7x
trimesh 5.928 s 13254x
All inputs
Input ordito (CUDA) PyTorch3D (CUDA) trimesh
sphere_small 216.5 µs
bunny_decimated 203.1 µs 386.1 µs 69.45 ms
bunny 223.0 µs 415.0 µs 462.27 ms
dragon 447.3 µs 1.66 ms 5.928 s
happy_buddha 627.4 µs 2.24 ms 7.484 s
lucy 21.12 ms 110.25 ms 191.379 s

mass_matrix_entries

0.1x1x10x100x1000xordito (CUDA): 41.3 µs, 1x ordito's timeordito (CUDA)1x · 41.3 µspotpourri3d: 6.94 ms, 168x ordito's timepotpourri3d168x · 6.94 mslibigl: 9.24 ms, 224x ordito's timelibigl224x · 9.24 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 41.3 µs 1x
potpourri3d 6.94 ms 168x
libigl 9.24 ms 224x
All inputs
Input ordito (CUDA) libigl potpourri3d
sphere_med 41.3 µs 9.24 ms 6.94 ms
fan_hub 125.4 µs 8.99 ms 5.98 ms

mass_matrix

0.1x1x10x100x1000xordito (CUDA): 71.5 µs, 1x ordito's timeordito (CUDA)1x · 71.5 µsPyTorch3D (CUDA): 454.5 µs, 6.4x ordito's timePyTorch3D (CUDA)6.4x · 454.5 µslibigl: 9.12 ms, 127x ordito's timelibigl127x · 9.12 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 71.5 µs 1x
PyTorch3D (CUDA) 454.5 µs 6.4x
libigl 9.12 ms 127x
All inputs
Input ordito (CUDA) libigl PyTorch3D (CUDA)
sphere_med 71.5 µs 9.12 ms 454.5 µs
fan_hub 142.2 µs 8.84 ms 482.3 µs

robust_laplacian

0.1x1x10x100x1000xordito (CUDA): 2.26 ms, 1x ordito's timeordito (CUDA)1x · 2.26 mslibigl: 260.56 ms, 115x ordito's timelibigl115x · 260.56 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 2.26 ms 1x
libigl 260.56 ms 115x
All inputs
Input ordito (CUDA) libigl
sphere_small 451.5 µs
bunny_decimated 603.8 µs 5.97 ms
bunny 610.5 µs 16.05 ms
dragon 2.26 ms 260.56 ms
happy_buddha 2.94 ms 208.76 ms
lucy 86.61 ms 8.691 s

face_gradients

0.1x1x10x100x1000x10000xordito (CUDA): 116.5 µs, 1x ordito's timeordito (CUDA)1x · 116.5 µslibigl: 281.41 ms, 2416x ordito's timelibigl2416x · 281.41 msPyVista: 388.73 ms, 3337x ordito's timePyVista3337x · 388.73 ms
dragon (871 414 faces) · precomputed=False · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 116.5 µs 1x
libigl 281.41 ms 2416x
PyVista 388.73 ms 3337x
All inputs
Input ordito (CUDA) libigl PyVista
sphere_small precomputed=False 24.6 µs
sphere_small precomputed=True 24.3 µs
bunny_decimated precomputed=False 22.0 µs 2.66 ms 7.22 ms
bunny_decimated precomputed=True 26.0 µs
bunny precomputed=False 30.7 µs 12.63 ms 30.16 ms
bunny precomputed=True 31.2 µs
dragon precomputed=False 116.5 µs 281.41 ms 388.73 ms
dragon precomputed=True 118.4 µs
happy_buddha precomputed=False 180.7 µs 217.17 ms 458.15 ms
happy_buddha precomputed=True 145.5 µs
lucy precomputed=False 2.92 ms 10.239 s 12.203 s
lucy precomputed=True 2.92 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)
connection_laplacian sphere_large 856.3 µs
mesh_operator_pattern lucy 24.71 ms
laplacian_entries lucy 3.51 ms
graph_laplacian lucy 30.31 ms
mollify_intrinsic lucy 2.55 ms