Insights into input trans
Piotr Mikołajczyk piomiko41@gmail.com
Tue, 15 Oct 2024 14:50:22 +0200
3 files changed,
22 insertions(+),
10 deletions(-)
M
analysis.py
→
analysis.py
@@ -46,12 +46,15 @@ scenarios[scenario_name] = {
"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 @@ print(report(" Prepare folding", data["Prepare folding"]))
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')
M
src/folding.rs
→
src/folding.rs
@@ -8,6 +8,7 @@ frontend::circom::CircomFCircuit,
transcript::poseidon::poseidon_canonical_config, Error, FoldingScheme, MultiFolding, }; +use tracing::info_span; pub type NovaFolding = Nova<G1, GVar, G2, GVar2, CircomFCircuit<Fr>, KZG<'static, Bn254>, Pedersen<G2>, false>;@@ -55,8 +56,12 @@ multi_input: Vec<Vec<Fr>>,
initial_state: Vec<Fr>, 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) + }) } }
M
src/scenario_config.rs
→
src/scenario_config.rs
@@ -16,7 +16,7 @@
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),