perf: make bump the default guest allocator - #869
Conversation
|
/bench |
Benchmark — real block (
|
| Metric | main | PR | Δ |
|---|---|---|---|
| Peak heap | 48519 MB | 48479 MB | -40 MB (-0.1%) ⚪ |
| Prove time | 166.381s | 163.209s | -3.172s (-1.9%) ⚪ |
✅ No significant change.
Prove-time spread 1.0% (163.487s / 161.832s / 163.209s)
Commit: 3bb45e0 · Baseline: cached · Runner: self-hosted bench
|
/bench |
…nto perf/dlmalloc-guest-allocator
GPU Benchmark (ABBA) —
|
|
/bench |
|
/bench |
|
/bench |
|
/bench-gpu |
|
Automated review pass (adversarially verified). Findings:
Bump-allocator soundness (zero-init invariant, realloc-leak behavior, alignment arithmetic), dlmalloc integration ( |
|
Correction to the earlier automated pass — underweighted a real issue, elevating it:
Worth deciding explicitly: is "spins instead of failing" on heap exhaustion an acceptable known limitation to ship (with docs steering realloc-heavy/unbounded-churn guests to |
|
/bench |
|
/bench-gpu 32 |
|
/profile_recursion |
Recursion guest profileSingle query (blowup=2, 1 query)Total cycles: 329,518,680 · Unique PCs: 113,219 · Exec time: 16.256825965s Top 25 functions by cycles (all steps)
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 96.80% of total cycles. Step
|
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 26 | 50.98% | 50.98% | 26 | std::panicking::set_hook |
| 2 | 16 | 31.37% | 82.35% | 16 | main |
| 3 | 9 | 17.65% | 100.00% | 9 | lambda_vm_syscalls::allocator::init_allocator |
Each function's cycles are summed over all its program counters in this table's scope; the top 3 cover 100.00% of this step's cycles.
Step airs_bus_balance of 302,080,231 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 108,547,512 | 35.93% | 35.93% | 165 | <core::hash::sip::Hasher<core::hash::sip::Sip13Rounds> as core::hash::Hasher>::write |
| 2 | 91,825,188 | 30.40% | 66.33% | 210 | <std::hash::random::RandomState as core::hash::BuildHasher>::hash_one::<&(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)> |
| 3 | 40,825,197 | 13.51% | 79.85% | 285 | <stark::constraint_ir::builder::IrBuilder>::push |
| 4 | 18,746,627 | 6.21% | 86.05% | 182 | <stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::flatten |
| 5 | 8,290,815 | 2.74% | 88.80% | 58 | <alloc::rc::Rc<stark::constraints::builder::TreeNode>>::drop_slow |
| 6 | 6,729,108 | 2.23% | 91.02% | 270 | <hashbrown::raw::RawTable<((stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32)>>::reserve_rehash::<hashbrown::map::make_hasher<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32, std::hash::random::RandomState>::{closure#0}> |
| 7 | 5,465,106 | 1.81% | 92.83% | 42 | <(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim) as hashbrown::Equivalent<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)>>::equivalent |
| 8 | 4,182,360 | 1.38% | 94.22% | 15 | __rustc::__rust_alloc |
| 9 | 4,000,384 | 1.32% | 95.54% | 32 | <stark::constraints::builder::IrExpr>::leaf |
| 10 | 2,457,868 | 0.81% | 96.36% | 41 | <stark::constraints::builder::IrExpr as core::ops::arith::Mul>::mul |
| 11 | 1,910,246 | 0.63% | 96.99% | 125 | compiler_builtins::mem::memcpy |
| 12 | 1,473,938 | 0.49% | 97.48% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Add>::add |
| 13 | 1,458,207 | 0.48% | 97.96% | 121 | <alloc::vec::Vec<stark::lookup::BusValue> as core::clone::Clone>::clone |
| 14 | 1,283,905 | 0.43% | 98.38% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Sub>::sub |
| 15 | 546,514 | 0.18% | 98.56% | 456 | stark::lookup::emit_fingerprint::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 16 | 475,200 | 0.16% | 98.72% | 971 | <lambda_vm_prover::tables::ecdas::EcdasConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 17 | 418,272 | 0.14% | 98.86% | 150 | <lambda_vm_prover::tables::ecdas::EcdasConstraints>::rq::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 18 | 391,100 | 0.13% | 98.99% | 434 | <lambda_vm_prover::tables::ecsm::EcsmConstraints>::conv_carry::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 19 | 311,812 | 0.10% | 99.09% | 96 | stark::lookup::emit_linear_terms::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 20 | 287,868 | 0.10% | 99.19% | 149 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::clone::Clone>::clone |
| 21 | 278,828 | 0.09% | 99.28% | 1 | __rustc::__rust_no_alloc_shim_is_unstable_v2 |
| 22 | 253,899 | 0.08% | 99.36% | 1 | __rustc::__rust_dealloc |
| 23 | 171,255 | 0.06% | 99.42% | 147 | <std::hash::random::RandomState as core::hash::BuildHasher>::hash_one::<&stark::traits::ZerofierGroupKey> |
| 24 | 132,010 | 0.04% | 99.46% | 91 | <stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as stark::constraints::builder::ConstraintBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::emit_base_rows |
| 25 | 116,475 | 0.04% | 99.50% | 31 | memset |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.50% of this step's cycles.
Step multi_verify_setup of 30,153 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 20,126 | 66.75% | 66.75% | 71 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 2 | 2,800 | 9.29% | 76.03% | 112 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::ood_blocks_well_formed |
| 3 | 2,583 | 8.57% | 84.60% | 493 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 754 | 2.50% | 87.10% | 29 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::trace_ood_next_row_columns |
| 5 | 694 | 2.30% | 89.40% | 219 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::next_sample_u64 |
| 6 | 520 | 1.72% | 91.13% | 121 | stark::domain::new_verifier_domain::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> |
| 7 | 456 | 1.51% | 92.64% | 27 | compiler_builtins::mem::memcpy |
| 8 | 420 | 1.39% | 94.03% | 15 | __rustc::__rust_alloc |
| 9 | 269 | 0.89% | 94.92% | 15 | stark::lookup::logup_max_degree |
| 10 | 227 | 0.75% | 95.68% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::commit::CommitConstraints> as stark::traits::AIR>::composition_poly_degree_bound |
| 11 | 198 | 0.66% | 96.33% | 24 | memset |
| 12 | 160 | 0.53% | 96.86% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::composition_poly_degree_bound |
| 13 | 106 | 0.35% | 97.21% | 82 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::ops::range::Range<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#1}>>>::from_iter |
| 14 | 90 | 0.30% | 97.51% | 3 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::has_trace_interaction |
| 15 | 74 | 0.25% | 97.76% | 37 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutputReset>::finalize_into_reset |
| 16 | 70 | 0.23% | 97.99% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 17 | 64 | 0.21% | 98.20% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::precomputed_commitment |
| 18 | 60 | 0.20% | 98.40% | 4 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::trace_layout |
| 19 | 60 | 0.20% | 98.60% | 3 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::has_trace_interaction |
| 20 | 56 | 0.19% | 98.79% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 21 | 50 | 0.17% | 98.95% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::num_auxiliary_rap_columns |
| 22 | 40 | 0.13% | 99.08% | 4 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::trace_layout |
| 23 | 30 | 0.10% | 99.18% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::context |
| 24 | 30 | 0.10% | 99.28% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::is_preprocessed |
| 25 | 30 | 0.10% | 99.38% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::step_size |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.38% of this step's cycles.
Step step1:replay of 3,267,262 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 891,538 | 27.29% | 27.29% | 221 | <core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>> as core::iter::traits::iterator::Iterator>::next |
| 2 | 697,833 | 21.36% | 48.65% | 1023 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 3 | 425,718 | 13.03% | 61.68% | 72 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 4 | 277,271 | 8.49% | 70.16% | 245 | stark::lookup::compute_alpha_powers::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 5 | 210,285 | 6.44% | 76.60% | 164 | stark::ood::build_pruned_trace_term_coeffs::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 6 | 203,440 | 6.23% | 82.82% | 112 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_elem::SpecFromElem>::from_elem::<alloc::alloc::Global> |
| 7 | 129,664 | 3.97% | 86.79% | 27 | compiler_builtins::mem::memcpy |
| 8 | 90,738 | 2.78% | 89.57% | 100 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>>>>::from_iter |
| 9 | 86,940 | 2.66% | 92.23% | 217 | stark::ood::reconstruct_ood_full::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 10 | 75,705 | 2.32% | 94.55% | 15 | __rustc::__rust_alloc |
| 11 | 61,656 | 1.89% | 96.44% | 24 | memset |
| 12 | 39,778 | 1.22% | 97.65% | 219 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::next_sample_u64 |
| 13 | 14,863 | 0.45% | 98.11% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 14 | 11,336 | 0.35% | 98.45% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 15 | 5,572 | 0.17% | 98.62% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 16 | 5,072 | 0.16% | 98.78% | 1 | __rustc::__rust_no_alloc_shim_is_unstable_v2 |
| 17 | 4,889 | 0.15% | 98.93% | 46 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 18 | 4,588 | 0.14% | 99.07% | 37 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutputReset>::finalize_into_reset |
| 19 | 3,535 | 0.11% | 99.18% | 35 | <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> |
| 20 | 3,375 | 0.10% | 99.28% | 135 | stark::grinding::is_valid_nonce |
| 21 | 2,800 | 0.09% | 99.37% | 112 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::ood_blocks_well_formed |
| 22 | 2,705 | 0.08% | 99.45% | 33 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 23 | 2,425 | 0.07% | 99.52% | 97 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as crypto::fiat_shamir::is_transcript::IsStarkTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::goldilocks::GoldilocksField>>::sample_z_ood_with_domain_params |
| 24 | 2,295 | 0.07% | 99.59% | 29 | compiler_builtins::mem::memmove |
| 25 | 2,175 | 0.07% | 99.66% | 29 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutput>::finalize_into |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.66% of this step's cycles.
Step step2:claimed of 19,515,878 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 8,462,071 | 43.36% | 43.36% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 2 | 2,961,756 | 15.18% | 58.54% | 706 | math::field::goldilocks::inv_addition_chain |
| 3 | 1,101,634 | 5.64% | 64.18% | 1266 | stark::lookup::emit_fingerprint::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 1,068,872 | 5.48% | 69.66% | 1793 | <lambda_vm_prover::tables::ecdas::EcdasConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 5 | 906,874 | 4.65% | 74.30% | 874 | <lambda_vm_prover::tables::ecsm::EcsmConstraints>::conv_carry::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 6 | 898,287 | 4.60% | 78.91% | 403 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 7 | 790,176 | 4.05% | 82.96% | 261 | <lambda_vm_prover::tables::ecdas::EcdasConstraints>::rq::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 8 | 632,453 | 3.24% | 86.20% | 183 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul<&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 9 | 585,314 | 3.00% | 89.20% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 10 | 459,023 | 2.35% | 91.55% | 159 | stark::lookup::emit_linear_terms::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 11 | 311,315 | 1.60% | 93.14% | 177 | <&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 12 | 266,744 | 1.37% | 94.51% | 771 | stark::lookup::emit_logup_constraints::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 13 | 207,345 | 1.06% | 95.57% | 870 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 14 | 200,564 | 1.03% | 96.60% | 91 | stark::constraints::zerofier::evaluate_zerofier::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 15 | 125,580 | 0.64% | 97.24% | 245 | <core::iter::adapters::map::Map<core::iter::adapters::step_by::StepBy<core::ops::range::Range<usize>>, <stark::proof::view::StarkTableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::into_frame::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<stark::table::TableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <alloc::vec::Vec<stark::table::TableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::extend_trusted<core::iter::adapters::map::Map<core::iter::adapters::step_by::StepBy<core::ops::range::Range<usize>>, <stark::proof::view::StarkTableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::into_frame::{closure#0}>>::{closure#0}>::{closure#0}> |
| 16 | 124,414 | 0.64% | 97.88% | 238 | stark::lookup::compute_alpha_powers::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 17 | 70,560 | 0.36% | 98.24% | 324 | stark::lookup::emit_multiplicity::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 18 | 57,304 | 0.29% | 98.54% | 26 | stark::constraints::zerofier::end_exemptions_roots::<math::field::goldilocks::GoldilocksField> |
| 19 | 56,572 | 0.29% | 98.83% | 1211 | <lambda_vm_prover::tables::ecsm::EcsmConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 20 | 41,775 | 0.21% | 99.04% | 919 | <lambda_vm_prover::tables::keccak_rnd::KeccakRndConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 21 | 41,496 | 0.21% | 99.25% | 31 | memset |
| 22 | 31,805 | 0.16% | 99.42% | 124 | lambda_vm_prover::constraints::templates::add_terms_expr::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 23 | 15,943 | 0.08% | 99.50% | 623 | lambda_vm_prover::constraints::templates::emit_add_pair::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 24 | 6,825 | 0.03% | 99.53% | 39 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 25 | 6,750 | 0.03% | 99.57% | 15 | __rustc::__rust_alloc |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.57% of this step's cycles.
Step step3:fri of 3,056,345 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 2,069,058 | 67.70% | 67.70% | 4670 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri |
| 2 | 495,581 | 16.21% | 83.91% | 616 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 3 | 98,550 | 3.22% | 87.14% | 706 | math::field::goldilocks::inv_addition_chain |
| 4 | 74,202 | 2.43% | 89.56% | 473 | <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::evaluate_offset_fft::<math::field::goldilocks::GoldilocksField> |
| 5 | 53,680 | 1.76% | 91.32% | 100 | math::fft::bit_reversing::in_place_bit_reverse_permute::<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 6 | 47,424 | 1.55% | 92.87% | 588 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse_sequential |
| 7 | 40,571 | 1.33% | 94.20% | 328 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::slice::iter::Iter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>, core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::scale<math::field::goldilocks::GoldilocksField>::{closure#0}>>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::scale<math::field::goldilocks::GoldilocksField>::{closure#1}>>>::from_iter |
| 8 | 27,654 | 0.90% | 95.10% | 24 | memset |
| 9 | 26,477 | 0.87% | 95.97% | 153 | <math::fft::bowers_fft::LayerTwiddles<math::field::goldilocks::GoldilocksField>>::build |
| 10 | 24,593 | 0.80% | 96.78% | 27 | compiler_builtins::mem::memcpy |
| 11 | 20,150 | 0.66% | 97.43% | 403 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 12 | 13,776 | 0.45% | 97.89% | 48 | lambda_vm_syscalls::keccak::keccak256_pair |
| 13 | 10,929 | 0.36% | 98.24% | 177 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 14 | 10,435 | 0.34% | 98.58% | 79 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 15 | 9,328 | 0.31% | 98.89% | 110 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::cloned::Cloned<core::iter::adapters::skip_while::SkipWhile<core::iter::adapters::rev::Rev<core::slice::iter::Iter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::new::{closure#0}>>>>::from_iter |
| 16 | 7,705 | 0.25% | 99.14% | 318 | math::fft::bowers_fft::bowers_fft_opt_fused::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 17 | 4,680 | 0.15% | 99.29% | 15 | __rustc::__rust_alloc |
| 18 | 4,025 | 0.13% | 99.43% | 161 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, core::iter::adapters::map::Map<core::slice::iter::Iter<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri::{closure#1}>>>::from_iter |
| 19 | 3,393 | 0.11% | 99.54% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 20 | 3,080 | 0.10% | 99.64% | 50 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 21 | 2,166 | 0.07% | 99.71% | 38 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 22 | 1,988 | 0.07% | 99.77% | 35 | <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> |
| 23 | 1,575 | 0.05% | 99.83% | 63 | <math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>>::inplace_batch_inverse_sequential |
| 24 | 1,197 | 0.04% | 99.86% | 21 | __rustc::__rust_realloc |
| 25 | 700 | 0.02% | 99.89% | 129 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_query_and_sym_openings::{closure#2}>>>>::from_iter |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.89% of this step's cycles.
Step step4:openings of 1,568,760 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 572,542 | 36.50% | 36.50% | 77 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 2 | 294,612 | 18.78% | 55.28% | 177 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_opening_pair::<math::field::goldilocks::GoldilocksField> |
| 3 | 274,902 | 17.52% | 72.80% | 78 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::ops::drop::Drop>::drop |
| 4 | 250,971 | 16.00% | 88.80% | 923 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 5 | 59,754 | 3.81% | 92.61% | 95 | core::ptr::drop_in_place::<stark::verifier::Challenges<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 6 | 31,134 | 1.98% | 94.59% | 24 | memset |
| 7 | 27,292 | 1.74% | 96.33% | 124 | stark::domain::new_verifier_domain::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> |
| 8 | 17,424 | 1.11% | 97.44% | 1 | __rustc::__rust_dealloc |
| 9 | 16,241 | 1.04% | 98.48% | 27 | compiler_builtins::mem::memcpy |
| 10 | 16,080 | 1.03% | 99.50% | 48 | lambda_vm_syscalls::keccak::keccak256_pair |
| 11 | 2,268 | 0.14% | 99.65% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 12 | 1,005 | 0.06% | 99.71% | 67 | core::ptr::drop_in_place::<stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints>> |
| 13 | 750 | 0.05% | 99.76% | 15 | __rustc::__rust_alloc |
| 14 | 696 | 0.04% | 99.80% | 29 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::trace_ood_next_row_columns |
| 15 | 670 | 0.04% | 99.85% | 67 | core::ptr::drop_in_place::<stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints>> |
| 16 | 600 | 0.04% | 99.88% | 25 | <hashbrown::raw::RawTable<(usize, core::option::Option<rkyv::de::pooling::alloc::SharedPointer>)> as core::ops::drop::Drop>::drop |
| 17 | 572 | 0.04% | 99.92% | 572 | core::ptr::drop_in_place::<lambda_vm_prover::VmAirs> |
| 18 | 216 | 0.01% | 99.93% | 2 | memcpy |
| 19 | 158 | 0.01% | 99.94% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 20 | 144 | 0.01% | 99.95% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::options |
| 21 | 127 | 0.01% | 99.96% | 127 | lambda_vm_prover::recursion::program_id_from_digest |
| 22 | 80 | 0.01% | 99.97% | 80 | lambda_vm_prover::recursion::verify_and_attest_blob |
| 23 | 63 | 0.00% | 99.97% | 63 | lambda_vm_prover::verify_recursion_blob |
| 24 | 60 | 0.00% | 99.97% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::step_size |
| 25 | 60 | 0.00% | 99.98% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::context |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.98% of this step's cycles.
Multi query (blowup=8, 128-bit)
Total cycles: 522,557,472 · Unique PCs: 114,204 · Exec time: 50.259320348s
Top 25 functions by cycles (all steps)
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 108,549,037 | 20.77% | 20.77% | 226 | <core::hash::sip::Hasher<core::hash::sip::Sip13Rounds> as core::hash::Hasher>::write |
| 2 | 91,825,188 | 17.57% | 38.34% | 210 | <std::hash::random::RandomState as core::hash::BuildHasher>::hash_one::<&(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)> |
| 3 | 91,259,602 | 17.46% | 55.81% | 4715 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri |
| 4 | 41,069,398 | 7.86% | 63.67% | 347 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 5 | 40,825,197 | 7.81% | 71.48% | 285 | <stark::constraint_ir::builder::IrBuilder>::push |
| 6 | 21,592,994 | 4.13% | 75.61% | 176 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_opening_pair::<math::field::goldilocks::GoldilocksField> |
| 7 | 18,746,627 | 3.59% | 79.20% | 182 | <stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::flatten |
| 8 | 18,679,484 | 3.57% | 82.78% | 3310 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 9 | 9,260,971 | 1.77% | 84.55% | 390 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 10 | 8,290,815 | 1.59% | 86.13% | 58 | <alloc::rc::Rc<stark::constraints::builder::TreeNode>>::drop_slow |
| 11 | 7,795,962 | 1.49% | 87.63% | 2118 | math::field::goldilocks::inv_addition_chain |
| 12 | 6,729,108 | 1.29% | 88.91% | 270 | <hashbrown::raw::RawTable<((stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32)>>::reserve_rehash::<hashbrown::map::make_hasher<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32, std::hash::random::RandomState>::{closure#0}> |
| 13 | 5,465,106 | 1.05% | 89.96% | 42 | <(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim) as hashbrown::Equivalent<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)>>::equivalent |
| 14 | 5,265,549 | 1.01% | 90.97% | 158 | memset |
| 15 | 4,354,155 | 0.83% | 91.80% | 90 | __rustc::__rust_alloc |
| 16 | 4,000,384 | 0.77% | 92.57% | 32 | <stark::constraints::builder::IrExpr>::leaf |
| 17 | 3,434,556 | 0.66% | 93.22% | 713 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse_sequential |
| 18 | 3,357,232 | 0.64% | 93.87% | 260 | compiler_builtins::mem::memcpy |
| 19 | 2,918,832 | 0.56% | 94.42% | 144 | lambda_vm_syscalls::keccak::keccak256_pair |
| 20 | 2,485,667 | 0.48% | 94.90% | 616 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 21 | 2,457,868 | 0.47% | 95.37% | 41 | <stark::constraints::builder::IrExpr as core::ops::arith::Mul>::mul |
| 22 | 2,369,237 | 0.45% | 95.82% | 806 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 23 | 1,473,938 | 0.28% | 96.11% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Add>::add |
| 24 | 1,458,207 | 0.28% | 96.38% | 121 | <alloc::vec::Vec<stark::lookup::BusValue> as core::clone::Clone>::clone |
| 25 | 1,283,905 | 0.25% | 96.63% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Sub>::sub |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 96.63% of total cycles.
Step setup of 51 step cycles — top 3 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 26 | 50.98% | 50.98% | 26 | std::panicking::set_hook |
| 2 | 16 | 31.37% | 82.35% | 16 | main |
| 3 | 9 | 17.65% | 100.00% | 9 | lambda_vm_syscalls::allocator::init_allocator |
Each function's cycles are summed over all its program counters in this table's scope; the top 3 cover 100.00% of this step's cycles.
Step airs_bus_balance of 303,595,197 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 108,547,512 | 35.75% | 35.75% | 165 | <core::hash::sip::Hasher<core::hash::sip::Sip13Rounds> as core::hash::Hasher>::write |
| 2 | 91,825,188 | 30.25% | 66.00% | 210 | <std::hash::random::RandomState as core::hash::BuildHasher>::hash_one::<&(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)> |
| 3 | 40,825,197 | 13.45% | 79.45% | 285 | <stark::constraint_ir::builder::IrBuilder>::push |
| 4 | 18,746,627 | 6.17% | 85.62% | 182 | <stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::flatten |
| 5 | 8,290,815 | 2.73% | 88.35% | 58 | <alloc::rc::Rc<stark::constraints::builder::TreeNode>>::drop_slow |
| 6 | 6,729,108 | 2.22% | 90.57% | 270 | <hashbrown::raw::RawTable<((stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32)>>::reserve_rehash::<hashbrown::map::make_hasher<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32, std::hash::random::RandomState>::{closure#0}> |
| 7 | 5,465,106 | 1.80% | 92.37% | 42 | <(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim) as hashbrown::Equivalent<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)>>::equivalent |
| 8 | 4,182,420 | 1.38% | 93.75% | 15 | __rustc::__rust_alloc |
| 9 | 4,000,384 | 1.32% | 95.06% | 32 | <stark::constraints::builder::IrExpr>::leaf |
| 10 | 2,457,868 | 0.81% | 95.87% | 41 | <stark::constraints::builder::IrExpr as core::ops::arith::Mul>::mul |
| 11 | 1,983,974 | 0.65% | 96.53% | 125 | compiler_builtins::mem::memcpy |
| 12 | 1,473,938 | 0.49% | 97.01% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Add>::add |
| 13 | 1,458,207 | 0.48% | 97.49% | 121 | <alloc::vec::Vec<stark::lookup::BusValue> as core::clone::Clone>::clone |
| 14 | 1,283,905 | 0.42% | 97.92% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Sub>::sub |
| 15 | 546,514 | 0.18% | 98.10% | 456 | stark::lookup::emit_fingerprint::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 16 | 504,270 | 0.17% | 98.26% | 252 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::goldilocks::GoldilocksField> |
| 17 | 475,200 | 0.16% | 98.42% | 971 | <lambda_vm_prover::tables::ecdas::EcdasConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 18 | 418,272 | 0.14% | 98.56% | 150 | <lambda_vm_prover::tables::ecdas::EcdasConstraints>::rq::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 19 | 391,100 | 0.13% | 98.69% | 434 | <lambda_vm_prover::tables::ecsm::EcsmConstraints>::conv_carry::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 20 | 320,835 | 0.11% | 98.79% | 215 | <stark::proof::stark::ArchivedDeepPolynomialOpening<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as bytecheck::CheckBytes<rancor::Strategy<rkyv::validation::Validator<rkyv::validation::archive::validator::ArchiveValidator, rkyv::validation::shared::validator::SharedValidator>, rancor::Error>>>::check_bytes |
| 21 | 311,812 | 0.10% | 98.89% | 96 | stark::lookup::emit_linear_terms::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 22 | 287,868 | 0.09% | 98.99% | 149 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::clone::Clone>::clone |
| 23 | 278,832 | 0.09% | 99.08% | 1 | __rustc::__rust_no_alloc_shim_is_unstable_v2 |
| 24 | 253,903 | 0.08% | 99.16% | 1 | __rustc::__rust_dealloc |
| 25 | 185,595 | 0.06% | 99.23% | 31 | memset |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.23% of this step's cycles.
Step multi_verify_setup of 30,115 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 20,126 | 66.83% | 66.83% | 71 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 2 | 2,800 | 9.30% | 76.13% | 112 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::ood_blocks_well_formed |
| 3 | 2,583 | 8.58% | 84.71% | 493 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 754 | 2.50% | 87.21% | 29 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::trace_ood_next_row_columns |
| 5 | 694 | 2.30% | 89.51% | 219 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::next_sample_u64 |
| 6 | 482 | 1.60% | 91.11% | 121 | stark::domain::new_verifier_domain::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> |
| 7 | 456 | 1.51% | 92.63% | 27 | compiler_builtins::mem::memcpy |
| 8 | 420 | 1.39% | 94.02% | 15 | __rustc::__rust_alloc |
| 9 | 269 | 0.89% | 94.92% | 15 | stark::lookup::logup_max_degree |
| 10 | 227 | 0.75% | 95.67% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::commit::CommitConstraints> as stark::traits::AIR>::composition_poly_degree_bound |
| 11 | 198 | 0.66% | 96.33% | 24 | memset |
| 12 | 160 | 0.53% | 96.86% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::composition_poly_degree_bound |
| 13 | 106 | 0.35% | 97.21% | 82 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::ops::range::Range<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#1}>>>::from_iter |
| 14 | 90 | 0.30% | 97.51% | 3 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::has_trace_interaction |
| 15 | 74 | 0.25% | 97.76% | 37 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutputReset>::finalize_into_reset |
| 16 | 70 | 0.23% | 97.99% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 17 | 64 | 0.21% | 98.20% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::precomputed_commitment |
| 18 | 60 | 0.20% | 98.40% | 4 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::trace_layout |
| 19 | 60 | 0.20% | 98.60% | 3 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::has_trace_interaction |
| 20 | 56 | 0.19% | 98.78% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 21 | 50 | 0.17% | 98.95% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::num_auxiliary_rap_columns |
| 22 | 40 | 0.13% | 99.08% | 4 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::trace_layout |
| 23 | 30 | 0.10% | 99.18% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::context |
| 24 | 30 | 0.10% | 99.28% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::is_preprocessed |
| 25 | 30 | 0.10% | 99.38% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::step_size |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.38% of this step's cycles.
Step step1:replay of 3,644,905 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 873,883 | 23.98% | 23.98% | 221 | <core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>> as core::iter::traits::iterator::Iterator>::next |
| 2 | 697,833 | 19.15% | 43.12% | 1023 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 3 | 461,718 | 12.67% | 55.79% | 72 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 4 | 271,805 | 7.46% | 63.25% | 238 | stark::lookup::compute_alpha_powers::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 5 | 225,178 | 6.18% | 69.42% | 219 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::next_sample_u64 |
| 6 | 210,285 | 5.77% | 75.19% | 164 | stark::ood::build_pruned_trace_term_coeffs::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 7 | 203,440 | 5.58% | 80.77% | 112 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_elem::SpecFromElem>::from_elem::<alloc::alloc::Global> |
| 8 | 198,064 | 5.43% | 86.21% | 27 | compiler_builtins::mem::memcpy |
| 9 | 106,206 | 2.91% | 89.12% | 24 | memset |
| 10 | 90,738 | 2.49% | 91.61% | 100 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>>>>::from_iter |
| 11 | 86,940 | 2.39% | 94.00% | 217 | stark::ood::reconstruct_ood_full::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 12 | 75,705 | 2.08% | 96.07% | 15 | __rustc::__rust_alloc |
| 13 | 30,675 | 0.84% | 96.92% | 75 | <alloc::vec::Vec<usize> as alloc::vec::spec_from_iter::SpecFromIter<usize, core::iter::adapters::map::Map<core::ops::range::Range<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::sample_query_indexes<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>>>::from_iter |
| 14 | 21,238 | 0.58% | 97.50% | 37 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutputReset>::finalize_into_reset |
| 15 | 20,427 | 0.56% | 98.06% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 16 | 18,172 | 0.50% | 98.56% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 17 | 12,236 | 0.34% | 98.89% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 18 | 5,072 | 0.14% | 99.03% | 1 | __rustc::__rust_no_alloc_shim_is_unstable_v2 |
| 19 | 4,889 | 0.13% | 99.17% | 46 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 20 | 3,705 | 0.10% | 99.27% | 33 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 21 | 3,535 | 0.10% | 99.36% | 35 | <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> |
| 22 | 3,375 | 0.09% | 99.46% | 135 | stark::grinding::is_valid_nonce |
| 23 | 2,800 | 0.08% | 99.53% | 112 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::ood_blocks_well_formed |
| 24 | 2,425 | 0.07% | 99.60% | 97 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as crypto::fiat_shamir::is_transcript::IsStarkTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::goldilocks::GoldilocksField>>::sample_z_ood_with_domain_params |
| 25 | 2,295 | 0.06% | 99.66% | 29 | compiler_builtins::mem::memmove |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.66% of this step's cycles.
Step step2:claimed of 19,510,167 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 8,460,919 | 43.37% | 43.37% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 2 | 2,961,756 | 15.18% | 58.55% | 706 | math::field::goldilocks::inv_addition_chain |
| 3 | 1,101,634 | 5.65% | 64.19% | 1266 | stark::lookup::emit_fingerprint::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 1,068,872 | 5.48% | 69.67% | 1793 | <lambda_vm_prover::tables::ecdas::EcdasConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 5 | 906,874 | 4.65% | 74.32% | 874 | <lambda_vm_prover::tables::ecsm::EcsmConstraints>::conv_carry::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 6 | 898,287 | 4.60% | 78.92% | 403 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 7 | 790,176 | 4.05% | 82.97% | 261 | <lambda_vm_prover::tables::ecdas::EcdasConstraints>::rq::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 8 | 632,652 | 3.24% | 86.22% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul<&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 9 | 578,661 | 2.97% | 89.18% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 10 | 459,023 | 2.35% | 91.54% | 159 | stark::lookup::emit_linear_terms::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 11 | 311,305 | 1.60% | 93.13% | 195 | <&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 12 | 266,744 | 1.37% | 94.50% | 771 | stark::lookup::emit_logup_constraints::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 13 | 207,337 | 1.06% | 95.56% | 870 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 14 | 200,564 | 1.03% | 96.59% | 91 | stark::constraints::zerofier::evaluate_zerofier::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 15 | 126,327 | 0.65% | 97.24% | 238 | stark::lookup::compute_alpha_powers::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 16 | 125,580 | 0.64% | 97.88% | 245 | <core::iter::adapters::map::Map<core::iter::adapters::step_by::StepBy<core::ops::range::Range<usize>>, <stark::proof::view::StarkTableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::into_frame::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<stark::table::TableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <alloc::vec::Vec<stark::table::TableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::extend_trusted<core::iter::adapters::map::Map<core::iter::adapters::step_by::StepBy<core::ops::range::Range<usize>>, <stark::proof::view::StarkTableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::into_frame::{closure#0}>>::{closure#0}>::{closure#0}> |
| 17 | 70,560 | 0.36% | 98.24% | 324 | stark::lookup::emit_multiplicity::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 18 | 57,304 | 0.29% | 98.54% | 26 | stark::constraints::zerofier::end_exemptions_roots::<math::field::goldilocks::GoldilocksField> |
| 19 | 56,572 | 0.29% | 98.83% | 1211 | <lambda_vm_prover::tables::ecsm::EcsmConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 20 | 41,775 | 0.21% | 99.04% | 919 | <lambda_vm_prover::tables::keccak_rnd::KeccakRndConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 21 | 41,496 | 0.21% | 99.25% | 31 | memset |
| 22 | 31,805 | 0.16% | 99.42% | 124 | lambda_vm_prover::constraints::templates::add_terms_expr::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 23 | 15,943 | 0.08% | 99.50% | 623 | lambda_vm_prover::constraints::templates::emit_add_pair::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 24 | 6,825 | 0.03% | 99.53% | 39 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 25 | 6,750 | 0.03% | 99.57% | 15 | __rustc::__rust_alloc |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.57% of this step's cycles.
Step step3:fri of 109,858,474 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 91,259,152 | 83.07% | 83.07% | 4697 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri |
| 2 | 4,828,950 | 4.40% | 87.47% | 706 | math::field::goldilocks::inv_addition_chain |
| 3 | 3,432,506 | 3.12% | 90.59% | 631 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse_sequential |
| 4 | 2,485,667 | 2.26% | 92.85% | 616 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 5 | 1,860,480 | 1.69% | 94.55% | 24 | memset |
| 6 | 1,470,950 | 1.34% | 95.88% | 403 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 7 | 1,159,824 | 1.06% | 96.94% | 48 | lambda_vm_syscalls::keccak::keccak256_pair |
| 8 | 833,003 | 0.76% | 97.70% | 79 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 9 | 800,052 | 0.73% | 98.43% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 10 | 280,337 | 0.26% | 98.68% | 27 | compiler_builtins::mem::memcpy |
| 11 | 250,224 | 0.23% | 98.91% | 473 | <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::evaluate_offset_fft::<math::field::goldilocks::GoldilocksField> |
| 12 | 224,840 | 0.20% | 99.11% | 50 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 13 | 214,276 | 0.20% | 99.31% | 100 | math::fft::bit_reversing::in_place_bit_reverse_permute::<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 14 | 146,225 | 0.13% | 99.44% | 161 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, core::iter::adapters::map::Map<core::slice::iter::Iter<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri::{closure#1}>>>::from_iter |
| 15 | 133,500 | 0.12% | 99.56% | 157 | <math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>>::inplace_batch_inverse_sequential |
| 16 | 97,685 | 0.09% | 99.65% | 153 | <math::fft::bowers_fft::LayerTwiddles<math::field::goldilocks::GoldilocksField>>::build |
| 17 | 88,110 | 0.08% | 99.73% | 15 | __rustc::__rust_alloc |
| 18 | 51,100 | 0.05% | 99.78% | 129 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_query_and_sym_openings::{closure#2}>>>>::from_iter |
| 19 | 44,968 | 0.04% | 99.82% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 20 | 40,571 | 0.04% | 99.86% | 328 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::slice::iter::Iter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>, core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::scale<math::field::goldilocks::GoldilocksField>::{closure#0}>>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::scale<math::field::goldilocks::GoldilocksField>::{closure#1}>>>::from_iter |
| 21 | 29,200 | 0.03% | 99.88% | 16 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse |
| 22 | 26,284 | 0.02% | 99.91% | 318 | math::fft::bowers_fft::bowers_fft_opt_fused::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 23 | 21,900 | 0.02% | 99.93% | 12 | <stark::proof::view::StarkProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::query |
| 24 | 13,110 | 0.01% | 99.94% | 38 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 25 | 12,066 | 0.01% | 99.95% | 35 | <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.95% of this step's cycles.
Step step4:openings of 85,918,563 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 40,297,030 | 46.90% | 46.90% | 77 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 2 | 21,592,994 | 25.13% | 72.03% | 176 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_opening_pair::<math::field::goldilocks::GoldilocksField> |
| 3 | 17,771,656 | 20.68% | 92.72% | 921 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 3,071,574 | 3.57% | 96.29% | 24 | memset |
| 5 | 1,734,480 | 2.02% | 98.31% | 48 | lambda_vm_syscalls::keccak::keccak256_pair |
| 6 | 891,761 | 1.04% | 99.35% | 27 | compiler_builtins::mem::memcpy |
| 7 | 274,902 | 0.32% | 99.67% | 78 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::ops::drop::Drop>::drop |
| 8 | 163,548 | 0.19% | 99.86% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 9 | 59,754 | 0.07% | 99.93% | 95 | core::ptr::drop_in_place::<stark::verifier::Challenges<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 10 | 26,380 | 0.03% | 99.96% | 124 | stark::domain::new_verifier_domain::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> |
| 11 | 17,424 | 0.02% | 99.98% | 1 | __rustc::__rust_dealloc |
| 12 | 11,736 | 0.01% | 99.99% | 2 | memcpy |
| 13 | 1,005 | 0.00% | 99.99% | 67 | core::ptr::drop_in_place::<stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints>> |
| 14 | 750 | 0.00% | 100.00% | 15 | __rustc::__rust_alloc |
| 15 | 696 | 0.00% | 100.00% | 29 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::trace_ood_next_row_columns |
| 16 | 670 | 0.00% | 100.00% | 67 | core::ptr::drop_in_place::<stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints>> |
| 17 | 600 | 0.00% | 100.00% | 25 | <hashbrown::raw::RawTable<(usize, core::option::Option<rkyv::de::pooling::alloc::SharedPointer>)> as core::ops::drop::Drop>::drop |
| 18 | 572 | 0.00% | 100.00% | 572 | core::ptr::drop_in_place::<lambda_vm_prover::VmAirs> |
| 19 | 158 | 0.00% | 100.00% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 20 | 144 | 0.00% | 100.00% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::options |
| 21 | 127 | 0.00% | 100.00% | 127 | lambda_vm_prover::recursion::program_id_from_digest |
| 22 | 80 | 0.00% | 100.00% | 80 | lambda_vm_prover::recursion::verify_and_attest_blob |
| 23 | 63 | 0.00% | 100.00% | 63 | lambda_vm_prover::verify_recursion_blob |
| 24 | 60 | 0.00% | 100.00% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::step_size |
| 25 | 60 | 0.00% | 100.00% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::context |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 100.00% of this step's cycles.
Real ethrex block, 4 transfers (blowup=4, 110 queries)
Total cycles: 1,258,232,526 · Unique PCs: 118,181 · Exec time: 39.834317808s
Top 25 functions by cycles (all steps)
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 326,505,827 | 25.95% | 25.95% | 4831 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri |
| 2 | 166,097,972 | 13.20% | 39.15% | 353 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 3 | 108,422,672 | 8.62% | 47.77% | 391 | <core::hash::sip::Hasher<core::hash::sip::Sip13Rounds> as core::hash::Hasher>::write |
| 4 | 91,764,966 | 7.29% | 55.06% | 210 | <std::hash::random::RandomState as core::hash::BuildHasher>::hash_one::<&(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)> |
| 5 | 79,901,301 | 6.35% | 61.41% | 165 | memset |
| 6 | 69,458,521 | 5.52% | 66.93% | 176 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_opening_pair::<math::field::goldilocks::GoldilocksField> |
| 7 | 61,453,208 | 4.88% | 71.82% | 3310 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 8 | 49,872,960 | 3.96% | 75.78% | 144 | lambda_vm_syscalls::keccak::keccak256_pair |
| 9 | 40,851,163 | 3.25% | 79.03% | 297 | <stark::constraint_ir::builder::IrBuilder>::push |
| 10 | 38,280,486 | 3.04% | 82.07% | 215 | <executor::elf::Elf>::load |
| 11 | 28,455,343 | 2.26% | 84.33% | 390 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 12 | 26,278,686 | 2.09% | 86.42% | 2824 | math::field::goldilocks::inv_addition_chain |
| 13 | 18,739,582 | 1.49% | 87.91% | 182 | <stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::flatten |
| 14 | 17,656,972 | 1.40% | 89.31% | 358 | compiler_builtins::mem::memcpy |
| 15 | 16,581,192 | 1.32% | 90.63% | 616 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 16 | 14,374,690 | 1.14% | 91.77% | 1325 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse_sequential |
| 17 | 9,896,595 | 0.79% | 92.56% | 185 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 18 | 8,287,118 | 0.66% | 93.22% | 58 | <alloc::rc::Rc<stark::constraints::builder::TreeNode>>::drop_slow |
| 19 | 7,999,147 | 0.64% | 93.85% | 1209 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 20 | 6,720,814 | 0.53% | 94.39% | 270 | <hashbrown::raw::RawTable<((stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32)>>::reserve_rehash::<hashbrown::map::make_hasher<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32, std::hash::random::RandomState>::{closure#0}> |
| 21 | 5,457,893 | 0.43% | 94.82% | 42 | <(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim) as hashbrown::Equivalent<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)>>::equivalent |
| 22 | 5,117,985 | 0.41% | 95.23% | 90 | __rustc::__rust_alloc |
| 23 | 4,490,723 | 0.36% | 95.58% | 510 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 24 | 3,998,656 | 0.32% | 95.90% | 32 | <stark::constraints::builder::IrExpr>::leaf |
| 25 | 2,513,840 | 0.20% | 96.10% | 242 | <alloc::vec::Vec<stark::lookup::BusValue> as core::clone::Clone>::clone |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 96.10% of total cycles.
Step setup of 51 step cycles — top 3 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 26 | 50.98% | 50.98% | 26 | std::panicking::set_hook |
| 2 | 16 | 31.37% | 82.35% | 16 | main |
| 3 | 9 | 17.65% | 100.00% | 9 | lambda_vm_syscalls::allocator::init_allocator |
Each function's cycles are summed over all its program counters in this table's scope; the top 3 cover 100.00% of this step's cycles.
Step airs_bus_balance of 352,386,050 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 108,409,852 | 30.76% | 30.76% | 165 | <core::hash::sip::Hasher<core::hash::sip::Sip13Rounds> as core::hash::Hasher>::write |
| 2 | 91,764,966 | 26.04% | 56.81% | 210 | <std::hash::random::RandomState as core::hash::BuildHasher>::hash_one::<&(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)> |
| 3 | 40,851,163 | 11.59% | 68.40% | 297 | <stark::constraint_ir::builder::IrBuilder>::push |
| 4 | 38,280,486 | 10.86% | 79.26% | 215 | <executor::elf::Elf>::load |
| 5 | 18,739,582 | 5.32% | 84.58% | 182 | <stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::flatten |
| 6 | 8,287,118 | 2.35% | 86.93% | 58 | <alloc::rc::Rc<stark::constraints::builder::TreeNode>>::drop_slow |
| 7 | 6,720,814 | 1.91% | 88.84% | 270 | <hashbrown::raw::RawTable<((stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32)>>::reserve_rehash::<hashbrown::map::make_hasher<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim), u32, std::hash::random::RandomState>::{closure#0}> |
| 8 | 5,457,893 | 1.55% | 90.39% | 42 | <(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim) as hashbrown::Equivalent<(stark::constraint_ir::ir::Op, stark::constraint_ir::ir::Dim)>>::equivalent |
| 9 | 5,345,089 | 1.52% | 91.90% | 77 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 10 | 4,332,589 | 1.23% | 93.13% | 125 | compiler_builtins::mem::memcpy |
| 11 | 4,205,700 | 1.19% | 94.33% | 15 | __rustc::__rust_alloc |
| 12 | 3,998,656 | 1.13% | 95.46% | 32 | <stark::constraints::builder::IrExpr>::leaf |
| 13 | 2,457,007 | 0.70% | 96.16% | 41 | <stark::constraints::builder::IrExpr as core::ops::arith::Mul>::mul |
| 14 | 1,535,918 | 0.44% | 96.59% | 121 | <alloc::vec::Vec<stark::lookup::BusValue> as core::clone::Clone>::clone |
| 15 | 1,495,180 | 0.42% | 97.02% | 20 | <rancor::Strategy<rkyv::validation::Validator<rkyv::validation::archive::validator::ArchiveValidator, rkyv::validation::shared::validator::SharedValidator>, rancor::Error> as rkyv::validation::archive::ArchiveContextExt<rancor::Error>>::in_subtree::<[[u8; 32]], (), <rkyv::vec::ArchivedVec<[u8; 32]> as bytecheck::Verify<rancor::Strategy<rkyv::validation::Validator<rkyv::validation::archive::validator::ArchiveValidator, rkyv::validation::shared::validator::SharedValidator>, rancor::Error>>>::verify::{closure#0}> |
| 16 | 1,473,478 | 0.42% | 97.44% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Add>::add |
| 17 | 1,351,570 | 0.38% | 97.82% | 215 | <stark::proof::stark::ArchivedDeepPolynomialOpening<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as bytecheck::CheckBytes<rancor::Strategy<rkyv::validation::Validator<rkyv::validation::archive::validator::ArchiveValidator, rkyv::validation::shared::validator::SharedValidator>, rancor::Error>>>::check_bytes |
| 18 | 1,282,985 | 0.36% | 98.18% | 42 | <stark::constraints::builder::IrExpr as core::ops::arith::Sub>::sub |
| 19 | 988,680 | 0.28% | 98.47% | 58 | <rkyv::vec::ArchivedVec<crypto::merkle_tree::proof::ArchivedProof<[u8; 32]>> as bytecheck::CheckBytes<rancor::Strategy<rkyv::validation::Validator<rkyv::validation::archive::validator::ArchiveValidator, rkyv::validation::shared::validator::SharedValidator>, rancor::Error>>>::check_bytes |
| 20 | 545,792 | 0.15% | 98.62% | 456 | stark::lookup::emit_fingerprint::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 21 | 475,200 | 0.13% | 98.76% | 971 | <lambda_vm_prover::tables::ecdas::EcdasConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 22 | 418,272 | 0.12% | 98.87% | 150 | <lambda_vm_prover::tables::ecdas::EcdasConstraints>::rq::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 23 | 391,100 | 0.11% | 98.98% | 434 | <lambda_vm_prover::tables::ecsm::EcsmConstraints>::conv_carry::<stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 24 | 311,248 | 0.09% | 99.07% | 96 | stark::lookup::emit_linear_terms::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::CaptureBuilder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 25 | 296,986 | 0.08% | 99.16% | 149 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::clone::Clone>::clone |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.16% of this step's cycles.
Step multi_verify_setup of 15,968,595 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 15,936,425 | 99.80% | 99.80% | 77 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 2 | 7,728 | 0.05% | 99.85% | 112 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::ood_blocks_well_formed |
| 3 | 7,315 | 0.05% | 99.89% | 493 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 3,342 | 0.02% | 99.91% | 27 | compiler_builtins::mem::memcpy |
| 5 | 2,088 | 0.01% | 99.93% | 29 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::trace_ood_next_row_columns |
| 6 | 2,082 | 0.01% | 99.94% | 219 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::next_sample_u64 |
| 7 | 1,503 | 0.01% | 99.95% | 121 | stark::domain::new_verifier_domain::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> |
| 8 | 1,224 | 0.01% | 99.96% | 24 | memset |
| 9 | 1,170 | 0.01% | 99.96% | 15 | __rustc::__rust_alloc |
| 10 | 723 | 0.00% | 99.97% | 15 | stark::lookup::logup_max_degree |
| 11 | 694 | 0.00% | 99.97% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::commit::CommitConstraints> as stark::traits::AIR>::composition_poly_degree_bound |
| 12 | 448 | 0.00% | 99.98% | 224 | lambda_vm_prover::statement::absorb_statement_with_digest::<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 13 | 368 | 0.00% | 99.98% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::composition_poly_degree_bound |
| 14 | 334 | 0.00% | 99.98% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 15 | 318 | 0.00% | 99.98% | 82 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::ops::range::Range<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#1}>>>::from_iter |
| 16 | 252 | 0.00% | 99.98% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 17 | 228 | 0.00% | 99.99% | 3 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::has_trace_interaction |
| 18 | 222 | 0.00% | 99.99% | 37 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutputReset>::finalize_into_reset |
| 19 | 219 | 0.00% | 99.99% | 120 | lambda_vm_prover::statement::absorb_continuation_global_statement::<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 20 | 176 | 0.00% | 99.99% | 88 | lambda_vm_prover::continuation::verify_continuation_view |
| 21 | 152 | 0.00% | 99.99% | 4 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::branch::BranchConstraints> as stark::traits::AIR>::trace_layout |
| 22 | 144 | 0.00% | 99.99% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::continuation::L2gMemoryConstraints> as stark::traits::AIR>::precomputed_commitment |
| 23 | 138 | 0.00% | 99.99% | 2 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), lambda_vm_prover::tables::keccak::KeccakConstraints> as stark::traits::AIR>::num_auxiliary_rap_columns |
| 24 | 128 | 0.00% | 99.99% | 16 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::precomputed_commitment |
| 25 | 114 | 0.00% | 99.99% | 3 | <stark::lookup::AirWithBuses<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::lookup::NullBoundaryConstraintBuilder, (), stark::constraints::builder::EmptyConstraints> as stark::traits::AIR>::has_trace_interaction |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.99% of this step's cycles.
Step step1:replay of 10,064,471 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 2,034,417 | 20.21% | 20.21% | 1023 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 2 | 1,796,356 | 17.85% | 38.06% | 221 | <core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>> as core::iter::traits::iterator::Iterator>::next |
| 3 | 1,598,738 | 15.88% | 53.95% | 72 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 4 | 1,036,160 | 10.30% | 64.24% | 219 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::next_sample_u64 |
| 5 | 652,793 | 6.49% | 70.73% | 27 | compiler_builtins::mem::memcpy |
| 6 | 582,942 | 5.79% | 76.52% | 257 | stark::lookup::compute_alpha_powers::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 7 | 435,640 | 4.33% | 80.85% | 164 | stark::ood::build_pruned_trace_term_coeffs::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 8 | 420,114 | 4.17% | 85.02% | 112 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_elem::SpecFromElem>::from_elem::<alloc::alloc::Global> |
| 9 | 368,343 | 3.66% | 88.68% | 24 | memset |
| 10 | 189,344 | 1.88% | 90.56% | 100 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>>>>::from_iter |
| 11 | 182,729 | 1.82% | 92.38% | 217 | stark::ood::reconstruct_ood_full::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 12 | 159,210 | 1.58% | 93.96% | 15 | __rustc::__rust_alloc |
| 13 | 125,511 | 1.25% | 95.21% | 75 | <alloc::vec::Vec<usize> as alloc::vec::spec_from_iter::SpecFromIter<usize, core::iter::adapters::map::Map<core::ops::range::Range<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::sample_query_indexes<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#0}>>>::from_iter |
| 14 | 125,340 | 1.25% | 96.45% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 15 | 98,050 | 0.97% | 97.43% | 37 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::FixedOutputReset>::finalize_into_reset |
| 16 | 79,996 | 0.79% | 98.22% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 17 | 42,220 | 0.42% | 98.64% | 2 | <crypto::hash::platform_keccak::imp::PlatformKeccak256 as digest::Update>::update |
| 18 | 22,677 | 0.23% | 98.87% | 33 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 19 | 17,994 | 0.18% | 99.05% | 94 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::slice::iter::Iter<[u8; 32]>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::replay_rounds_after_round_1<crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::{closure#1}>>>::from_iter |
| 20 | 13,980 | 0.14% | 99.19% | 46 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 21 | 10,683 | 0.11% | 99.29% | 1 | __rustc::__rust_no_alloc_shim_is_unstable_v2 |
| 22 | 9,315 | 0.09% | 99.38% | 135 | stark::grinding::is_valid_nonce |
| 23 | 8,435 | 0.08% | 99.47% | 35 | <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> |
| 24 | 7,728 | 0.08% | 99.55% | 112 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::ood_blocks_well_formed |
| 25 | 6,693 | 0.07% | 99.61% | 97 | <crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as crypto::fiat_shamir::is_transcript::IsStarkTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::goldilocks::GoldilocksField>>::sample_z_ood_with_domain_params |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.61% of this step's cycles.
Step step2:claimed of 43,538,402 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 17,457,741 | 40.10% | 40.10% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 2 | 6,224,418 | 14.30% | 54.39% | 706 | math::field::goldilocks::inv_addition_chain |
| 3 | 4,355,885 | 10.00% | 64.40% | 170 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::pow::<usize> |
| 4 | 2,252,437 | 5.17% | 69.57% | 1266 | stark::lookup::emit_fingerprint::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 5 | 2,137,744 | 4.91% | 74.48% | 1793 | <lambda_vm_prover::tables::ecdas::EcdasConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 6 | 1,881,204 | 4.32% | 78.80% | 403 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 7 | 1,813,748 | 4.17% | 82.97% | 874 | <lambda_vm_prover::tables::ecsm::EcsmConstraints>::conv_carry::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 8 | 1,580,352 | 3.63% | 86.60% | 261 | <lambda_vm_prover::tables::ecdas::EcdasConstraints>::rq::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 9 | 1,369,952 | 3.15% | 89.74% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul<&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 10 | 926,714 | 2.13% | 91.87% | 159 | stark::lookup::emit_linear_terms::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 11 | 686,041 | 1.58% | 93.45% | 195 | <&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 12 | 547,294 | 1.26% | 94.71% | 771 | stark::lookup::emit_logup_constraints::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 13 | 446,537 | 1.03% | 95.73% | 870 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 14 | 418,509 | 0.96% | 96.69% | 91 | stark::constraints::zerofier::evaluate_zerofier::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 15 | 272,544 | 0.63% | 97.32% | 238 | stark::lookup::compute_alpha_powers::<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 16 | 265,812 | 0.61% | 97.93% | 245 | <core::iter::adapters::map::Map<core::iter::adapters::step_by::StepBy<core::ops::range::Range<usize>>, <stark::proof::view::StarkTableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::into_frame::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<stark::table::TableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <alloc::vec::Vec<stark::table::TableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::extend_trusted<core::iter::adapters::map::Map<core::iter::adapters::step_by::StepBy<core::ops::range::Range<usize>>, <stark::proof::view::StarkTableView<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::into_frame::{closure#0}>>::{closure#0}>::{closure#0}> |
| 17 | 145,246 | 0.33% | 98.26% | 324 | stark::lookup::emit_multiplicity::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 18 | 119,574 | 0.27% | 98.54% | 26 | stark::constraints::zerofier::end_exemptions_roots::<math::field::goldilocks::GoldilocksField> |
| 19 | 113,144 | 0.26% | 98.80% | 1211 | <lambda_vm_prover::tables::ecsm::EcsmConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 20 | 87,408 | 0.20% | 99.00% | 31 | memset |
| 21 | 83,550 | 0.19% | 99.19% | 919 | <lambda_vm_prover::tables::keccak_rnd::KeccakRndConstraints as stark::constraints::builder::ConstraintSet<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::eval::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 22 | 65,878 | 0.15% | 99.34% | 124 | lambda_vm_prover::constraints::templates::add_terms_expr::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 23 | 35,120 | 0.08% | 99.42% | 623 | lambda_vm_prover::constraints::templates::emit_add_pair::<stark::constraints::builder::VerifierEvalFolder<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 24 | 18,837 | 0.04% | 99.47% | 39 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 25 | 18,630 | 0.04% | 99.51% | 15 | __rustc::__rust_alloc |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.51% of this step's cycles.
Step step3:fri of 517,505,037 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 326,504,585 | 63.09% | 63.09% | 4813 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri |
| 2 | 51,444,726 | 9.94% | 73.03% | 24 | memset |
| 3 | 32,197,440 | 6.22% | 79.25% | 48 | lambda_vm_syscalls::keccak::keccak256_pair |
| 4 | 20,037,186 | 3.87% | 83.13% | 706 | math::field::goldilocks::inv_addition_chain |
| 5 | 16,581,192 | 3.20% | 86.33% | 616 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 6 | 14,302,732 | 2.76% | 89.09% | 631 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse_sequential |
| 7 | 10,997,602 | 2.13% | 91.22% | 195 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Mul>::mul |
| 8 | 9,865,719 | 1.91% | 93.13% | 79 | <math::field::goldilocks::GoldilocksField as math::field::traits::IsField>::pow::<u64> |
| 9 | 8,395,104 | 1.62% | 94.75% | 27 | compiler_builtins::mem::memcpy |
| 10 | 7,007,000 | 1.35% | 96.10% | 50 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 11 | 6,117,540 | 1.18% | 97.28% | 403 | <math::field::extensions_goldilocks::Degree3GoldilocksExtensionField as math::field::traits::IsField>::inv |
| 12 | 2,308,015 | 0.45% | 97.73% | 318 | math::fft::bowers_fft::bowers_fft_opt_fused::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> |
| 13 | 2,036,935 | 0.39% | 98.12% | 473 | <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::evaluate_offset_fft::<math::field::goldilocks::GoldilocksField> |
| 14 | 1,638,010 | 0.32% | 98.44% | 134 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, core::iter::adapters::take::Take<core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_query_and_sym_openings::{closure#2}>>>>::from_iter |
| 15 | 1,533,366 | 0.30% | 98.74% | 100 | math::fft::bit_reversing::in_place_bit_reverse_permute::<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 16 | 1,401,400 | 0.27% | 99.01% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 17 | 790,928 | 0.15% | 99.16% | 153 | <math::fft::bowers_fft::LayerTwiddles<math::field::goldilocks::GoldilocksField>>::build |
| 18 | 650,837 | 0.13% | 99.29% | 328 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::slice::iter::Iter<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>, core::iter::sources::successors::Successors<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::scale<math::field::goldilocks::GoldilocksField>::{closure#0}>>, <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::scale<math::field::goldilocks::GoldilocksField>::{closure#1}>>>::from_iter |
| 19 | 605,268 | 0.12% | 99.40% | 161 | <alloc::vec::Vec<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>> as alloc::vec::spec_from_iter::SpecFromIter<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>, core::iter::adapters::map::Map<core::slice::iter::Iter<usize>, <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::step_3_verify_fri::{closure#1}>>>::from_iter |
| 20 | 554,829 | 0.11% | 99.51% | 157 | <math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>>::inplace_batch_inverse_sequential |
| 21 | 447,450 | 0.09% | 99.60% | 15 | __rustc::__rust_alloc |
| 22 | 375,760 | 0.07% | 99.67% | 61 | <math::field::element::FieldElement<math::field::goldilocks::GoldilocksField> as core::ops::arith::Mul<&math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::mul |
| 23 | 355,756 | 0.07% | 99.74% | 38 | <alloc::raw_vec::RawVecInner>::finish_grow |
| 24 | 327,606 | 0.06% | 99.80% | 35 | <alloc::raw_vec::RawVecInner<_>>::reserve::do_reserve_and_handle::<alloc::alloc::Global> |
| 25 | 264,880 | 0.05% | 99.85% | 43 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField> as core::ops::arith::Add>::add |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.85% of this step's cycles.
Step step4:openings of 318,769,920 step cycles — top 25 functions
| Rank | Cycles | % | Cum % | PCs | Function |
|---|---|---|---|---|---|
| 1 | 136,210,720 | 42.73% | 42.73% | 77 | <lambda_vm_syscalls::keccak::Keccak256>::update |
| 2 | 69,458,521 | 21.79% | 64.52% | 176 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::verify_opening_pair::<math::field::goldilocks::GoldilocksField> |
| 3 | 58,964,732 | 18.50% | 83.02% | 921 | <stark::verifier::Verifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> as stark::verifier::IsStarkVerifier<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>>::multi_verify_views::<stark::proof::view::MultiProofView<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()>, crypto::fiat_shamir::default_transcript::DefaultTranscript<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 4 | 27,859,839 | 8.74% | 91.76% | 31 | memset |
| 5 | 17,663,280 | 5.54% | 97.30% | 48 | lambda_vm_syscalls::keccak::keccak256_pair |
| 6 | 4,267,864 | 1.34% | 98.64% | 125 | compiler_builtins::mem::memcpy |
| 7 | 977,922 | 0.31% | 98.94% | 121 | <alloc::vec::Vec<stark::lookup::BusValue> as core::clone::Clone>::clone |
| 8 | 707,824 | 0.22% | 99.17% | 78 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::ops::drop::Drop>::drop |
| 9 | 697,228 | 0.22% | 99.38% | 28 | <lambda_vm_syscalls::keccak::Keccak256>::finalize |
| 10 | 290,997 | 0.09% | 99.48% | 252 | math::fft::bowers_fft::process_fused_block::<math::field::goldilocks::GoldilocksField, math::field::goldilocks::GoldilocksField> |
| 11 | 285,825 | 0.09% | 99.57% | 15 | __rustc::__rust_alloc |
| 12 | 193,516 | 0.06% | 99.63% | 149 | <alloc::vec::Vec<stark::lookup::BusInteraction> as core::clone::Clone>::clone |
| 13 | 124,880 | 0.04% | 99.67% | 95 | core::ptr::drop_in_place::<stark::verifier::Challenges<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>> |
| 14 | 113,983 | 0.04% | 99.70% | 241 | <core::iter::adapters::map::Map<core::ops::range::Range<usize>, stark::commitment::keccak_leaves_bit_reversed_grouped<math::field::goldilocks::GoldilocksField>::{closure#1}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<[u8; 32], <alloc::vec::Vec<[u8; 32]>>::extend_trusted<core::iter::adapters::map::Map<core::ops::range::Range<usize>, stark::commitment::keccak_leaves_bit_reversed_grouped<math::field::goldilocks::GoldilocksField>::{closure#1}>>::{closure#0}>::{closure#0}> |
| 15 | 88,170 | 0.03% | 99.73% | 414 | <math::polynomial::Polynomial<math::field::element::FieldElement<math::field::goldilocks::GoldilocksField>>>::evaluate_offset_fft::<math::field::goldilocks::GoldilocksField> |
| 16 | 71,954 | 0.02% | 99.75% | 2320 | lambda_vm_prover::tables::keccak_rnd::bus_interactions |
| 17 | 66,300 | 0.02% | 99.77% | 612 | <math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>::inplace_batch_inverse_sequential |
| 18 | 61,150 | 0.02% | 99.79% | 25 | <stark::lookup::BusValue>::constant |
| 19 | 60,390 | 0.02% | 99.81% | 2 | memcpy |
| 20 | 60,048 | 0.02% | 99.83% | 249 | math::fft::bowers_fft::process_ifft_fused_block::<math::field::goldilocks::GoldilocksField, math::field::goldilocks::GoldilocksField> |
| 21 | 51,954 | 0.02% | 99.85% | 221 | math::fft::bowers_fft::bowers_fft_opt_fused::<math::field::goldilocks::GoldilocksField, math::field::goldilocks::GoldilocksField> |
| 22 | 50,910 | 0.02% | 99.86% | 153 | <math::fft::bowers_fft::LayerTwiddles<math::field::goldilocks::GoldilocksField>>::build |
| 23 | 48,752 | 0.02% | 99.88% | 124 | stark::domain::new_verifier_domain::<math::field::goldilocks::GoldilocksField, math::field::extensions_goldilocks::Degree3GoldilocksExtensionField, ()> |
| 24 | 42,987 | 0.01% | 99.89% | 1 | __rustc::__rust_dealloc |
| 25 | 32,542 | 0.01% | 99.90% | 265 | <core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<u8>>, lambda_vm_prover::compute_commit_bus_offset::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>, <alloc::vec::Vec<math::field::element::FieldElement<math::field::extensions_goldilocks::Degree3GoldilocksExtensionField>>>::extend_trusted<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<u8>>, lambda_vm_prover::compute_commit_bus_offset::{closure#0}>>::{closure#0}>::{closure#0}> |
Each function's cycles are summed over all its program counters in this table's scope; the top 25 cover 99.90% of this step's cycles.
Commit: 2b0f470 · Runner: self-hosted bench
Mechanical follow-ups on the allocator swap. No behaviour change on any path that runs today; the one code change closes a failure mode that is currently prevented by a linker flag rather than by anything in this file. benchmark-pr.yml missed syscalls. The push-to-main paths filter listed prover, crypto, executor, bin/cli, tooling/ethrex-fixtures and the Makefile, but not syscalls -- so a change landing only in syscalls, which is exactly what this branch is, would not refresh main's benchmark baseline. syscalls is linked into the guest ELF, so an allocator swap moves cycles on every workload; main's baseline would have stayed stale until some prover file happened to change, and until then the comparison guard would have suppressed the table. pr_main.yaml:99 already hashes 'syscalls/**' into the guest-ELF cache key, so the two workflows disagreed about what rebuilds the guest. Two lockfiles still carried embedded-alloc. crypto/ethrex-crypto and tooling/ethrex-block-converter are detached workspaces with their own Cargo.locks, which is why the sweep missed them: both still listed embedded-alloc under lambda-vm-syscalls after syscalls/Cargo.toml stopped declaring it. Regenerated via cargo metadata in each workspace. The only removals are embedded-alloc's own transitive tree (const-default, linked_list_allocator, rlsf, and in ethrex-crypto also rustversion, svgbobdoc, base64 0.13, syn 1.0.109, unicode-width); no other package's version moved. The 10 added lines are all ` "syn",` losing its version-disambiguation suffix now that only one syn remains. bench_vs/sp1/fibonacci/Cargo.lock also names embedded-alloc, but that is sp1-zkvm 6.0.1's own dependency and is left alone. imp::init is now idempotent in both arms. Both arms stored HEAP_POS unconditionally, so a second call rewound the cursor back over live allocations. With alloc_zeroed's memset removed -- sound only because bump never re-serves a region -- the next alloc_zeroed would then return dirty bytes, and the guest would compute on garbage while the prover produced a perfectly valid proof of that wrong execution. No crash and no diagnostic, so it is worth a guard rather than a comment. HEAP_END serves as the initialized flag (init_allocator always passes a nonzero MAX_MEMORY_SIZE), a debug_assert makes a double call loud in debug builds, and the host tests gain a #[cfg(test)] reset() since they deliberately re-point the global cursor at their own heap. Worth stating why this could not happen already, because the reason is not the call sites: all six guests that call init_allocator() explicitly also override the ELF entry with `-C link-arg=-e -C link-arg=main` in their .cargo/config.toml, so _start -- the only other caller -- never runs for them, and guests entering through _start never call it explicitly. The safety rested on an entry-point flag; a guest that dropped `-e main` while keeping its explicit call would have rewound. Three comment corrections and one warning. - The dlmalloc dep comment called it the allocator to pick "for continuations". Wrong criterion: continuations are a prover-side split of a single guest execution and change nothing about what the guest allocates. The criterion is a guest whose cumulative allocation has no per-execution bound, which is how src/allocator.rs already frames it. - allocates_zeros()'s comment described an "mmapped marker" that dlmalloc may set. There is no marker bit: Chunk::mmapped(p) is `(*p).head & INUSE == 0`, the absence of both in-use bits (dlmalloc 0.2.14 src/dlmalloc.rs:1805). The old comment's "the Rust port has no mmap path, so nothing is ever mmapped" is also not quite true -- init_top (dlmalloc.rs:789) writes a segment-end sentinel with head = top_foot_size() = 80 on 64-bit, and 80 & INUSE == 0, so that sentinel is mmapped()-true (harmless: never returned to a caller). Replaced with the durable argument: every path that returns a pointer to a caller goes through set_inuse / set_inuse_and_pinuse / set_size_and_pinuse_of_inuse_chunk, all of which set CINUSE, and calloc_must_clear is only ever evaluated on a user pointer, so no user chunk is ever mmapped. Consequence the old comment omitted: calloc_must_clear is therefore always true, calloc always memsets, and allocates_zeros() == true is inert -- not a performance win, kept only for correctness-by-construction should upstream grow an mmap path. - The comment on the bump arm's checked_add claimed the overflow is unconstructible from the Layout invariant alone. It is not: Layout gives size <= isize::MAX - (align - 1), which with aligned <= pos + align - 1 bounds aligned + size <= pos + isize::MAX, and that is < 2^64 only if pos < 2^63. The missing half is that alloc stores new_pos only when new_pos <= HEAP_END, so pos <= HEAP_END = 0xC000_0000. The checked_add stays -- it keeps the argument local to alloc instead of resting on both halves. - New note on the DLMALLOC static: an initialized Dlmalloc is address-sensitive and must never be moved. smallbin_at returns a pointer into self.smallbins and init_bins writes self-pointers into that array, so relocating it after first use (into a Box, a OnceCell, or a local) silently corrupts the bins. Safe as a static; the note is for whoever refactors it. Verified: syscalls tests pass on both arms -- 9 passed on the default bump arm (5 allocator + 4 keccak) and 12 on --features dlmalloc-alloc (8 allocator + 4 keccak). cargo fmt --check and cargo clippy --all-targets clean on both arms (the two surviving warnings are pre-existing manual_is_multiple_of in src/keccak.rs:104-105). benchmark-pr.yml parses and its paths list resolves to the seven expected entries.
…ollowups fix(syscalls): review follow-ups for the bump allocator default
|
Benchmark Results for modified programs 🚀
|
|
Reviewed the allocator swap end to end (both arms built for riscv64 and executed against an alloc probe; no correctness bugs found). The zero-init invariant the Three things to settle, all in the docs rather than the code. 1. The ceiling claim — now measured, and it holds. Execute-only heap probe over 8 fixtures spanning 0.42M–63M gas:
This also puts the first number on the doc's own claim: 1500 transfers measured 72.1 MB at 528,619,812 cycles (the doc says 523M — same block). "Room to spare" is right, and it's 44×. So the ceiling is fine. But the ceiling note should say so with the numbers, and restore the exception 2. The gas-limit figure in that note is stale. It says a gas-full block is 31.5M gas; mainnet's limit is 60M, so the margin as written reads ~2× better than it is. (Still 13.9× after correcting.) 3. Narrow the performance claims to what was measured. As written they don't support the change:
Suggested: state the win as measured on the transfer fixtures, and say plainly it is not resolvable on the real block. Also worth a line: nothing in the repo enables Separately, still open from the earlier pass: heap exhaustion spins rather than failing, so OOM is an unbounded-cycle hazard rather than a rejectable error. The 13.9× margin makes that unlikely to trigger, but an |
|
Benchmark Results for unmodified programs 🚀
|
… dlmalloc guest-allocator fallback tests and the ethrex-crypto host tests
The guest allocator now uses a monotonic bump allocator by default instead of
embedded-alloc's TLSF heap. Thedlmalloc-allocfeature remains available for executions with unbounded allocation churn; it reuses freed allocations on top of a page-aligned bump provider. Bump allocation is constant-time, makesdealloca no-op, and skips thealloc_zeroedmemset because guest memory is zero-initialized. TLSF is removed from the guest allocator configuration.Motivation
TLSF spends guest instructions on free-list bookkeeping on every allocation, and a guest instruction is a trace row. Guest allocation patterns are dominated by short-lived buffers within one execution, so paying for reuse is paying for something the workload barely uses.
What changed
allocmoves a cursor,deallocis empty,reallocgrows the top block in place when the block being grown is the one the cursor sits on, andalloc_zeroedskips the memset.dlmalloc-allocputs Doug Lea's malloc on a bump "system" provider that hands it page-aligned segments. Its footprint is bounded by live bytes rather than total bytes ever allocated, and it can grow a buried block in place.embedded-allocand thetlsf-allocfeature are gone, along with the guest lockfile churn they carried.The
alloc_zeroedmemset skip depends on freshly bumped memory reading as zero. That holds at three independent layers: executor misses returnunwrap_or_default(), the prover's replay fills(0, 0), and page genesis iszero_initbound to the static zero-page root, which the verifier rebuilds from the ELF rather than trusting the prover. The cursor is monotonic by construction —reallocnever rewinds it on shrink, which would re-expose written bytes and break exactly that invariant.Measurements
All figures are post-#861. Thin LTO inlines the per-allocation bookkeeping dlmalloc and TLSF pay and bump avoids by construction, which closed about two thirds of the gap the same comparison showed before it; any pre-LTO number for this change reads larger than it should.
Bump against dlmalloc, on the ethrex transfer fixtures and a real Hoodi block:
The in-place
realloctakes a further 0.57..1.34% off guest cycles across four ethrex fixtures; it has not been re-run against dlmalloc.Where bump loses, both deterministic:
Scope of the prove-time numbers: they come from the synthetic transfer fixtures on the monolithic path. On the real block this change is not resolvable. The bench box swings ~15% run to run on 8-minute runs; the CPU real-block run reported no significant change (-40 MB peak heap, -1.9% prove time, within spread), and the GPU ABBA run at n=32 came back INCONCLUSIVE with a point estimate of -0.01% and a 95% CI of [-0.24%, +0.22%]. The win is claimed on the fixtures, not there.
Bump's ceiling
Bump never reclaims, so the quantity that matters is cumulative allocation, against ~3 GiB of
[_end, MAX_MEMORY_SIZE). Measured execute-only over eight ethrex fixtures spanning 0.42M to 63M gas:alloc = 2.55 MB + 2.213 B/gas × gas, R² = 0.999993, with the marginal rate flat between 2.175 and 2.289 across a 150× range of gas. Allocation is linear: there is no superlinear term, which was the only route to exhaustion within one block.The quantity that binds is bytes per gas, not transactions per gas, and transfers roughly minimise it. At the highest rate measured — 3.87 B/gas, on the contract-heavy blocks — a 60M-gas block lands at ~232 MB, a 13.9× margin, and exhaustion needs ~832M gas. Both contract-heavy fixtures are small blocks (2.4M and 4.2M gas), so that rate still carries the ~2.5 MB constant inside its average and no gas-full contract-heavy block has been measured: treat the margin as an extrapolation. If a block ever exceeds it,
dlmalloc-allocis a one-flag fallback.A guest that processes many blocks in one execution has no per-block bound at all, which is the case
dlmalloc-allocexists for. Continuations do not stress it: they split proving into epochs, not execution.Known limitation, not fixed here
Heap exhaustion does not fail cleanly.
allocreturns null,handle_alloc_errorpanics, and the guest#[panic_handler]isloop {}, so execution spins instead of aborting; nothing on the proving path bounds cycles, since--cycle-budgetis opt-in and only onexecute.This is not shipped as part of this change, deliberately:
HALTconstrains the exit code to zero at the constraint level (prover/src/tables/halt.rs:16,194, spechalt:c:read_zero_exit_code), so a nonzero exit is not a provable state. A clean abort needs either a committed failure marker or a non-provable abort ecall.#[alloc_error_handler]is not the lever: it is unstable, and the default handler already panics.Two follow-ups: a host-side cycle bound on the
provepath, which is cheap and removes most of the operational risk without touching the VM, and then the panic-to-abort design above.How to test
pr_main.yamlcovers both allocator profiles. To exercise the fallback in a guest, build it with--features lambda-vm-syscalls/dlmalloc-alloc; nothing in the repo selects it today, so the riscv64 path has no consumer yet.