Skip to content

Add distance array benchmarks#196

Open
PardhavMaradani wants to merge 1 commit intoMDAnalysis:mainfrom
PardhavMaradani:distance-array-benchmarks
Open

Add distance array benchmarks#196
PardhavMaradani wants to merge 1 commit intoMDAnalysis:mainfrom
PardhavMaradani:distance-array-benchmarks

Conversation

@PardhavMaradani
Copy link
Copy Markdown
Contributor

@PardhavMaradani PardhavMaradani commented Apr 5, 2026

Fixes #176

This PR adds distance array and self distance array benchmarks.

(I wanted to try out distance array methods with distopia+OpenMP (discussion #189) and noticed these benchmarks missing)

Show benchmark run
$ ./bench --benchmark_filter="DistanceArray" 
2026-04-05T07:07:52+05:30
Running ./bench
Run on (8 X 2217.28 MHz CPU s)
CPU Caches:
  L1 Data 32 KiB (x4)
  L1 Instruction 32 KiB (x4)
  L2 Unified 256 KiB (x4)
  L3 Unified 8192 KiB (x1)
Load Average: 0.75, 0.91, 0.94
--------------------------------------------------------------------------------------------------------------------------------------------------
Benchmark                                                                                        Time             CPU   Iterations UserCounters...
--------------------------------------------------------------------------------------------------------------------------------------------------
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxMDAFloat/100/100/0                     6340 ns         6341 ns       108355 Per Result=634.05ps items_per_second=1.57716G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxMDAFloat/10000/100/0                 637532 ns       637518 ns         1065 Per Result=637.518ps items_per_second=1.56858G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxMDAFloat/100/10000/0                 634637 ns       634640 ns         1074 Per Result=634.64ps items_per_second=1.5757G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxMDAFloat/10000/10000/0             78146201 ns     78140140 ns            8 Per Result=781.401ps items_per_second=1.27975G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxMDADouble/100/100/0                   7235 ns         7234 ns        96564 Per Result=723.431ps items_per_second=1.3823G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxMDADouble/10000/100/0               735335 ns       735326 ns          910 Per Result=735.326ps items_per_second=1.35994G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxMDADouble/100/10000/0               817475 ns       817468 ns          820 Per Result=817.468ps items_per_second=1.22329G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxMDADouble/10000/10000/0          127866987 ns    127864344 ns            5 Per Result=1.27864ns items_per_second=782.079M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxFloat/100/100/0                        3279 ns         3279 ns       213531 Per Result=327.861ps items_per_second=3.05007G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxFloat/10000/100/0                    325264 ns       325250 ns         2153 Per Result=325.25ps items_per_second=3.07456G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxFloat/100/10000/0                    409260 ns       409242 ns         1714 Per Result=409.242ps items_per_second=2.44354G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayNoBoxFloat/10000/10000/0                56596899 ns     56595671 ns           11 Per Result=565.957ps items_per_second=1.76692G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxDouble/100/100/0                      7193 ns         7193 ns        96983 Per Result=719.284ps items_per_second=1.39027G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxDouble/10000/100/0                  724529 ns       724485 ns          925 Per Result=724.485ps items_per_second=1.38029G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxDouble/100/10000/0                  804074 ns       804083 ns          825 Per Result=804.083ps items_per_second=1.24365G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayNoBoxDouble/10000/10000/0             128667280 ns    128656427 ns            5 Per Result=1.28656ns items_per_second=777.264M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoMDAFloat/100/100/0                    88695 ns        88693 ns         7737 Per Result=8.86932ns items_per_second=112.748M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoMDAFloat/10000/100/0                8854672 ns      8854478 ns           79 Per Result=8.85448ns items_per_second=112.937M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoMDAFloat/100/10000/0                9100998 ns      9098791 ns           79 Per Result=9.09879ns items_per_second=109.905M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoMDAFloat/10000/10000/0           1005422920 ns   1005402349 ns            1 Per Result=10.054ns items_per_second=99.4627M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoMDADouble/100/100/0                 144515 ns       144515 ns         4968 Per Result=14.4515ns items_per_second=69.197M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoMDADouble/10000/100/0             14482316 ns     14482238 ns           48 Per Result=14.4822ns items_per_second=69.0501M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoMDADouble/100/10000/0             14519801 ns     14519432 ns           48 Per Result=14.5194ns items_per_second=68.8732M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoMDADouble/10000/10000/0         1699215215 ns   1699211337 ns            1 Per Result=16.9921ns items_per_second=58.8508M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoFloat/100/100/0                        6286 ns         6285 ns       111901 Per Result=628.542ps items_per_second=1.59098G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoFloat/10000/100/0                    627713 ns       627639 ns         1112 Per Result=627.639ps items_per_second=1.59327G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoFloat/100/10000/0                    736903 ns       736801 ns          945 Per Result=736.801ps items_per_second=1.35722G/s
DistanceArrayCoordinatesBench<float>/DistanceArrayOrthoFloat/10000/10000/0                76369095 ns     76367459 ns            8 Per Result=763.675ps items_per_second=1.30946G/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoDouble/100/100/0                     12660 ns        12658 ns        54764 Per Result=1.26578ns items_per_second=790.024M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoDouble/10000/100/0                 1118335 ns      1118324 ns          609 Per Result=1.11832ns items_per_second=894.195M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoDouble/100/10000/0                 1414570 ns      1414391 ns          481 Per Result=1.41439ns items_per_second=707.018M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayOrthoDouble/10000/10000/0             185085390 ns    185083991 ns            3 Per Result=1.85084ns items_per_second=540.295M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicMDAFloat/100/100/0               428145 ns       428124 ns         1627 Per Result=42.8124ns items_per_second=23.3577M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicMDAFloat/10000/100/0           42716275 ns     42716024 ns           16 Per Result=42.716ns items_per_second=23.4104M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicMDAFloat/100/10000/0           42033687 ns     42034031 ns           17 Per Result=42.034ns items_per_second=23.7902M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicMDAFloat/10000/10000/0       4417270546 ns   4417215077 ns            1 Per Result=44.1722ns items_per_second=22.6387M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicMDADouble/100/100/0             437602 ns       437599 ns         1580 Per Result=43.7599ns items_per_second=22.852M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicMDADouble/10000/100/0         44061869 ns     44061986 ns           16 Per Result=44.062ns items_per_second=22.6953M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicMDADouble/100/10000/0         43247608 ns     43247943 ns           16 Per Result=43.2479ns items_per_second=23.1225M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicMDADouble/10000/10000/0     4616607787 ns   4616559633 ns            1 Per Result=46.1656ns items_per_second=21.6612M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicFloat/100/100/0                   78281 ns        78274 ns         8837 Per Result=7.82743ns items_per_second=127.756M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicFloat/10000/100/0               7841649 ns      7841162 ns           88 Per Result=7.84116ns items_per_second=127.532M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicFloat/100/10000/0               7706354 ns      7706177 ns           90 Per Result=7.70618ns items_per_second=129.766M/s
DistanceArrayCoordinatesBench<float>/DistanceArrayTriclinicFloat/10000/10000/0           854459764 ns    854433681 ns            1 Per Result=8.54434ns items_per_second=117.037M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicDouble/100/100/0                154949 ns       154925 ns         4506 Per Result=15.4925ns items_per_second=64.5474M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicDouble/10000/100/0            15362679 ns     15362250 ns           45 Per Result=15.3623ns items_per_second=65.0946M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicDouble/100/10000/0            15817443 ns     15817352 ns           44 Per Result=15.8174ns items_per_second=63.2217M/s
DistanceArrayCoordinatesBench<double>/DistanceArrayTriclinicDouble/10000/10000/0        1719210473 ns   1719177373 ns            1 Per Result=17.1918ns items_per_second=58.1674M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxMDAFloat/10/0/0                61.4 ns         61.4 ns     11232558 Per Result=614.094ps items_per_second=1.62842G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxMDAFloat/100/0/0               3598 ns         3598 ns       194613 Per Result=359.811ps items_per_second=2.77923G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxMDAFloat/1000/0/0            336123 ns       336120 ns         2081 Per Result=336.12ps items_per_second=2.97513G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxMDAFloat/10000/0/0         37029169 ns     37028831 ns           18 Per Result=370.288ps items_per_second=2.7006G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxMDADouble/10/0/0              55.3 ns         55.3 ns     12371801 Per Result=552.764ps items_per_second=1.80909G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxMDADouble/100/0/0             4147 ns         4147 ns       169041 Per Result=414.735ps items_per_second=2.41118G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxMDADouble/1000/0/0          392781 ns       392770 ns         1775 Per Result=392.77ps items_per_second=2.54602G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxMDADouble/10000/0/0       56692628 ns     56692508 ns           11 Per Result=566.925ps items_per_second=1.7639G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxFloat/10/0/0                   51.2 ns         51.2 ns     12757775 Per Result=512.174ps items_per_second=1.95246G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxFloat/100/0/0                  1718 ns         1718 ns       399947 Per Result=171.814ps items_per_second=5.82023G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxFloat/1000/0/0               150638 ns       150636 ns         4535 Per Result=150.636ps items_per_second=6.63852G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayNoBoxFloat/10000/0/0            27513561 ns     27512953 ns           24 Per Result=275.13ps items_per_second=3.63465G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxDouble/10/0/0                 55.8 ns         55.8 ns     12282363 Per Result=557.582ps items_per_second=1.79346G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxDouble/100/0/0                3818 ns         3817 ns       183636 Per Result=381.7ps items_per_second=2.61986G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxDouble/1000/0/0             375191 ns       375181 ns         1864 Per Result=375.181ps items_per_second=2.66538G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayNoBoxDouble/10000/0/0          56539228 ns     56538988 ns           11 Per Result=565.39ps items_per_second=1.76869G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoMDAFloat/10/0/0                 479 ns          479 ns      1453823 Per Result=4.79087ns items_per_second=208.73M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoMDAFloat/100/0/0              50886 ns        50886 ns        13662 Per Result=5.08859ns items_per_second=196.518M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoMDAFloat/1000/0/0           5127208 ns      5126831 ns          135 Per Result=5.12683ns items_per_second=195.052M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoMDAFloat/10000/0/0        580644527 ns    580624346 ns            1 Per Result=5.80624ns items_per_second=172.228M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoMDADouble/10/0/0               445 ns          445 ns      1532980 Per Result=4.45097ns items_per_second=224.67M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoMDADouble/100/0/0            81299 ns        81285 ns         8498 Per Result=8.12846ns items_per_second=123.025M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoMDADouble/1000/0/0         8768173 ns      8767355 ns           79 Per Result=8.76736ns items_per_second=114.059M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoMDADouble/10000/0/0      987950174 ns    987927426 ns            1 Per Result=9.87927ns items_per_second=101.222M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoFloat/10/0/0                   75.4 ns         75.4 ns      9320678 Per Result=753.561ps items_per_second=1.32703G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoFloat/100/0/0                  3315 ns         3315 ns       209879 Per Result=331.512ps items_per_second=3.01648G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoFloat/1000/0/0               303727 ns       303727 ns         2301 Per Result=303.727ps items_per_second=3.29243G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayOrthoFloat/10000/0/0            36511337 ns     36510603 ns           18 Per Result=365.106ps items_per_second=2.73893G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoDouble/10/0/0                 88.0 ns         88.0 ns      7912408 Per Result=879.864ps items_per_second=1.13654G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoDouble/100/0/0                5706 ns         5706 ns       121830 Per Result=570.587ps items_per_second=1.75258G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoDouble/1000/0/0             557123 ns       557096 ns         1236 Per Result=557.096ps items_per_second=1.79502G/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayOrthoDouble/10000/0/0          73417730 ns     73416899 ns            9 Per Result=734.169ps items_per_second=1.36208G/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicMDAFloat/10/0/0            1336 ns         1336 ns       516649 Per Result=13.3557ns items_per_second=74.8744M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicMDAFloat/100/0/0         224119 ns       224102 ns         3206 Per Result=22.4102ns items_per_second=44.6225M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicMDAFloat/1000/0/0      22163222 ns     22160471 ns           31 Per Result=22.1605ns items_per_second=45.1254M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicMDAFloat/10000/0/0   2311667015 ns   2311627284 ns            1 Per Result=23.1163ns items_per_second=43.2596M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicMDADouble/10/0/0          1366 ns         1366 ns       512411 Per Result=13.6585ns items_per_second=73.2145M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicMDADouble/100/0/0       221634 ns       221609 ns         3172 Per Result=22.1609ns items_per_second=45.1246M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicMDADouble/1000/0/0    22374847 ns     22373521 ns           31 Per Result=22.3735ns items_per_second=44.6957M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicMDADouble/10000/0/0 2387770231 ns   2387733737 ns            1 Per Result=23.8773ns items_per_second=41.8807M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicFloat/10/0/0                783 ns          782 ns       902283 Per Result=7.82397ns items_per_second=127.812M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicFloat/100/0/0             42317 ns        42317 ns        16522 Per Result=4.23172ns items_per_second=236.311M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicFloat/1000/0/0          3880681 ns      3880674 ns          180 Per Result=3.88067ns items_per_second=257.687M/s
SelfDistanceArrayCoordinatesBench<float>/SelfDistanceArrayTriclinicFloat/10000/0/0       410044276 ns    410038577 ns            2 Per Result=4.10039ns items_per_second=243.879M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicDouble/10/0/0             1088 ns         1088 ns       643043 Per Result=10.8795ns items_per_second=91.9163M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicDouble/100/0/0           80349 ns        80349 ns         8741 Per Result=8.03492ns items_per_second=124.457M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicDouble/1000/0/0        7726331 ns      7726260 ns           89 Per Result=7.72626ns items_per_second=129.429M/s
SelfDistanceArrayCoordinatesBench<double>/SelfDistanceArrayTriclinicDouble/10000/0/0     876103903 ns    876089564 ns            1 Per Result=8.7609ns items_per_second=114.144M/s

For the regular distance array benchmarks, I picked a range to limit the total number of combinations. We can change this if needed. Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add benchmarks for distance and self-distance array

1 participant