-
Notifications
You must be signed in to change notification settings - Fork 231
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(bb): towards reduced polynomial memory usage #7990
Conversation
barretenberg/cpp/src/barretenberg/protogalaxy/protogalaxy_prover_internal.hpp
Outdated
Show resolved
Hide resolved
barretenberg/cpp/src/barretenberg/sumcheck/instance/prover_instance.hpp
Outdated
Show resolved
Hide resolved
barretenberg/cpp/src/barretenberg/vm/avm/generated/full_row.cpp
Outdated
Show resolved
Hide resolved
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.54.0</summary> ## [0.54.0](aztec-package-v0.53.0...aztec-package-v0.54.0) (2024-09-10) ### Features * Archiver fork block num ([#8425](#8425)) ([a9f2364](a9f2364)) ### Miscellaneous * Merge devnet to master ([#8472](#8472)) ([26706e9](26706e9)) </details> <details><summary>barretenberg.js: 0.54.0</summary> ## [0.54.0](barretenberg.js-v0.53.0...barretenberg.js-v0.54.0) (2024-09-10) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.54.0</summary> ## [0.54.0](aztec-packages-v0.53.0...aztec-packages-v0.54.0) (2024-09-10) ### ⚠ BREAKING CHANGES * **avm:** variants for binary operations ([#8473](#8473)) * **avm:** make JUMP(I) 16-bit ([#8443](#8443)) * **avm:** variants for SET opcode ([#8441](#8441)) * **avm:** variants for MOV opcode ([#8440](#8440)) ### Features * (bb) 128-bit challenges ([#8406](#8406)) ([d5b2397](d5b2397)) * `Module::add_item` (noir-lang/noir#5947) ([8ac81b1](8ac81b1)) * Add `Expr::as_let` (noir-lang/noir#5964) ([8ac81b1](8ac81b1)) * Add `FunctionDefinition::module` and `StructDefinition::module` (noir-lang/noir#5956) ([8ac81b1](8ac81b1)) * Add `FunctionDefinition` methods `is_unconstrained` and `set_unconstrained` (noir-lang/noir#5962) ([8ac81b1](8ac81b1)) * Add `StructDefinition::add_generic` (noir-lang/noir#5961) ([8ac81b1](8ac81b1)) * Add `StructDefinition::name` (noir-lang/noir#5960) ([8ac81b1](8ac81b1)) * Add a `panic` method to the stdlib (noir-lang/noir#5966) ([8ac81b1](8ac81b1)) * Archiver fork block num ([#8425](#8425)) ([a9f2364](a9f2364)) * Arithmetic Generics (noir-lang/noir#5950) ([8ac81b1](8ac81b1)) * **avm-transpiler:** Optionally count opcode types ([#8439](#8439)) ([21c06b5](21c06b5)) * **avm/public:** User space PublicContext::get_args_hash ([#8292](#8292)) ([56ce16a](56ce16a)) * **avm:** DSL integration of AVM recursive verifier ([#8405](#8405)) ([467120e](467120e)), closes [#8285](#8285) * **avm:** Make JUMP(I) 16-bit ([#8443](#8443)) ([5bb38b1](5bb38b1)) * **avm:** Variants for binary operations ([#8473](#8473)) ([8de1f2a](8de1f2a)) * **avm:** Variants for MOV opcode ([#8440](#8440)) ([5b27fbc](5b27fbc)) * **avm:** Variants for SET opcode ([#8441](#8441)) ([dc43306](dc43306)) * **bb:** Towards reduced polynomial memory usage ([#7990](#7990)) ([372f23c](372f23c)) * Let `nargo` and LSP work well in the stdlib (noir-lang/noir#5969) ([8ac81b1](8ac81b1)) * LSP autocompletion for attributes (noir-lang/noir#5963) ([8ac81b1](8ac81b1)) * LSP now suggests self fields and methods (noir-lang/noir#5955) ([8ac81b1](8ac81b1)) * Show doc comments in LSP (noir-lang/noir#5968) ([8ac81b1](8ac81b1)) ### Bug Fixes * Add re-exports back ([#8453](#8453)) ([b6cab90](b6cab90)) * **avm:** Full proving kernel fix ([#8468](#8468)) ([684d962](684d962)) * **bb:** Mac release ([#8450](#8450)) ([1b3f914](1b3f914)) * **docs:** Some docs updates ([#8412](#8412)) ([ad73f30](ad73f30)) * Error when `quote` is used in runtime code (noir-lang/noir#5978) ([8ac81b1](8ac81b1)) * Error when comptime functions are used in runtime code (noir-lang/noir#5976) ([8ac81b1](8ac81b1)) * Fmt ([#8454](#8454)) ([34b4a8a](34b4a8a)) * Guesstimate gas for propose ([#8445](#8445)) ([bff0338](bff0338)) * Let `derive(Eq)` work for empty structs (noir-lang/noir#5965) ([8ac81b1](8ac81b1)) * LSP document symbol didn't work for primitive impls (noir-lang/noir#5970) ([8ac81b1](8ac81b1)) * **mem2reg:** Handle aliases better when setting a known value for a load (noir-lang/noir#5959) ([8ac81b1](8ac81b1)) * **mem2reg:** Handle aliases in function last store cleanup and additional alias unit test (noir-lang/noir#5967) ([8ac81b1](8ac81b1)) * Public data reads and writes verification ([#8296](#8296)) ([ae86347](ae86347)) * Restrict keccak256_injective test input to 8 bits (noir-lang/noir#5977) ([8ac81b1](8ac81b1)) * Suggest trait attributes in LSP (noir-lang/noir#5972) ([8ac81b1](8ac81b1)) ### Miscellaneous * **bb:** Remove poly downsizing, other fast-follow from structured polys ([#8475](#8475)) ([ac88f30](ac88f30)) * **ci:** Rerun ci when ready for review + don't allow draft merge ([#8456](#8456)) ([ede16d3](ede16d3)) * **docs:** Update box readme, remove duplicated features, added box install to the docs ([#8254](#8254)) ([b747ac1](b747ac1)) * Document BoundedVec (noir-lang/noir#5974) ([8ac81b1](8ac81b1)) * Document HashMap (noir-lang/noir#5984) ([8ac81b1](8ac81b1)) * Merge devnet to master ([#8472](#8472)) ([26706e9](26706e9)) * Remove 3 unused functions warnings in the stdlib (noir-lang/noir#5973) ([8ac81b1](8ac81b1)) * Remove warnings from protocol circuits ([#8420](#8420)) ([c4dbcab](c4dbcab)) * Rename files relating to what were "instances" ([#8383](#8383)) ([a934e85](a934e85)) * Replace relative paths to noir-protocol-circuits ([1c43bae](1c43bae)) </details> <details><summary>barretenberg: 0.54.0</summary> ## [0.54.0](barretenberg-v0.53.0...barretenberg-v0.54.0) (2024-09-10) ### ⚠ BREAKING CHANGES * **avm:** variants for binary operations ([#8473](#8473)) * **avm:** make JUMP(I) 16-bit ([#8443](#8443)) * **avm:** variants for SET opcode ([#8441](#8441)) * **avm:** variants for MOV opcode ([#8440](#8440)) ### Features * (bb) 128-bit challenges ([#8406](#8406)) ([d5b2397](d5b2397)) * **avm:** DSL integration of AVM recursive verifier ([#8405](#8405)) ([467120e](467120e)), closes [#8285](#8285) * **avm:** Make JUMP(I) 16-bit ([#8443](#8443)) ([5bb38b1](5bb38b1)) * **avm:** Variants for binary operations ([#8473](#8473)) ([8de1f2a](8de1f2a)) * **avm:** Variants for MOV opcode ([#8440](#8440)) ([5b27fbc](5b27fbc)) * **avm:** Variants for SET opcode ([#8441](#8441)) ([dc43306](dc43306)) * **bb:** Towards reduced polynomial memory usage ([#7990](#7990)) ([372f23c](372f23c)) ### Bug Fixes * **avm:** Full proving kernel fix ([#8468](#8468)) ([684d962](684d962)) * **bb:** Mac release ([#8450](#8450)) ([1b3f914](1b3f914)) ### Miscellaneous * **bb:** Remove poly downsizing, other fast-follow from structured polys ([#8475](#8475)) ([ac88f30](ac88f30)) * Rename files relating to what were "instances" ([#8383](#8383)) ([a934e85](a934e85)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.54.0</summary> ## [0.54.0](AztecProtocol/aztec-packages@aztec-package-v0.53.0...aztec-package-v0.54.0) (2024-09-10) ### Features * Archiver fork block num ([#8425](AztecProtocol/aztec-packages#8425)) ([a9f2364](AztecProtocol/aztec-packages@a9f2364)) ### Miscellaneous * Merge devnet to master ([#8472](AztecProtocol/aztec-packages#8472)) ([26706e9](AztecProtocol/aztec-packages@26706e9)) </details> <details><summary>barretenberg.js: 0.54.0</summary> ## [0.54.0](AztecProtocol/aztec-packages@barretenberg.js-v0.53.0...barretenberg.js-v0.54.0) (2024-09-10) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.54.0</summary> ## [0.54.0](AztecProtocol/aztec-packages@aztec-packages-v0.53.0...aztec-packages-v0.54.0) (2024-09-10) ### ⚠ BREAKING CHANGES * **avm:** variants for binary operations ([#8473](AztecProtocol/aztec-packages#8473)) * **avm:** make JUMP(I) 16-bit ([#8443](AztecProtocol/aztec-packages#8443)) * **avm:** variants for SET opcode ([#8441](AztecProtocol/aztec-packages#8441)) * **avm:** variants for MOV opcode ([#8440](AztecProtocol/aztec-packages#8440)) ### Features * (bb) 128-bit challenges ([#8406](AztecProtocol/aztec-packages#8406)) ([d5b2397](AztecProtocol/aztec-packages@d5b2397)) * `Module::add_item` (noir-lang/noir#5947) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Add `Expr::as_let` (noir-lang/noir#5964) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Add `FunctionDefinition::module` and `StructDefinition::module` (noir-lang/noir#5956) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Add `FunctionDefinition` methods `is_unconstrained` and `set_unconstrained` (noir-lang/noir#5962) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Add `StructDefinition::add_generic` (noir-lang/noir#5961) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Add `StructDefinition::name` (noir-lang/noir#5960) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Add a `panic` method to the stdlib (noir-lang/noir#5966) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Archiver fork block num ([#8425](AztecProtocol/aztec-packages#8425)) ([a9f2364](AztecProtocol/aztec-packages@a9f2364)) * Arithmetic Generics (noir-lang/noir#5950) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * **avm-transpiler:** Optionally count opcode types ([#8439](AztecProtocol/aztec-packages#8439)) ([21c06b5](AztecProtocol/aztec-packages@21c06b5)) * **avm/public:** User space PublicContext::get_args_hash ([#8292](AztecProtocol/aztec-packages#8292)) ([56ce16a](AztecProtocol/aztec-packages@56ce16a)) * **avm:** DSL integration of AVM recursive verifier ([#8405](AztecProtocol/aztec-packages#8405)) ([467120e](AztecProtocol/aztec-packages@467120e)), closes [#8285](AztecProtocol/aztec-packages#8285) * **avm:** Make JUMP(I) 16-bit ([#8443](AztecProtocol/aztec-packages#8443)) ([5bb38b1](AztecProtocol/aztec-packages@5bb38b1)) * **avm:** Variants for binary operations ([#8473](AztecProtocol/aztec-packages#8473)) ([8de1f2a](AztecProtocol/aztec-packages@8de1f2a)) * **avm:** Variants for MOV opcode ([#8440](AztecProtocol/aztec-packages#8440)) ([5b27fbc](AztecProtocol/aztec-packages@5b27fbc)) * **avm:** Variants for SET opcode ([#8441](AztecProtocol/aztec-packages#8441)) ([dc43306](AztecProtocol/aztec-packages@dc43306)) * **bb:** Towards reduced polynomial memory usage ([#7990](AztecProtocol/aztec-packages#7990)) ([372f23c](AztecProtocol/aztec-packages@372f23c)) * Let `nargo` and LSP work well in the stdlib (noir-lang/noir#5969) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * LSP autocompletion for attributes (noir-lang/noir#5963) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * LSP now suggests self fields and methods (noir-lang/noir#5955) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Show doc comments in LSP (noir-lang/noir#5968) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) ### Bug Fixes * Add re-exports back ([#8453](AztecProtocol/aztec-packages#8453)) ([b6cab90](AztecProtocol/aztec-packages@b6cab90)) * **avm:** Full proving kernel fix ([#8468](AztecProtocol/aztec-packages#8468)) ([684d962](AztecProtocol/aztec-packages@684d962)) * **bb:** Mac release ([#8450](AztecProtocol/aztec-packages#8450)) ([1b3f914](AztecProtocol/aztec-packages@1b3f914)) * **docs:** Some docs updates ([#8412](AztecProtocol/aztec-packages#8412)) ([ad73f30](AztecProtocol/aztec-packages@ad73f30)) * Error when `quote` is used in runtime code (noir-lang/noir#5978) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Error when comptime functions are used in runtime code (noir-lang/noir#5976) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Fmt ([#8454](AztecProtocol/aztec-packages#8454)) ([34b4a8a](AztecProtocol/aztec-packages@34b4a8a)) * Guesstimate gas for propose ([#8445](AztecProtocol/aztec-packages#8445)) ([bff0338](AztecProtocol/aztec-packages@bff0338)) * Let `derive(Eq)` work for empty structs (noir-lang/noir#5965) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * LSP document symbol didn't work for primitive impls (noir-lang/noir#5970) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * **mem2reg:** Handle aliases better when setting a known value for a load (noir-lang/noir#5959) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * **mem2reg:** Handle aliases in function last store cleanup and additional alias unit test (noir-lang/noir#5967) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Public data reads and writes verification ([#8296](AztecProtocol/aztec-packages#8296)) ([ae86347](AztecProtocol/aztec-packages@ae86347)) * Restrict keccak256_injective test input to 8 bits (noir-lang/noir#5977) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Suggest trait attributes in LSP (noir-lang/noir#5972) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) ### Miscellaneous * **bb:** Remove poly downsizing, other fast-follow from structured polys ([#8475](AztecProtocol/aztec-packages#8475)) ([ac88f30](AztecProtocol/aztec-packages@ac88f30)) * **ci:** Rerun ci when ready for review + don't allow draft merge ([#8456](AztecProtocol/aztec-packages#8456)) ([ede16d3](AztecProtocol/aztec-packages@ede16d3)) * **docs:** Update box readme, remove duplicated features, added box install to the docs ([#8254](AztecProtocol/aztec-packages#8254)) ([b747ac1](AztecProtocol/aztec-packages@b747ac1)) * Document BoundedVec (noir-lang/noir#5974) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Document HashMap (noir-lang/noir#5984) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Merge devnet to master ([#8472](AztecProtocol/aztec-packages#8472)) ([26706e9](AztecProtocol/aztec-packages@26706e9)) * Remove 3 unused functions warnings in the stdlib (noir-lang/noir#5973) ([8ac81b1](AztecProtocol/aztec-packages@8ac81b1)) * Remove warnings from protocol circuits ([#8420](AztecProtocol/aztec-packages#8420)) ([c4dbcab](AztecProtocol/aztec-packages@c4dbcab)) * Rename files relating to what were "instances" ([#8383](AztecProtocol/aztec-packages#8383)) ([a934e85](AztecProtocol/aztec-packages@a934e85)) * Replace relative paths to noir-protocol-circuits ([1c43bae](AztecProtocol/aztec-packages@1c43bae)) </details> <details><summary>barretenberg: 0.54.0</summary> ## [0.54.0](AztecProtocol/aztec-packages@barretenberg-v0.53.0...barretenberg-v0.54.0) (2024-09-10) ### ⚠ BREAKING CHANGES * **avm:** variants for binary operations ([#8473](AztecProtocol/aztec-packages#8473)) * **avm:** make JUMP(I) 16-bit ([#8443](AztecProtocol/aztec-packages#8443)) * **avm:** variants for SET opcode ([#8441](AztecProtocol/aztec-packages#8441)) * **avm:** variants for MOV opcode ([#8440](AztecProtocol/aztec-packages#8440)) ### Features * (bb) 128-bit challenges ([#8406](AztecProtocol/aztec-packages#8406)) ([d5b2397](AztecProtocol/aztec-packages@d5b2397)) * **avm:** DSL integration of AVM recursive verifier ([#8405](AztecProtocol/aztec-packages#8405)) ([467120e](AztecProtocol/aztec-packages@467120e)), closes [#8285](AztecProtocol/aztec-packages#8285) * **avm:** Make JUMP(I) 16-bit ([#8443](AztecProtocol/aztec-packages#8443)) ([5bb38b1](AztecProtocol/aztec-packages@5bb38b1)) * **avm:** Variants for binary operations ([#8473](AztecProtocol/aztec-packages#8473)) ([8de1f2a](AztecProtocol/aztec-packages@8de1f2a)) * **avm:** Variants for MOV opcode ([#8440](AztecProtocol/aztec-packages#8440)) ([5b27fbc](AztecProtocol/aztec-packages@5b27fbc)) * **avm:** Variants for SET opcode ([#8441](AztecProtocol/aztec-packages#8441)) ([dc43306](AztecProtocol/aztec-packages@dc43306)) * **bb:** Towards reduced polynomial memory usage ([#7990](AztecProtocol/aztec-packages#7990)) ([372f23c](AztecProtocol/aztec-packages@372f23c)) ### Bug Fixes * **avm:** Full proving kernel fix ([#8468](AztecProtocol/aztec-packages#8468)) ([684d962](AztecProtocol/aztec-packages@684d962)) * **bb:** Mac release ([#8450](AztecProtocol/aztec-packages#8450)) ([1b3f914](AztecProtocol/aztec-packages@1b3f914)) ### Miscellaneous * **bb:** Remove poly downsizing, other fast-follow from structured polys ([#8475](AztecProtocol/aztec-packages#8475)) ([ac88f30](AztecProtocol/aztec-packages@ac88f30)) * Rename files relating to what were "instances" ([#8383](AztecProtocol/aztec-packages#8383)) ([a934e85](AztecProtocol/aztec-packages@a934e85)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
@@ -2,6 +2,8 @@ | |||
#include "barretenberg/common/mem.hpp" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this file already existed? huh
@@ -105,17 +107,22 @@ template <typename Fr> class LegacyPolynomial { | |||
|
|||
Fr& operator[](const size_t i) { return coefficients_[i]; } | |||
|
|||
// For compatibility with Polynomial (which needs a special mutable accessor) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why does it need the mutable accessor?
size_t end_index() const { return start_index + size(); } | ||
Fr* data() { return span.data(); } | ||
size_t size() const { return span.size(); } | ||
Fr& operator[](size_t index) { return span[index - start_index]; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
isn't this [] usage unsafe? like should we not be using .at?
See https://hackmd.io/MDcSYZtESay9rI6-Atd0fg for motivation
Another pass on moving polynomials to a form where 'islands' of non-zeroes are supported.