From e75761557123d3b12cec8c27a2ef81b150b7a307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Miko=C5=82ajczyk?= Date: Tue, 15 Oct 2024 14:50:22 +0200 Subject: [PATCH] Insights into input trans --- analysis.py | 21 ++++++++++++++------- src/folding.rs | 9 +++++++-- src/scenario_config.rs | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/analysis.py b/analysis.py index b6b3e70..1223902 100644 --- a/analysis.py +++ b/analysis.py @@ -46,12 +46,15 @@ def process_logline(log): "Prepare folding": 0, "Transform input": 0, "Folding verification": 0, - "Folding steps": [] + "Proving": [], + "Input prep": [], } span_name = span.get("name") - if span_name == "Folding step": - scenarios[scenario_name]["Folding steps"].append(time_seconds) + if span_name == "Proving": + scenarios[scenario_name]["Proving"].append(time_seconds) + elif span_name == "Input prep": + scenarios[scenario_name]["Input prep"].append(time_seconds) else: scenarios[scenario_name][span_name] = time_seconds @@ -74,11 +77,15 @@ def print_results(): print(report(" Transform input", data["Transform input"])) print(report(" Folding verification", data["Folding verification"])) - folding_steps = data["Folding steps"] print(f" Folding Steps:") - print(report(" Average", sum(folding_steps) / len(folding_steps))) - print(report(" Min", min(folding_steps))) - print(report(" Max", max(folding_steps))) + input_trans = data["Input prep"] + print(report(" Input prep: Average", sum(input_trans) / len(input_trans))) + print(report(" Input prep: Min", min(input_trans))) + print(report(" Input prep: Max", max(input_trans))) + proving_steps = data["Proving"] + print(report(" Proving: Average", sum(proving_steps) / len(proving_steps))) + print(report(" Proving: Min", min(proving_steps))) + print(report(" Proving: Max", max(proving_steps))) process_logs('out.log') diff --git a/src/folding.rs b/src/folding.rs index ce34141..51e99ea 100644 --- a/src/folding.rs +++ b/src/folding.rs @@ -8,6 +8,7 @@ use sonobe::{ transcript::poseidon::poseidon_canonical_config, Error, FoldingScheme, MultiFolding, }; +use tracing::info_span; pub type NovaFolding = Nova, KZG<'static, Bn254>, Pedersen, false>; @@ -55,8 +56,12 @@ pub trait FoldingSchemeExt: FoldingScheme> { initial_state: Vec, rng: &mut impl rand::RngCore, ) -> Result<(), Error> { - let step_input = self.transform_multi_input(multi_input, initial_state, rng); - self.prove_step(rng, step_input.external_inputs, step_input.other_instances) + let step_input = info_span!("Input prep") + .in_scope(|| self.transform_multi_input(multi_input, initial_state, rng)); + + info_span!("Proving").in_scope(|| { + self.prove_step(rng, step_input.external_inputs, step_input.other_instances) + }) } } diff --git a/src/scenario_config.rs b/src/scenario_config.rs index 02f6178..a90f7a5 100644 --- a/src/scenario_config.rs +++ b/src/scenario_config.rs @@ -16,7 +16,7 @@ pub struct ScenarioConfig { impl ScenarioConfig { pub fn new() -> Self { Self { - num_inputs: 30, + num_inputs: 6, start_ivc_state: vec![Fr::zero(); 2], circuit: info_span!("Prepare circuit").in_scope(create_circuit), input: info_span!("Prepare input").in_scope(prepare_input),