Skip to content

interpolation

Benchmarks of ordito.interpolation 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.1x1x10x100xordito (CUDA): the reference, 1xordito (CUDA)1xlibigl: 8.6x ordito's time, geometric mean over 3 functions; slower than ordito in 3libigl8.6x (3)MeshLab: 61x ordito's time, geometric mean over 2 functions; slower than ordito in 2MeshLab61x (2)PyVista: 94x ordito's time, geometric mean over 4 functions; slower than ordito in 4PyVista94x (4)
Time relative to ordito (CUDA), geometric mean over the interpolation 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
libigl 8.6x 3 3
MeshLab 61x 2 2
PyVista 94x 4 4

average_onto_faces

0.1x1x10x100xordito (CUDA): 21.5 µs, 1x ordito's timeordito (CUDA)1x · 21.5 µslibigl: 205.6 µs, 9.6x ordito's timelibigl9.6x · 205.6 µsPyVista: 1.40 ms, 65x ordito's timePyVista65x · 1.40 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 21.5 µs 1x
libigl 205.6 µs 9.6x
PyVista 1.40 ms 65x
All inputs
Input ordito (CUDA) libigl PyVista
sphere_med 21.5 µs 205.6 µs 1.40 ms
fan_hub 14.5 µs 201.9 µs 1.41 ms

average_onto_vertices

0.1x1x10x100xordito (CUDA): 38.1 µs, 1x ordito's timeordito (CUDA)1x · 38.1 µslibigl: 268.3 µs, 7.1x ordito's timelibigl7.1x · 268.3 µsMeshLab: 677.9 µs, 18x ordito's timeMeshLab18x · 677.9 µsPyVista: 3.36 ms, 88x ordito's timePyVista88x · 3.36 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 38.1 µs 1x
libigl 268.3 µs 7.1x
MeshLab 677.9 µs 18x
PyVista 3.36 ms 88x
All inputs
Input ordito (CUDA) libigl MeshLab PyVista
sphere_med 38.1 µs 268.3 µs 677.9 µs 3.36 ms
fan_hub 130.6 µs 252.5 µs 705.6 µs 3.31 ms

average_from_edges_onto_vertices

0.1x1x10x100xordito (CUDA): 49.9 µs, 1x ordito's timeordito (CUDA)1x · 49.9 µslibigl: 1.61 ms, 32x ordito's timelibigl32x · 1.61 ms
sphere_med (81 920 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 49.9 µs 1x
libigl 1.61 ms 32x
All inputs
Input ordito (CUDA) libigl
sphere_med 49.9 µs 1.61 ms
fan_hub 138.7 µs 942.2 µs

transfer_onto_vertices

0.1x1x10x100x1000xordito (CUDA): 1.74 ms, 1x ordito's timeordito (CUDA)1x · 1.74 msPyVista: 178.19 ms, 102x ordito's timePyVista102x · 178.19 msMeshLab: 1.354 s, 779x ordito's timeMeshLab779x · 1.354 s
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 1.74 ms 1x
PyVista 178.19 ms 102x
MeshLab 1.354 s 779x
All inputs
Input ordito (CUDA) MeshLab PyVista
sphere_small 236.8 µs
bunny_decimated 289.3 µs 13.55 ms 2.75 ms
bunny 341.9 µs 64.28 ms 12.10 ms
dragon 1.74 ms 1.354 s 178.19 ms
happy_buddha 1.83 ms 1.694 s 220.90 ms
lucy 51.90 ms 67.760 s 9.235 s

interpolate_from_points

0.1x1x10x100x1000xordito (CUDA): 507.4 µs, 1x ordito's timeordito (CUDA)1x · 507.4 µsPyVista: 317.24 ms, 625x ordito's timePyVista625x · 317.24 ms
dragon (871 414 faces) · neighborhood=8 · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 507.4 µs 1x
PyVista 317.24 ms 625x
All inputs
Input ordito (CUDA) PyVista
sphere_small neighborhood=8 159.9 µs
sphere_small neighborhood=64 250.3 µs
bunny_decimated neighborhood=8 204.1 µs 5.89 ms
bunny_decimated neighborhood=64 450.1 µs 23.21 ms
bunny neighborhood=8 208.2 µs 25.07 ms
bunny neighborhood=64 527.8 µs 92.05 ms
dragon neighborhood=8 507.4 µs 317.24 ms
dragon neighborhood=64 1.12 ms 1.037 s
happy_buddha neighborhood=8 634.8 µs 408.19 ms
happy_buddha neighborhood=64 1.18 ms 1.337 s
lucy neighborhood=8 11.96 ms 13.871 s
lucy neighborhood=64 21.00 ms 38.336 s

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)
transfer_through_operator lucy 93.87 ms