Skip to content

Commit

Permalink
zal: add default engine test
Browse files Browse the repository at this point in the history
  • Loading branch information
mratsim committed Mar 21, 2024
1 parent 02c4264 commit 6fa8b3a
Showing 1 changed file with 43 additions and 2 deletions.
45 changes: 43 additions & 2 deletions halo2_middleware/src/zal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,47 @@ mod test {
use group::{Curve, Group};
use rand_core::OsRng;

fn run_msm_zal<C: CurveAffine>(min_k: usize, max_k: usize) {
fn run_msm_zal_default<C: CurveAffine>(min_k: usize, max_k: usize) {
let points = (0..1 << max_k)
.map(|_| C::Curve::random(OsRng))
.collect::<Vec<_>>();
let mut affine_points = vec![C::identity(); 1 << max_k];
C::Curve::batch_normalize(&points[..], &mut affine_points[..]);
let points = affine_points;

let scalars = (0..1 << max_k)
.map(|_| C::Scalar::random(OsRng))
.collect::<Vec<_>>();

for k in min_k..=max_k {
let points = &points[..1 << k];
let scalars = &scalars[..1 << k];

let t0 = start_timer!(|| format!("freestanding msm k={}", k));
let e0 = best_multiexp(scalars, points);
end_timer!(t0);

let engine = PlonkEngineConfig::build_default::<G1Affine>();
let t1 = start_timer!(|| format!("H2cEngine msm k={}", k));
let e1 = engine.msm_backend.msm(scalars, points);
end_timer!(t1);

assert_eq!(e0, e1);

// Caching API
// -----------
let t2 = start_timer!(|| format!("H2cEngine msm cached base k={}", k));
let base_descriptor = engine.msm_backend.get_base_descriptor(points);
let e2 = engine
.msm_backend
.msm_with_cached_base(scalars, &base_descriptor);
end_timer!(t2);

assert_eq!(e0, e2)
}
}

fn run_msm_zal_custom<C: CurveAffine>(min_k: usize, max_k: usize) {
let points = (0..1 << max_k)
.map(|_| C::Curve::random(OsRng))
.collect::<Vec<_>>();
Expand Down Expand Up @@ -304,6 +344,7 @@ mod test {

#[test]
fn test_msm_zal() {
run_msm_zal::<G1Affine>(3, 14);
run_msm_zal_default::<G1Affine>(3, 14);
run_msm_zal_custom::<G1Affine>(3, 14);
}
}

0 comments on commit 6fa8b3a

Please sign in to comment.