Example 5.2: Molli XT Benchmark¶
Hardware Specification for Rerun¶
Desktop workstation with 2x (AMD EPYC 7702 64-Core) with total of 128 physical and 256 logical cores, 1024 GB DDR4 with Ubuntu 22.04 LTS operating system.
[1]:
import molli as ml
import molli_xt
from scipy.spatial.distance import cdist
import numpy as np
import timeit
arr1 = np.random.rand(100, 30, 3).astype("f4")
test_arrs = {
size: np.random.rand(size, 3).astype("f4") for size in (10, 100, 1000, 10000, 20000)
}
[2]:
# Comparison for euclidean distance
print("Distance (Euclidean) calculation with scipy.cdist:")
for size, arr2 in test_arrs.items():
times_scipy = timeit.Timer(
"""[cdist(x, arr2, "sqeuclidean") for x in arr1]""",
globals=globals(),
).repeat(5, 10)
times_molli = timeit.Timer(
"""molli_xt.cdist32f_eu2(arr1, arr2)""",
globals=globals(),
).repeat(5, 10)
t_sp = min(times_scipy)
t_ml = min(times_molli)
print(f"{size=}: {t_sp/t_ml=:3f} molli={t_ml:4f} scipy={t_sp:4f}")
Distance (Euclidean) calculation with scipy.cdist:
size=10: t_sp/t_ml=9.535875 molli=0.001277 scipy=0.012177
size=100: t_sp/t_ml=3.079132 molli=0.006536 scipy=0.020125
size=1000: t_sp/t_ml=4.997022 molli=0.065151 scipy=0.325563
size=10000: t_sp/t_ml=2.504050 molli=0.744849 scipy=1.865138
size=20000: t_sp/t_ml=1.908507 molli=1.464665 scipy=2.795323