We are researching and implementing methods to accelerate multi-scalar multiplication (MSM) on IOS mobile device.
This is a of various implementations of MSM functions, which are then integrated in mopro-core
.
Currently we support these MSM algorithms on BN254:
- arkworks_pippenger
- bucket_wise_msm
- precompute_msm
- metal::msm (GPU)
Replace MSM_ALGO
with one of the algorithms above to get the corresponding benchmarks.
Benchmarking for single instance size:
cargo test --release --package mopro-msm --lib -- msm::MSM_ALGO::tests::test_run_benchmark --exact --nocapture
Benchmarking for multiple instance size:
cargo test --release --package mopro-msm --lib -- msm::MSM_ALGO::tests::test_run_multi_benchmarks --exact --nocapture
This is a benchmark app to compare the performance of different algorithms on iOS device.
You can run the following commands in the root directory of the project to compile the metal library for a given OS:
# for macOS
bash mopro-msm/src/msm/metal/compile_metal.sh
# for iphoneOS
bash mopro-msm/src/msm/metal/compile_metal_iphone.sh