bench: instrument hash counts for verifier#19
Merged
Conversation
Merge branch 'main' into feat/main_trace_parts
* feat: add backend readme * fix: link * fix: link * fix: latex * chore: fix typo * chore: add code references --------- Co-authored-by: Yi Sun <yi-sun@users.noreply.github.com>
No need for tracing on non-benchmark tests
* fix: `eval_permutation_constraints` must handle partitioned_main * feat: integration test with cached trace * fix: forgot to add test files * chore: rename folder to `partitioned_sum_air` * chore: add test utils module * feat: add indexless cached lookup test for partitioned Air with interactions * chore: fix typo * feat: `add_main_matrix(width)` placeholder with mat width * chore: switch from RefCell to Arc Mutex
Contributor
Author
|
Some preliminary stats: |
Collaborator
|
To confirm, in case 2, is the logUp still done? |
4467ed8 to
8163e1c
Compare
Contributor
Author
|
Uploaded instrumented verifier csv to https://docs.google.com/spreadsheets/d/1AEwbUvsge07qq9ASi0BL4Or0bbuwq8Iy9cy5cNxiLj4/edit?usp=sharing |
jonathanpwang
commented
May 21, 2024
* fix: p3-maybe-rayon `parallel` feature was not on feature is `parallel` not `rayon` * chore: simplify code
Moved `run_simple_test` into `config::baby_bear_poseidon2` because it depends on the engine
Contributor
Author
|
@OsamaAlkhodairy FYI I'm going to merge this one. I added some stuff to test-utils/src/config to start some tooling. I added a StarkEngine trait with the idea we can make a different engine for each field x hash combo. I moved your |
luffykai
pushed a commit
that referenced
this pull request
Dec 13, 2024
* wip: refactor to use commit pointers * wip: permutation trace from partitioned main * wip: fix previous rebase * wip: show new interface * chore: rename ChipsetProver to MultiTraceStarkProver * feat: quotient refactor done * feat: prover done * chore: split out prove function into general post-trace part * feat: finished verifier * feat: keygen builder * chore: move fib triple test into same file * feat: preliminary docs on STARK backend scope/support (#16) * feat: add backend readme * fix: link * fix: link * fix: latex * chore: fix typo * chore: add code references --------- Co-authored-by: Yi Sun <yi-sun@users.noreply.github.com> * chore: make DebugBuilder `after_challenge` consistent with other builders * chore: clean up if statement * chore: fix fmt * chore: fix previous merge and remove tracing No need for tracing on non-benchmark tests * chore: fix lint * feat: Partitioned Air Builder (#17) * fix: `eval_permutation_constraints` must handle partitioned_main * feat: integration test with cached trace * fix: forgot to add test files * chore: rename folder to `partitioned_sum_air` * chore: add test utils module * feat: add indexless cached lookup test for partitioned Air with interactions * chore: fix typo * feat: `add_main_matrix(width)` placeholder with mat width * chore: switch from RefCell to Arc Mutex * chore: address review comment * chore: rename `MatrixCommitmentPointers` * feat: add instrumented hash/compress * chore: return instrument counters since fields are private * feat: prelim verifier instrumentation * feat: full benchmark writing to csv * chore: turn off instrumenting during proving * fix: instrument not properly on * fix: flush writer * chore: clean up config module * chore(chips): remove old test config module * feat: add `StarkEngine` for convenience * feat: add cached_lookup prover benchmark * fix: p3-maybe-rayon `parallel` feature was not on (#28) * fix: p3-maybe-rayon `parallel` feature was not on feature is `parallel` not `rayon` * chore: simplify code --------- Co-authored-by: Yi Sun <yi-sun@users.noreply.github.com>
jonathanpwang
added a commit
that referenced
this pull request
Mar 9, 2025
jonathanpwang
added a commit
that referenced
this pull request
Mar 9, 2025
…ications (#29) * [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * Use private repo for stark-backend (#11) * temp(ci): switch riscv AMI for runner (#14) * [chore] Update DSL verify to match plonky3 (#5) * Update DSL verify to match plonky3 * fix: transpose state for p3-keccak tracegen * chore: add comment linking plonky3 issue * Update stark-backend commit --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * Use full commit in openvm-stark-backend revision (#18) * chore: update `stark-backend` commit (#19) * [fix] `Rv32BaseAluAdapterAir` unconstrained register reads (#25) * Create pull_request_template.md (#26) * [fix] Poseidon2 verify_batch opcode can send to execution bus for invalid rows (#17) * [fix] Rust memory allocation overflow (#13) * Fix and add test * Fix lint error * Update crates/toolchain/platform/src/memory.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] Constrain `final_hash` in sha256 air to address audit finding (#12) * [fix] properly constrain final_hash in sha256 air * Add negative test for underconstrained final_hash. It was manually checked that this new test would have passed before the change. * [fix] IsLtArraySubAir (#9) * add fix * add tests * remove diff_val * chore: update comment * chore: no try_inverse --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] `Rv32BaseAluAdapterAir` immediate limbs not range-checked (#8) * fix local_as2 * range check imm limbs * add count for range check * add test for unconstrained imm limb * fix MemoryTester chip trace height * add test for unconstrained rs2 read * Revert "fix local_as2" This reverts commit ef83121bf1796874affaca4682dbb4f9f051b079. * Revert "add count for range check" This reverts commit 5252444dfeaf41e7c336648ad92c4736f48ead9d. * Revert "range check imm limbs" This reverts commit 2e2937536069ae66849fdf7bba9ea509065d17fe. * fix unconstrained imm limbs * fix local_rs2_as test * fix lint * Update extensions/rv32im/circuit/src/base_alu/tests.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * fix: fixed SHA2 subair trace generation and the testing (#28) * fix: loadstore sign of immediate (#4) * [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * fix: loadstore sign of immediate * fix: prints and test * fix: load_sign_extend tests * Update docs/specs/ISA.md * clarify notation and sign extension in ISA spec * fix reveal transpiler spec --------- Co-authored-by: Manh Dinh <manh9203@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * fix transpiler * fix loadstore adapter * fix store transpiler * fix tests * add e2e test * fix docs * fix: jalr imm_sign (#30) * optimize record struct packing * chore: use from_bool * chore: derive_more feature in bench * fix bench * fix --------- Co-authored-by: Xinding Wei <weixinding@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> Co-authored-by: Golovanov399 <Golovanov12345@gmail.com> Co-authored-by: Avaneesh-axiom <avaneeshk@intrinsictech.xyz> Co-authored-by: Arayi Khalatyan <127004086+arayikhalatyan@users.noreply.github.com>
jonathanpwang
added a commit
that referenced
this pull request
Mar 9, 2025
* [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * fix: hintstore mem_ptr and rem_words overflow * fix: is_buffer_start constrain * Use private repo for stark-backend (#11) * temp(ci): switch riscv AMI for runner (#14) * [chore] Update DSL verify to match plonky3 (#5) * Update DSL verify to match plonky3 * fix: transpose state for p3-keccak tracegen * chore: add comment linking plonky3 issue * Update stark-backend commit --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * Use full commit in openvm-stark-backend revision (#18) * chore: update `stark-backend` commit (#19) * [fix] `Rv32BaseAluAdapterAir` unconstrained register reads (#25) * Create pull_request_template.md (#26) * [fix] Poseidon2 verify_batch opcode can send to execution bus for invalid rows (#17) * [fix] Rust memory allocation overflow (#13) * Fix and add test * Fix lint error * Update crates/toolchain/platform/src/memory.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] Constrain `final_hash` in sha256 air to address audit finding (#12) * [fix] properly constrain final_hash in sha256 air * Add negative test for underconstrained final_hash. It was manually checked that this new test would have passed before the change. * [fix] IsLtArraySubAir (#9) * add fix * add tests * remove diff_val * chore: update comment * chore: no try_inverse --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] `Rv32BaseAluAdapterAir` immediate limbs not range-checked (#8) * fix local_as2 * range check imm limbs * add count for range check * add test for unconstrained imm limb * fix MemoryTester chip trace height * add test for unconstrained rs2 read * Revert "fix local_as2" This reverts commit ef83121bf1796874affaca4682dbb4f9f051b079. * Revert "add count for range check" This reverts commit 5252444dfeaf41e7c336648ad92c4736f48ead9d. * Revert "range check imm limbs" This reverts commit 2e2937536069ae66849fdf7bba9ea509065d17fe. * fix unconstrained imm limbs * fix local_rs2_as test * fix lint * Update extensions/rv32im/circuit/src/base_alu/tests.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * fix: fixed SHA2 subair trace generation and the testing (#28) * fix: loadstore sign of immediate (#4) * [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * fix: loadstore sign of immediate * fix: prints and test * fix: load_sign_extend tests * Update docs/specs/ISA.md * clarify notation and sign extension in ISA spec * fix reveal transpiler spec --------- Co-authored-by: Manh Dinh <manh9203@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * seperate the fixes * fix naming * fix: lints --------- Co-authored-by: Manh Dinh <manh9203@gmail.com> Co-authored-by: Xinding Wei <weixinding@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> Co-authored-by: Golovanov399 <Golovanov12345@gmail.com> Co-authored-by: Avaneesh-axiom <avaneeshk@intrinsictech.xyz>
jonathanpwang
added a commit
that referenced
this pull request
Mar 9, 2025
jonathanpwang
added a commit
that referenced
this pull request
Mar 9, 2025
…ications (#29) * [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * Use private repo for stark-backend (#11) * temp(ci): switch riscv AMI for runner (#14) * [chore] Update DSL verify to match plonky3 (#5) * Update DSL verify to match plonky3 * fix: transpose state for p3-keccak tracegen * chore: add comment linking plonky3 issue * Update stark-backend commit --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * Use full commit in openvm-stark-backend revision (#18) * chore: update `stark-backend` commit (#19) * [fix] `Rv32BaseAluAdapterAir` unconstrained register reads (#25) * Create pull_request_template.md (#26) * [fix] Poseidon2 verify_batch opcode can send to execution bus for invalid rows (#17) * [fix] Rust memory allocation overflow (#13) * Fix and add test * Fix lint error * Update crates/toolchain/platform/src/memory.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] Constrain `final_hash` in sha256 air to address audit finding (#12) * [fix] properly constrain final_hash in sha256 air * Add negative test for underconstrained final_hash. It was manually checked that this new test would have passed before the change. * [fix] IsLtArraySubAir (#9) * add fix * add tests * remove diff_val * chore: update comment * chore: no try_inverse --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] `Rv32BaseAluAdapterAir` immediate limbs not range-checked (#8) * fix local_as2 * range check imm limbs * add count for range check * add test for unconstrained imm limb * fix MemoryTester chip trace height * add test for unconstrained rs2 read * Revert "fix local_as2" This reverts commit ef83121bf1796874affaca4682dbb4f9f051b079. * Revert "add count for range check" This reverts commit 5252444dfeaf41e7c336648ad92c4736f48ead9d. * Revert "range check imm limbs" This reverts commit 2e2937536069ae66849fdf7bba9ea509065d17fe. * fix unconstrained imm limbs * fix local_rs2_as test * fix lint * Update extensions/rv32im/circuit/src/base_alu/tests.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * fix: fixed SHA2 subair trace generation and the testing (#28) * fix: loadstore sign of immediate (#4) * [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * fix: loadstore sign of immediate * fix: prints and test * fix: load_sign_extend tests * Update docs/specs/ISA.md * clarify notation and sign extension in ISA spec * fix reveal transpiler spec --------- Co-authored-by: Manh Dinh <manh9203@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * fix transpiler * fix loadstore adapter * fix store transpiler * fix tests * add e2e test * fix docs * fix: jalr imm_sign (#30) * optimize record struct packing * chore: use from_bool * chore: derive_more feature in bench * fix bench * fix --------- Co-authored-by: Xinding Wei <weixinding@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> Co-authored-by: Golovanov399 <Golovanov12345@gmail.com> Co-authored-by: Avaneesh-axiom <avaneeshk@intrinsictech.xyz> Co-authored-by: Arayi Khalatyan <127004086+arayikhalatyan@users.noreply.github.com>
jonathanpwang
added a commit
that referenced
this pull request
Mar 9, 2025
* [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * fix: hintstore mem_ptr and rem_words overflow * fix: is_buffer_start constrain * Use private repo for stark-backend (#11) * temp(ci): switch riscv AMI for runner (#14) * [chore] Update DSL verify to match plonky3 (#5) * Update DSL verify to match plonky3 * fix: transpose state for p3-keccak tracegen * chore: add comment linking plonky3 issue * Update stark-backend commit --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * Use full commit in openvm-stark-backend revision (#18) * chore: update `stark-backend` commit (#19) * [fix] `Rv32BaseAluAdapterAir` unconstrained register reads (#25) * Create pull_request_template.md (#26) * [fix] Poseidon2 verify_batch opcode can send to execution bus for invalid rows (#17) * [fix] Rust memory allocation overflow (#13) * Fix and add test * Fix lint error * Update crates/toolchain/platform/src/memory.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] Constrain `final_hash` in sha256 air to address audit finding (#12) * [fix] properly constrain final_hash in sha256 air * Add negative test for underconstrained final_hash. It was manually checked that this new test would have passed before the change. * [fix] IsLtArraySubAir (#9) * add fix * add tests * remove diff_val * chore: update comment * chore: no try_inverse --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * [fix] `Rv32BaseAluAdapterAir` immediate limbs not range-checked (#8) * fix local_as2 * range check imm limbs * add count for range check * add test for unconstrained imm limb * fix MemoryTester chip trace height * add test for unconstrained rs2 read * Revert "fix local_as2" This reverts commit ef83121bf1796874affaca4682dbb4f9f051b079. * Revert "add count for range check" This reverts commit 5252444dfeaf41e7c336648ad92c4736f48ead9d. * Revert "range check imm limbs" This reverts commit 2e2937536069ae66849fdf7bba9ea509065d17fe. * fix unconstrained imm limbs * fix local_rs2_as test * fix lint * Update extensions/rv32im/circuit/src/base_alu/tests.rs --------- Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * fix: fixed SHA2 subair trace generation and the testing (#28) * fix: loadstore sign of immediate (#4) * [fix] Fix P256 `GENERATOR` and `double_impl` (#2) * fix p256-generator * add host tests for ecc * fix: loadstore sign of immediate * fix: prints and test * fix: load_sign_extend tests * Update docs/specs/ISA.md * clarify notation and sign extension in ISA spec * fix reveal transpiler spec --------- Co-authored-by: Manh Dinh <manh9203@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> * seperate the fixes * fix naming * fix: lints --------- Co-authored-by: Manh Dinh <manh9203@gmail.com> Co-authored-by: Xinding Wei <weixinding@gmail.com> Co-authored-by: Jonathan Wang <31040440+jonathanpwang@users.noreply.github.com> Co-authored-by: Golovanov399 <Golovanov12345@gmail.com> Co-authored-by: Avaneesh-axiom <avaneeshk@intrinsictech.xyz>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I was able to find a way to do this without forking Plonky3. The two traits that need to be implemented for PCS hashes are
PseudoCompressionFunctionandCryptographicHasher. I make a wrapper structInstrumentedthat does the normal operation and also updates the counter. For logging / debugging purposes, I store the lengths of inputs by the input type usingtype_name. To translate into actual counts, some specific logic about the absorb rate, etc of the specific hash (currently poseidon2) are used.Notes:
CryptographicHasheris for flat hashing long arrays of inputs. I think this is mostly used on the merkle leaf.PseudoCompressionFunctionis what is used on the other layers of merkle tree, since it's designed so 2-to-1 hashes have same input and output shape.What is currently benchmarked: given a matrix with
heightrows andfield_width + 1columns, we make two AIRs:field_widthwith count the column 0 value.height-by-field_widthmatrix as a cached trace, so it is committed to separately. The count matrix that isheight-by-1is a separate matrix that is committed.We run both of these and log the hashes used, where we count based on the number of Poseidon2 permutations done.