From b8135520ed64f66b1ce3127f7a1854b291d58bec Mon Sep 17 00:00:00 2001 From: adust09 Date: Sat, 25 Oct 2025 23:38:16 +0900 Subject: [PATCH 1/3] Refactor prove_execution to compute grand product execution equality weights using dot product --- crates/lean_prover/src/prove_execution.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/lean_prover/src/prove_execution.rs b/crates/lean_prover/src/prove_execution.rs index c92f418d..e12a6140 100644 --- a/crates/lean_prover/src/prove_execution.rs +++ b/crates/lean_prover/src/prove_execution.rs @@ -6,6 +6,7 @@ use lookup::prove_gkr_product; use lookup::{compute_pushforward, prove_logup_star}; use multilinear_toolkit::prelude::*; use p3_air::BaseAir; +use p3_field::dot_product; use p3_field::ExtensionField; use p3_field::Field; use p3_field::PrimeCharacteristicRing; @@ -496,7 +497,7 @@ pub fn prove_execution( ) }); - // TODO compute eq polynomial 1 time and then inner product with each column + let grand_product_exec_eq_weights = eval_eq(&grand_product_exec_sumcheck_point); for col in [ COL_INDEX_OPERAND_C, COL_INDEX_ADD, @@ -510,7 +511,13 @@ pub fn prove_execution( ] { grand_product_exec_sumcheck_inner_evals.insert( col, - full_trace[col].evaluate(&grand_product_exec_sumcheck_point), + dot_product::( + grand_product_exec_eq_weights.iter().copied(), + full_trace[col] + .iter() + .copied() + .map(EF::from), + ), ); } assert_eq!( From ecce8d10b5eb4dd25ea00d2e99a19cdffed02c28 Mon Sep 17 00:00:00 2001 From: adust09 Date: Tue, 28 Oct 2025 16:19:37 +0900 Subject: [PATCH 2/3] Refactor dot product computation in prove_execution for improved readability --- crates/lean_prover/src/prove_execution.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/lean_prover/src/prove_execution.rs b/crates/lean_prover/src/prove_execution.rs index 97bc557e..ee3063bb 100644 --- a/crates/lean_prover/src/prove_execution.rs +++ b/crates/lean_prover/src/prove_execution.rs @@ -500,10 +500,7 @@ pub fn prove_execution( col, dot_product::( grand_product_exec_eq_weights.iter().copied(), - full_trace[col] - .iter() - .copied() - .map(EF::from), + full_trace[col].iter().copied().map(EF::from), ), ); } From 7bc6499b030e4dc7697440cc06899b30f76de8cb Mon Sep 17 00:00:00 2001 From: Tom Wambsgans Date: Tue, 28 Oct 2025 16:21:23 +0400 Subject: [PATCH 3/3] multi-threaded + SIMD --- crates/lean_prover/src/prove_execution.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/lean_prover/src/prove_execution.rs b/crates/lean_prover/src/prove_execution.rs index ee3063bb..f2156d94 100644 --- a/crates/lean_prover/src/prove_execution.rs +++ b/crates/lean_prover/src/prove_execution.rs @@ -484,7 +484,7 @@ pub fn prove_execution( ) }); - let grand_product_exec_eq_weights = eval_eq(&grand_product_exec_sumcheck_point); + let grand_product_exec_eq_weights = eval_eq_packed(&grand_product_exec_sumcheck_point); for col in [ COL_INDEX_OPERAND_C, COL_INDEX_ADD, @@ -498,9 +498,9 @@ pub fn prove_execution( ] { grand_product_exec_sumcheck_inner_evals.insert( col, - dot_product::( - grand_product_exec_eq_weights.iter().copied(), - full_trace[col].iter().copied().map(EF::from), + dot_product_ef_packed_par( + &grand_product_exec_eq_weights, + FPacking::::pack_slice(&full_trace[col]), ), ); }