More timing code for FRI prover (#146)

This commit is contained in:
Daniel Lubarov 2021-08-02 15:49:06 -07:00 committed by GitHub
parent 9fb780d34e
commit f150f7ec09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 16 deletions

View File

@ -147,7 +147,10 @@ impl<F: Field> PolynomialBatchCommitment<F> {
); );
} }
let os = OpeningSet::new( let os = timed!(
timing,
"construct the opening set",
OpeningSet::new(
zeta, zeta,
g, g,
commitments[0], commitments[0],
@ -155,6 +158,7 @@ impl<F: Field> PolynomialBatchCommitment<F> {
commitments[2], commitments[2],
commitments[3], commitments[3],
common_data, common_data,
)
); );
challenger.observe_opening_set(&os); challenger.observe_opening_set(&os);
@ -181,21 +185,33 @@ impl<F: Field> PolynomialBatchCommitment<F> {
.flat_map(|&p| &commitments[p.index].polynomials) .flat_map(|&p| &commitments[p.index].polynomials)
.map(|p| p.to_extension()) .map(|p| p.to_extension())
.chain(partial_products_polys); .chain(partial_products_polys);
let single_composition_poly = alpha.reduce_polys(single_polys); let single_composition_poly = timed!(
timing,
"reduce single polys",
alpha.reduce_polys(single_polys)
);
let single_quotient = Self::compute_quotient([zeta], single_composition_poly); let single_quotient = Self::compute_quotient([zeta], single_composition_poly);
final_poly += single_quotient; final_poly += single_quotient;
alpha.reset(); alpha.reset();
// Zs polynomials are opened at `zeta` and `g*zeta`. // Zs polynomials are opened at `zeta` and `g*zeta`.
let zs_composition_poly = alpha.reduce_polys(zs_polys.into_iter()); let zs_composition_poly = timed!(
timing,
"reduce Z polys",
alpha.reduce_polys(zs_polys.into_iter())
);
let zs_quotient = Self::compute_quotient([zeta, g * zeta], zs_composition_poly); let zs_quotient = Self::compute_quotient([zeta, g * zeta], zs_composition_poly);
alpha.shift_poly(&mut final_poly); alpha.shift_poly(&mut final_poly);
final_poly += zs_quotient; final_poly += zs_quotient;
let lde_final_poly = final_poly.lde(config.rate_bits); let lde_final_poly = final_poly.lde(config.rate_bits);
let lde_final_values = lde_final_poly.coset_fft(F::coset_shift().into()); let lde_final_values = timed!(
timing,
&format!("perform final FFT {}", lde_final_poly.len()),
lde_final_poly.coset_fft(F::coset_shift().into())
);
let fri_proof = fri_proof( let fri_proof = fri_proof(
&commitments &commitments

View File

@ -29,11 +29,15 @@ pub fn fri_proof<F: Field + Extendable<D>, const D: usize>(
assert_eq!(lde_polynomial_coeffs.coeffs.len(), n); assert_eq!(lde_polynomial_coeffs.coeffs.len(), n);
// Commit phase // Commit phase
let (trees, final_coeffs) = fri_committed_trees( let (trees, final_coeffs) = timed!(
timing,
"fold codewords in the commitment phase",
fri_committed_trees(
lde_polynomial_coeffs, lde_polynomial_coeffs,
lde_polynomial_values, lde_polynomial_values,
challenger, challenger,
config, config,
)
); );
// PoW phase // PoW phase