-
Notifications
You must be signed in to change notification settings - Fork 234
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: fold acir programs #6563
feat: fold acir programs #6563
Conversation
Benchmark resultsNo metrics with a significant change found. Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | Transaction processing duration by data writes.
|
@@ -54,12 +54,6 @@ class ClientIVCTests : public ::testing::Test { | |||
Builder circuit{ ivc.goblin.op_queue }; | |||
MockCircuits::construct_arithmetic_circuit(circuit, log2_num_gates); | |||
|
|||
// TODO(https://github.com/AztecProtocol/barretenberg/issues/911): We require goblin ops to be added to the |
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.
moved this inside ClientIvc to avoid needing to handle it in multiple locations. Made new more descriptive issue.
testing::Values("fold_basic", "fold_basic_nested_call")); |
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.
Restricted this to just two tests since some of them have >100 circuits which would take forever with clientIvc, especially because we need to use the structured trace to handle the different sized circuits. All of the fold tests are already tested in the acir_tests suite anyway
@@ -200,6 +200,10 @@ template <class ProverInstances> | |||
FoldingResult<typename ProverInstances::Flavor> ProtoGalaxyProver_<ProverInstances>::fold_instances() | |||
{ | |||
BB_OP_COUNT_TIME_NAME("ProtogalaxyProver::fold_instances"); | |||
// Ensure instances are all of the same size |
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 has bitten me a few times. Usually this is a case where verification just fails without any other asserts being triggered.
protected: | ||
static void SetUpTestSuite() { srs::init_crs_factory("../srs_db/ignition"); } | ||
}; | ||
|
||
class AcirIntegrationSingleTest : public AcirIntegrationTest, public testing::WithParamInterface<std::string> {}; |
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.
weird diff here. This class already existed I just moved the bn254 init to the base class since one of the added tests uses the base class directly
Changes to circuit sizes
🧾 Summary (100% most significant diffs)
Full diff report 👇
|
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.
LGTM
* | ||
*/ | ||
TEST_F(AcirIntegrationTest, UpdateAcirCircuit) |
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.
is this to avoid issues like the premature finalization?
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.
yeah or anything else that would break this functionality. If this test was present when Maxim made those changes, it would've alerted us to an issue
Introduces tests of ClientIvc accumulation for a stack of acir-represented circuits generated by noir. Tests appear in three locations: the bb acir tests, the bb.js acir tests, and the new AcirIntegration test suite (which facilitates a better debugging workflow).