chore(ssa): Greenlight brillig_entry_points and switch to centralized CallGraph#9668
chore(ssa): Greenlight brillig_entry_points and switch to centralized CallGraph#9668
brillig_entry_points and switch to centralized CallGraph#9668Conversation
There was a problem hiding this comment.
ACVM Benchmarks
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
purely_sequential_opcodes |
250124 ns/iter (± 193) |
250000 ns/iter (± 228) |
1.00 |
perfectly_parallel_opcodes |
220970 ns/iter (± 2669) |
221411 ns/iter (± 5222) |
1.00 |
perfectly_parallel_batch_inversion_opcodes |
2787599 ns/iter (± 3396) |
2779566 ns/iter (± 9811) |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Time
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
private-kernel-inner |
0.016 s |
0.016 s |
1 |
private-kernel-reset |
0.154 s |
0.155 s |
0.99 |
private-kernel-tail |
0.011 s |
0.01 s |
1.10 |
rollup-base-private |
0.263 s |
0.263 s |
1 |
rollup-base-public |
0.168 s |
0.16 s |
1.05 |
rollup-block-root |
13 s |
13.1 s |
0.99 |
rollup-merge |
0.002 s |
0.002 s |
1 |
rollup-root |
0.004 s |
0.004 s |
1 |
semaphore-depth-10 |
0.019 s |
0.019 s |
1 |
sha512-100-bytes |
0.098 s |
0.101 s |
0.97 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Compilation Time
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
private-kernel-inner |
1.83 s |
1.756 s |
1.04 |
private-kernel-reset |
7.888 s |
7.952 s |
0.99 |
private-kernel-tail |
1.456 s |
1.384 s |
1.05 |
rollup-base-private |
15.34 s |
15.8 s |
0.97 |
rollup-base-public |
13.4 s |
13.8 s |
0.97 |
rollup-block-root-empty |
21.82 s |
21.96 s |
0.99 |
rollup-block-root-single-tx |
195 s |
210 s |
0.93 |
rollup-block-root |
206 s |
197 s |
1.05 |
rollup-merge |
1.348 s |
1.33 s |
1.01 |
rollup-root |
1.508 s |
1.492 s |
1.01 |
semaphore-depth-10 |
0.782 s |
0.785 s |
1.00 |
sha512-100-bytes |
1.546 s |
1.586 s |
0.97 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Opcode count
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
private-kernel-inner |
14792 opcodes |
14792 opcodes |
1 |
private-kernel-reset |
68868 opcodes |
68868 opcodes |
1 |
private-kernel-tail |
11177 opcodes |
11177 opcodes |
1 |
rollup-base-private |
221335 opcodes |
221335 opcodes |
1 |
rollup-base-public |
159954 opcodes |
159954 opcodes |
1 |
rollup-block-root-empty |
68106 opcodes |
68106 opcodes |
1 |
rollup-block-root-single-tx |
964509 opcodes |
964509 opcodes |
1 |
rollup-block-root |
965795 opcodes |
965795 opcodes |
1 |
rollup-merge |
1409 opcodes |
1409 opcodes |
1 |
rollup-root |
2631 opcodes |
2631 opcodes |
1 |
semaphore-depth-10 |
5700 opcodes |
5700 opcodes |
1 |
sha512-100-bytes |
13173 opcodes |
13173 opcodes |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Artifact Size
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
private-kernel-inner |
709.4 KB |
709.4 KB |
1 |
private-kernel-reset |
2033.2 KB |
2033.2 KB |
1 |
private-kernel-tail |
537 KB |
537 KB |
1 |
rollup-base-private |
4320 KB |
4320 KB |
1 |
rollup-base-public |
3334.6 KB |
3334.6 KB |
1 |
rollup-block-root-empty |
3855.1 KB |
3855.1 KB |
1 |
rollup-block-root-single-tx |
30753.8 KB |
30753.8 KB |
1 |
rollup-block-root |
30786.8 KB |
30786.8 KB |
1 |
rollup-merge |
188.2 KB |
188.2 KB |
1 |
rollup-root |
391 KB |
391 KB |
1 |
semaphore-depth-10 |
631.5 KB |
631.5 KB |
1 |
sha512-100-bytes |
525.5 KB |
525.5 KB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Test Suite Duration
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr |
100 s |
98 s |
1.02 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts |
108 s |
109 s |
0.99 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
202 s |
236 s |
0.86 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib |
218 s |
212 s |
1.03 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_reset-kernel-lib |
33 s |
33 s |
1 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_rollup-lib |
609 s |
603 s |
1.01 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types |
97 s |
99 s |
0.98 |
test_report_noir-lang_noir-bignum_ |
140 s |
136 s |
1.03 |
test_report_noir-lang_noir_bigcurve_ |
328 s |
333 s |
0.98 |
test_report_noir-lang_sha256_ |
15 s |
16 s |
0.94 |
test_report_noir-lang_sha512_ |
12 s |
12 s |
1 |
test_report_zkpassport_noir-ecdsa_ |
1 s |
3 s |
0.33 |
test_report_zkpassport_noir_rsa_ |
1 s |
1 s |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Compilation Memory
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
private-kernel-inner |
240.47 MB |
240.56 MB |
1.00 |
private-kernel-reset |
550.05 MB |
550.05 MB |
1 |
private-kernel-tail |
214.94 MB |
214.94 MB |
1 |
rollup-base-private |
1350 MB |
1350 MB |
1 |
rollup-base-public |
1400 MB |
1400 MB |
1 |
rollup-block-root-empty |
1010 MB |
1010 MB |
1 |
rollup-block-root-single-tx |
9690 MB |
9690 MB |
1 |
rollup-block-root |
9690 MB |
9690 MB |
1 |
rollup-merge |
331.51 MB |
331.51 MB |
1 |
rollup-root |
342.28 MB |
342.28 MB |
1 |
semaphore_depth_10 |
105.65 MB |
105.65 MB |
1 |
sha512_100_bytes |
234.77 MB |
234.79 MB |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Memory
Details
| Benchmark suite | Current: 3302dfc | Previous: 515fb42 | Ratio |
|---|---|---|---|
private-kernel-inner |
213.88 MB |
213.88 MB |
1 |
private-kernel-reset |
247.08 MB |
247.08 MB |
1 |
private-kernel-tail |
198.71 MB |
198.71 MB |
1 |
rollup-base-private |
502.47 MB |
502.47 MB |
1 |
rollup-base-public |
434.93 MB |
434.93 MB |
1 |
rollup-block-root |
1500 MB |
1500 MB |
1 |
rollup-merge |
329.26 MB |
329.26 MB |
1 |
rollup-root |
331.79 MB |
331.79 MB |
1 |
semaphore_depth_10 |
70.43 MB |
70.43 MB |
1 |
sha512_100_bytes |
57.32 MB |
57.32 MB |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Test Suite Duration'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 28d60e9 | Previous: 48327c0 | Ratio |
|---|---|---|---|
test_report_zkpassport_noir-ecdsa_ |
2 s |
1 s |
2 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
asterite
left a comment
There was a problem hiding this comment.
Looks good!
Unrelated to this PR but left me wondering... could deduplication can be avoided if a function doesn't use any globals?
I debated that as well but actually reverted it here fb710ca as some of the Brillig gen logic requires that a Brillig function has a singular entry point. We do hoisting of constants to the global memory space when generating Brillig globals. I figured this would be better for a separate PR. |
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Compilation Time'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 8989b23 | Previous: 48327c0 | Ratio |
|---|---|---|---|
rollup-block-root-single-tx |
269 s |
192 s |
1.40 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: remove duplicated frontend tests (noir-lang/noir#9706) chore: remove playwright workaround (noir-lang/noir#9704) fix(licm): Use `Loop::header` in `Loop::is_fully_executed` (noir-lang/noir#9700) chore: show which type is invalid as program input (noir-lang/noir#9701) chore: bump deps (noir-lang/noir#9698) chore: bump external pinned commits (noir-lang/noir#9693) chore(licm): Break things up further in LICM (noir-lang/noir#9683) chore(docs): spinning out bb docs (noir-lang/noir#9402) fix(ssa)!: Signed shift overflow checks rhs < bit_size (noir-lang/noir#9685) chore: add extra bitshifts tests (noir-lang/noir#9680) feat: Propagate purities using SCCs (noir-lang/noir#9672) chore: break `NodeInterner` into chunks (noir-lang/noir#9674) fix(formatter): don't revert indentation increase after popping it (noir-lang/noir#9673) feat: hoist safe casts from loops (noir-lang/noir#9645) chore: fix clippy warnings (noir-lang/noir#9675) chore(ssa): Refactor flattening (noir-lang/noir#9663) chore(ssa): Greenlight `brillig_entry_points` and switch to centralized CallGraph (noir-lang/noir#9668) chore: add two mem2reg regression tests where references are returned (noir-lang/noir#9670) fix(mem2reg): reuse existing expression and add missing alias (noir-lang/noir#9664) chore: add tests for bounded_vec (noir-lang/noir#9576) chore: redact debug info and file maps from snapshots (noir-lang/noir#9666) chore: pull out interpreter binary evaluation logic into pure functions (noir-lang/noir#9665) feat: brillig functions can be pure if they are not entry points (noir-lang/noir#9659) END_COMMIT_OVERRIDE Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: remove duplicated frontend tests (noir-lang/noir#9706) chore: remove playwright workaround (noir-lang/noir#9704) fix(licm): Use `Loop::header` in `Loop::is_fully_executed` (noir-lang/noir#9700) chore: show which type is invalid as program input (noir-lang/noir#9701) chore: bump deps (noir-lang/noir#9698) chore: bump external pinned commits (noir-lang/noir#9693) chore(licm): Break things up further in LICM (noir-lang/noir#9683) chore(docs): spinning out bb docs (noir-lang/noir#9402) fix(ssa)!: Signed shift overflow checks rhs < bit_size (noir-lang/noir#9685) chore: add extra bitshifts tests (noir-lang/noir#9680) feat: Propagate purities using SCCs (noir-lang/noir#9672) chore: break `NodeInterner` into chunks (noir-lang/noir#9674) fix(formatter): don't revert indentation increase after popping it (noir-lang/noir#9673) feat: hoist safe casts from loops (noir-lang/noir#9645) chore: fix clippy warnings (noir-lang/noir#9675) chore(ssa): Refactor flattening (noir-lang/noir#9663) chore(ssa): Greenlight `brillig_entry_points` and switch to centralized CallGraph (noir-lang/noir#9668) chore: add two mem2reg regression tests where references are returned (noir-lang/noir#9670) fix(mem2reg): reuse existing expression and add missing alias (noir-lang/noir#9664) chore: add tests for bounded_vec (noir-lang/noir#9576) chore: redact debug info and file maps from snapshots (noir-lang/noir#9666) chore: pull out interpreter binary evaluation logic into pure functions (noir-lang/noir#9665) feat: brillig functions can be pure if they are not entry points (noir-lang/noir#9659) END_COMMIT_OVERRIDE
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: remove duplicated frontend tests (noir-lang/noir#9706) chore: remove playwright workaround (noir-lang/noir#9704) fix(licm): Use `Loop::header` in `Loop::is_fully_executed` (noir-lang/noir#9700) chore: show which type is invalid as program input (noir-lang/noir#9701) chore: bump deps (noir-lang/noir#9698) chore: bump external pinned commits (noir-lang/noir#9693) chore(licm): Break things up further in LICM (noir-lang/noir#9683) chore(docs): spinning out bb docs (noir-lang/noir#9402) fix(ssa)!: Signed shift overflow checks rhs < bit_size (noir-lang/noir#9685) chore: add extra bitshifts tests (noir-lang/noir#9680) feat: Propagate purities using SCCs (noir-lang/noir#9672) chore: break `NodeInterner` into chunks (noir-lang/noir#9674) fix(formatter): don't revert indentation increase after popping it (noir-lang/noir#9673) feat: hoist safe casts from loops (noir-lang/noir#9645) chore: fix clippy warnings (noir-lang/noir#9675) chore(ssa): Refactor flattening (noir-lang/noir#9663) chore(ssa): Greenlight `brillig_entry_points` and switch to centralized CallGraph (noir-lang/noir#9668) chore: add two mem2reg regression tests where references are returned (noir-lang/noir#9670) fix(mem2reg): reuse existing expression and add missing alias (noir-lang/noir#9664) chore: add tests for bounded_vec (noir-lang/noir#9576) chore: redact debug info and file maps from snapshots (noir-lang/noir#9666) chore: pull out interpreter binary evaluation logic into pure functions (noir-lang/noir#9665) feat: brillig functions can be pure if they are not entry points (noir-lang/noir#9659) END_COMMIT_OVERRIDE
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE chore: remove duplicated frontend tests (noir-lang/noir#9706) chore: remove playwright workaround (noir-lang/noir#9704) fix(licm): Use `Loop::header` in `Loop::is_fully_executed` (noir-lang/noir#9700) chore: show which type is invalid as program input (noir-lang/noir#9701) chore: bump deps (noir-lang/noir#9698) chore: bump external pinned commits (noir-lang/noir#9693) chore(licm): Break things up further in LICM (noir-lang/noir#9683) chore(docs): spinning out bb docs (noir-lang/noir#9402) fix(ssa)!: Signed shift overflow checks rhs < bit_size (noir-lang/noir#9685) chore: add extra bitshifts tests (noir-lang/noir#9680) feat: Propagate purities using SCCs (noir-lang/noir#9672) chore: break `NodeInterner` into chunks (noir-lang/noir#9674) fix(formatter): don't revert indentation increase after popping it (noir-lang/noir#9673) feat: hoist safe casts from loops (noir-lang/noir#9645) chore: fix clippy warnings (noir-lang/noir#9675) chore(ssa): Refactor flattening (noir-lang/noir#9663) chore(ssa): Greenlight `brillig_entry_points` and switch to centralized CallGraph (noir-lang/noir#9668) chore: add two mem2reg regression tests where references are returned (noir-lang/noir#9670) fix(mem2reg): reuse existing expression and add missing alias (noir-lang/noir#9664) chore: add tests for bounded_vec (noir-lang/noir#9576) chore: redact debug info and file maps from snapshots (noir-lang/noir#9666) chore: pull out interpreter binary evaluation logic into pure functions (noir-lang/noir#9665) feat: brillig functions can be pure if they are not entry points (noir-lang/noir#9659) END_COMMIT_OVERRIDE
Description
Problem*
Resolves #9516
Resolves #7228 (this is the last occurrence of an ad-hoc call graph in the SSA)
Summary*
get_brillig_entry_pointsnow uses the centralizedCallGraphstructure used by inliningAdditional Context
I added the
bench-showlabel to see if the call graph update had any effect.Documentation*
Check one:
PR Checklist*
cargo fmton default settings.