From 68e38305129677746ac52fbff490f22164d385e2 Mon Sep 17 00:00:00 2001 From: codygunton Date: Tue, 12 Mar 2024 03:06:15 +0000 Subject: [PATCH] Further breakdown --- .../cpp/scripts/analyze_client_ivc_bench.py | 31 ++++++++++++++++--- .../protogalaxy/protogalaxy_prover.cpp | 4 +++ .../barretenberg/sumcheck/sumcheck_round.hpp | 2 ++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/barretenberg/cpp/scripts/analyze_client_ivc_bench.py b/barretenberg/cpp/scripts/analyze_client_ivc_bench.py index 0e95053b443..6cedf3509e7 100644 --- a/barretenberg/cpp/scripts/analyze_client_ivc_bench.py +++ b/barretenberg/cpp/scripts/analyze_client_ivc_bench.py @@ -27,13 +27,13 @@ # For each kept time, get the proportion over all kept times. sum_of_kept_times_ms = sum(float(time) for _, time in bench_components.items())/1e6 -MAX_LABEL_LENGTH = max(len(label) for label in to_keep) +max_label_length = max(len(label) for label in to_keep) column = {"function": "function", "ms": "ms", "%": "% sum"} print( - f"{column['function']:<{MAX_LABEL_LENGTH}}{column['ms']:>8} {column['%']:>8}") + f"{column['function']:<{max_label_length}}{column['ms']:>8} {column['%']:>8}") for key in to_keep: time_ms = bench[key]/1e6 - print(f"{key:<{MAX_LABEL_LENGTH}}{time_ms:>8.0f} {time_ms/sum_of_kept_times_ms:>8.2%}") + print(f"{key:<{max_label_length}}{time_ms:>8.0f} {time_ms/sum_of_kept_times_ms:>8.2%}") # Validate that kept times account for most of the total measured time. total_time_ms = bench["real_time"] @@ -42,8 +42,31 @@ sum_of_kept_times_ms, total_time_ms, sum_of_kept_times_ms/total_time_ms) print(totals) +print("\nMajor contributors:") +print( + f"{column['function']:<{max_label_length}}{column['ms']:>8} {column['%']:>7}") +for key in ['commit(t)', 'compute_combiner(t)', 'compute_perturbator(t)', 'compute_univariate(t)']: + time_ms = bench[key]/1e6 + print(f"{key:<{max_label_length}}{time_ms:>8.0f} {time_ms/sum_of_kept_times_ms:>8.2%}") + + print('\nBreakdown of ECCVMProver::create_prover:') for key in ["ECCVMComposer::compute_witness(t)", "ECCVMComposer::create_proving_key(t)"]: time_ms = bench[key]/1e6 total_time_ms = bench["ECCVMComposer::create_prover(t)"]/1e6 - print(f"{key:<{MAX_LABEL_LENGTH}}{time_ms:>8.0f} {time_ms/total_time_ms:>8.2%}") + print(f"{key:<{max_label_length}}{time_ms:>8.0f} {time_ms/total_time_ms:>8.2%}") + +print('\nBreakdown of ProtogalaxyProver::fold_instances:') +protogalaxy_round_labels = [ + "ProtoGalaxyProver_::preparation_round(t)", + "ProtoGalaxyProver_::perturbator_round(t)", + "ProtoGalaxyProver_::combiner_quotient_round(t)", + "ProtoGalaxyProver_::accumulator_update_round(t)" +] +max_label_length = max(len(label) for label in protogalaxy_round_labels) +for key in protogalaxy_round_labels: + time_ms = bench[key]/1e6 + total_time_ms = bench["ProtogalaxyProver::fold_instances(t)"]/1e6 + print(f"{key:<{max_label_length}}{time_ms:>8.0f} {time_ms/total_time_ms:>8.2%}") + + diff --git a/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_prover.cpp b/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_prover.cpp index 65df1840efa..a03480dd1b0 100644 --- a/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_prover.cpp +++ b/barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_prover.cpp @@ -199,11 +199,13 @@ std::shared_ptr ProtoGalaxyProver_ void ProtoGalaxyProver_::preparation_round() { + BB_OP_COUNT_TIME_NAME("ProtoGalaxyProver_::preparation_round"); prepare_for_folding(); }; template void ProtoGalaxyProver_::perturbator_round() { + BB_OP_COUNT_TIME_NAME("ProtoGalaxyProver_::perturbator_round"); state.accumulator = get_accumulator(); FF delta = transcript->template get_challenge("delta"); state.deltas = compute_round_challenge_pows(state.accumulator->proving_key->log_circuit_size, delta); @@ -221,6 +223,7 @@ template void ProtoGalaxyProver_::pertu template void ProtoGalaxyProver_::combiner_quotient_round() { + BB_OP_COUNT_TIME_NAME("ProtoGalaxyProver_::combiner_quotient_round"); auto perturbator_challenge = transcript->template get_challenge("perturbator_challenge"); instances.next_gate_challenges = update_gate_challenges(perturbator_challenge, state.accumulator->gate_challenges, state.deltas); @@ -239,6 +242,7 @@ template void ProtoGalaxyProver_::combi template void ProtoGalaxyProver_::accumulator_update_round() { + BB_OP_COUNT_TIME_NAME("ProtoGalaxyProver_::accumulator_update_round"); FF combiner_challenge = transcript->template get_challenge("combiner_quotient_challenge"); std::shared_ptr next_accumulator = compute_next_accumulator(instances, state.combiner_quotient, combiner_challenge, state.compressed_perturbator); diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp index 8f308808749..2a3441812d5 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp @@ -106,6 +106,8 @@ template class SumcheckProverRound { const bb::PowPolynomial& pow_polynomial, const RelationSeparator alpha) { + BB_OP_COUNT_TIME(); + // Compute the constant contribution of pow polynomials for each edge. This is the product of the partial // evaluation result c_l (i.e. pow(u_0,...,u_{l-1})) where u_0,...,u_{l-1} are the verifier challenges from // previous rounds) and the elements of pow(\vec{β}) not containing β_0,..., β_l.