Skip to content

reduce

Benchmarks of ordito.reduce 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.1x1x10x100x1000xPyTorch3D (CUDA): 0.89x ordito's time, geometric mean over 1 functions; slower than ordito in 0PyTorch3D (CUDA)0.89x (1)ordito (CUDA): the reference, 1xordito (CUDA)1xNumPy: 3.6x ordito's time, geometric mean over 15 functions; slower than ordito in 10NumPy3.6x (15)MeshLab: 71x ordito's time, geometric mean over 1 functions; slower than ordito in 1MeshLab71x (1)PyVista: 477x ordito's time, geometric mean over 1 functions; slower than ordito in 1PyVista477x (1)
Time relative to ordito (CUDA), geometric mean over the reduce 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.89x 1 0
NumPy 3.6x 15 10
MeshLab 71x 1 1
PyVista 477x 1 1

sum_bool

0.1x1x10xordito (CUDA): 30.1 µs, 1x ordito's timeordito (CUDA)1x · 30.1 µsNumPy: 115.2 µs, 3.8x ordito's timeNumPy3.8x · 115.2 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 30.1 µs 1x
NumPy 115.2 µs 3.8x
All inputs
Input ordito (CUDA) NumPy
sphere_small 38.9 µs
bunny_decimated 39.1 µs 3.3 µs
bunny 30.2 µs 10.5 µs
dragon 30.1 µs 115.2 µs
happy_buddha 32.1 µs 143.8 µs
lucy 44.1 µs 4.52 ms

any_bool

0.01x0.1x1xNumPy: 4.2 µs, 0.11x ordito's timeNumPy0.11x · 4.2 µsordito (CUDA): 38.8 µs, 1x ordito's timeordito (CUDA)1x · 38.8 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
NumPy 4.2 µs 0.11x
ordito (CUDA) 38.8 µs 1x
All inputs
Input ordito (CUDA) NumPy
sphere_small 52.5 µs
bunny_decimated 41.2 µs 1.0 µs
bunny 31.0 µs 0.9 µs
dragon 38.8 µs 4.2 µs
happy_buddha 46.7 µs 5.3 µs
lucy 66.7 µs 1.0 µs

all_bool

0.001x0.01x0.1x1xNumPy: 0.9 µs, 0.02x ordito's timeNumPy0.02x · 0.9 µsordito (CUDA): 43.3 µs, 1x ordito's timeordito (CUDA)1x · 43.3 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
NumPy 0.9 µs 0.02x
ordito (CUDA) 43.3 µs 1x
All inputs
Input ordito (CUDA) NumPy
sphere_small 56.2 µs
bunny_decimated 53.6 µs 1.0 µs
bunny 33.1 µs 0.9 µs
dragon 43.3 µs 0.9 µs
happy_buddha 51.8 µs 1.2 µs
lucy 71.8 µs 23.2 µs

sum_scalar

0.1x1x10xordito (CUDA): 51.1 µs, 1x ordito's timeordito (CUDA)1x · 51.1 µsNumPy: 66.2 µs, 1.3x ordito's timeNumPy1.3x · 66.2 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 51.1 µs 1x
NumPy 66.2 µs 1.3x
All inputs
Input ordito (CUDA) NumPy
sphere_small 54.2 µs
bunny_decimated 45.1 µs 2.2 µs
bunny 53.6 µs 6.8 µs
dragon 51.1 µs 66.2 µs
happy_buddha 50.7 µs 107.3 µs
lucy 86.0 µs 4.82 ms

sum_vec3

0.1x1x10x100xordito (CUDA): 51.4 µs, 1x ordito's timeordito (CUDA)1x · 51.4 µsNumPy: 4.43 ms, 86x ordito's timeNumPy86x · 4.43 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 51.4 µs 1x
NumPy 4.43 ms 86x
All inputs
Input ordito (CUDA) NumPy
sphere_small 52.0 µs
bunny_decimated 50.8 µs 83.5 µs
bunny 62.8 µs 390.2 µs
dragon 51.4 µs 4.43 ms
happy_buddha 55.4 µs 5.91 ms
lucy 167.3 µs 143.32 ms

mean_vec3

0.1x1x10x100xordito (CUDA): 85.0 µs, 1x ordito's timeordito (CUDA)1x · 85.0 µsNumPy: 4.49 ms, 53x ordito's timeNumPy53x · 4.49 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 85.0 µs 1x
NumPy 4.49 ms 53x
All inputs
Input ordito (CUDA) NumPy
sphere_small 51.5 µs
bunny_decimated 84.7 µs 85.5 µs
bunny 59.9 µs 365.5 µs
dragon 85.0 µs 4.49 ms
happy_buddha 79.6 µs 5.50 ms
lucy 199.8 µs 143.82 ms

weighted_sum

0.01x0.1x1x10x100x1000xPyTorch3D (CUDA): 36.9 µs, 0.69x ordito's timePyTorch3D (CUDA)0.69x · 36.9 µsordito (CUDA): 53.2 µs, 1x ordito's timeordito (CUDA)1x · 53.2 µsNumPy: 455.4 µs, 8.6x ordito's timeNumPy8.6x · 455.4 µsPyVista: 48.45 ms, 910x ordito's timePyVista910x · 48.45 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
PyTorch3D (CUDA) 36.9 µs 0.69x
ordito (CUDA) 53.2 µs 1x
NumPy 455.4 µs 8.6x
PyVista 48.45 ms 910x
All inputs
Input ordito (CUDA) NumPy PyTorch3D (CUDA) PyVista
sphere_small 49.1 µs
bunny_decimated 49.4 µs 7.3 µs 38.2 µs 1.09 ms
bunny 40.9 µs 20.3 µs 34.2 µs 4.08 ms
dragon 53.2 µs 455.4 µs 36.9 µs 48.45 ms
happy_buddha 51.8 µs 556.9 µs 36.8 µs 65.81 ms
lucy 191.7 µs 39.21 ms 327.8 µs 1.864 s

scatter_sum

0.1x1x10x100x1000xordito (CUDA): 79.6 µs, 1x ordito's timeordito (CUDA)1x · 79.6 µsNumPy: 8.17 ms, 103x ordito's timeNumPy103x · 8.17 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 79.6 µs 1x
NumPy 8.17 ms 103x
All inputs
Input ordito (CUDA) NumPy
sphere_small 73.9 µs
bunny_decimated 70.2 µs 61.1 µs
bunny 64.7 µs 366.6 µs
dragon 79.6 µs 8.17 ms
happy_buddha 105.3 µs 10.82 ms
lucy 1.39 ms 476.99 ms

segment_sum

0.1x1x10x100xordito (CUDA): 63.9 µs, 1x ordito's timeordito (CUDA)1x · 63.9 µsNumPy: 5.58 ms, 87x ordito's timeNumPy87x · 5.58 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 63.9 µs 1x
NumPy 5.58 ms 87x
All inputs
Input ordito (CUDA) NumPy
sphere_small 50.6 µs
bunny_decimated 38.9 µs 103.0 µs
bunny 43.0 µs 369.1 µs
dragon 63.9 µs 5.58 ms
happy_buddha 75.3 µs 7.11 ms
lucy 1.71 ms 175.14 ms

minmax_scalar

0.01x0.1x1xNumPy: 47.4 µs, 0.83x ordito's timeNumPy0.83x · 47.4 µsordito (CUDA): 57.4 µs, 1x ordito's timeordito (CUDA)1x · 57.4 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
NumPy 47.4 µs 0.83x
ordito (CUDA) 57.4 µs 1x
All inputs
Input ordito (CUDA) NumPy
sphere_small 51.6 µs
bunny_decimated 46.9 µs 3.2 µs
bunny 57.1 µs 5.6 µs
dragon 57.4 µs 47.4 µs
happy_buddha 65.5 µs 98.0 µs
lucy 139.4 µs 3.87 ms

min_scalar

0.01x0.1x1xNumPy: 23.7 µs, 0.41x ordito's timeNumPy0.41x · 23.7 µsordito (CUDA): 58.5 µs, 1x ordito's timeordito (CUDA)1x · 58.5 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
NumPy 23.7 µs 0.41x
ordito (CUDA) 58.5 µs 1x
All inputs
Input ordito (CUDA) NumPy
sphere_small 63.1 µs
bunny_decimated 65.3 µs 1.7 µs
bunny 51.0 µs 2.8 µs
dragon 58.5 µs 23.7 µs
happy_buddha 64.7 µs 41.9 µs
lucy 105.1 µs 1.91 ms

minmax_global_2d

0.1x1x10xordito (CUDA): 72.9 µs, 1x ordito's timeordito (CUDA)1x · 72.9 µsNumPy: 303.8 µs, 4.2x ordito's timeNumPy4.2x · 303.8 µs
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 72.9 µs 1x
NumPy 303.8 µs 4.2x
All inputs
Input ordito (CUDA) NumPy
sphere_small 70.3 µs
bunny_decimated 74.4 µs 4.2 µs
bunny 50.3 µs 10.7 µs
dragon 72.9 µs 303.8 µs
happy_buddha 54.6 µs 409.9 µs
lucy 316.4 µs 19.04 ms

sum_axis0

0.1x1x10x100xordito (CUDA): 48.6 µs, 1x ordito's timeordito (CUDA)1x · 48.6 µsNumPy: 4.47 ms, 92x ordito's timeNumPy92x · 4.47 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 48.6 µs 1x
NumPy 4.47 ms 92x
All inputs
Input ordito (CUDA) NumPy
sphere_small 40.1 µs
bunny_decimated 30.5 µs 83.0 µs
bunny 30.9 µs 383.8 µs
dragon 48.6 µs 4.47 ms
happy_buddha 72.1 µs 5.57 ms
lucy 855.8 µs 143.48 ms

max_axis1

0.1x1x10x100x1000xordito (CUDA): 19.2 µs, 1x ordito's timeordito (CUDA)1x · 19.2 µsNumPy: 12.68 ms, 662x ordito's timeNumPy662x · 12.68 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 19.2 µs 1x
NumPy 12.68 ms 662x
All inputs
Input ordito (CUDA) NumPy
sphere_small 24.1 µs
bunny_decimated 16.8 µs 233.7 µs
bunny 18.4 µs 1.03 ms
dragon 19.2 µs 12.68 ms
happy_buddha 29.7 µs 15.63 ms
lucy 163.3 µs 427.77 ms

median

0.1x1x10x100x1000xordito (CUDA): 113.2 µs, 1x ordito's timeordito (CUDA)1x · 113.2 µsNumPy: 673.1 µs, 5.9x ordito's timeNumPy5.9x · 673.1 µsMeshLab: 18.68 ms, 165x ordito's timeMeshLab165x · 18.68 ms
dragon (871 414 faces) · time relative to ordito, log scale
Values
Library Median Relative to ordito
ordito (CUDA) 113.2 µs 1x
NumPy 673.1 µs 5.9x
MeshLab 18.68 ms 165x
All inputs
Input ordito (CUDA) MeshLab NumPy
sphere_small 54.6 µs
bunny_decimated 90.8 µs 407.2 µs 45.8 µs
bunny 113.2 µs 1.97 ms 120.9 µs
dragon 113.2 µs 18.68 ms 673.1 µs
happy_buddha 127.9 µs 23.93 ms 802.9 µs
lucy 1.49 ms 1.138 s 54.15 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)
sum_of_terms lucy 150.8 µs