From fc508c557d2f7e104ab88d46fd5543417f43ac8c Mon Sep 17 00:00:00 2001 From: David Nevado Date: Tue, 2 Apr 2024 11:09:22 +0200 Subject: [PATCH] fix: arithmetic bench replace IPAParams genration function with manual generation --- halo2_proofs/benches/arithmetic.rs | 42 ++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/halo2_proofs/benches/arithmetic.rs b/halo2_proofs/benches/arithmetic.rs index 4ae88af137..00981ef973 100644 --- a/halo2_proofs/benches/arithmetic.rs +++ b/halo2_proofs/benches/arithmetic.rs @@ -1,13 +1,13 @@ #[macro_use] extern crate criterion; -use crate::arithmetic::small_multiexp; +use crate::arithmetic::{parallelize, small_multiexp, CurveAffine, CurveExt}; use crate::halo2curves::pasta::{EqAffine, Fp}; +use group::cofactor::CofactorCurveAffine; use group::ff::Field; +use group::{Curve, Group}; use halo2_proofs::*; -use halo2_proofs::poly::{commitment::ParamsProver, ipa::commitment::ParamsIPA}; - use criterion::{black_box, Criterion}; use rand_core::OsRng; @@ -16,8 +16,40 @@ fn criterion_benchmark(c: &mut Criterion) { // small multiexp { - let params: ParamsIPA = ParamsIPA::new(5); - let g = &mut params.get_g().to_vec(); + let k = 5u32; + let n: u64 = 1 << k; + let id = ::Curve::identity(); + + let g_projective = { + let mut g = Vec::with_capacity(n as usize); + g.resize(n as usize, id); + + parallelize(&mut g, move |g, start| { + let hasher = ::CurveExt::hash_to_curve("Halo2-Parameters"); + + for (i, g) in g.iter_mut().enumerate() { + let i = (i + start) as u32; + + let mut message = [0u8; 5]; + message[1..5].copy_from_slice(&i.to_le_bytes()); + + *g = hasher(&message); + } + }); + + g + }; + + let mut g = { + let mut g: Vec = vec![id.into(); n as usize]; + parallelize(&mut g, |g, starts| { + ::Curve::batch_normalize( + &g_projective[starts..(starts + g.len())], + g, + ); + }); + g + }; let len = g.len() / 2; let (g_lo, g_hi) = g.split_at_mut(len);