feat(ssa): Mark transitively dead parameters during DIE#8254
feat(ssa): Mark transitively dead parameters during DIE#8254TomAFrench merged 33 commits intomasterfrom
Conversation
compiler/noirc_evaluator/src/ssa/opt/die/prune_dead_parameters.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/ssa/opt/die/prune_dead_parameters.rs
Outdated
Show resolved
Hide resolved
compiler/noirc_evaluator/src/ssa/opt/die/prune_dead_parameters.rs
Outdated
Show resolved
Hide resolved
…g of unused params per block
…rameters state as to split it out from die
b69f2ed to
8521c89
Compare
There was a problem hiding this comment.
ACVM Benchmarks
Details
| Benchmark suite | Current: 8c5e7e9 | Previous: a593e48 | Ratio |
|---|---|---|---|
purely_sequential_opcodes |
273376 ns/iter (± 476) |
264740 ns/iter (± 520) |
1.03 |
perfectly_parallel_opcodes |
244789 ns/iter (± 4233) |
234841 ns/iter (± 3881) |
1.04 |
perfectly_parallel_batch_inversion_opcodes |
3584084 ns/iter (± 13150) |
3221519 ns/iter (± 4324) |
1.11 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Compilation Time
Details
| Benchmark suite | Current: 8c5e7e9 | Previous: a593e48 | Ratio |
|---|---|---|---|
regression_4709 |
0.675 s |
0.675 s |
1 |
ram_blowup_regression |
12.8 s |
12.7 s |
1.01 |
global_var_regression_entry_points |
0.358 s |
0.49 s |
0.73 |
private-kernel-inner |
2.322 s |
2.212 s |
1.05 |
private-kernel-reset |
6.738 s |
6.55 s |
1.03 |
private-kernel-tail |
1.126 s |
1.166 s |
0.97 |
rollup-base-private |
17.92 s |
18.92 s |
0.95 |
rollup-base-public |
13.1 s |
13.32 s |
0.98 |
rollup-block-root-empty |
1.282 s |
1.256 s |
1.02 |
rollup-block-root-single-tx |
124 s |
124 s |
1 |
rollup-block-root |
119 s |
135 s |
0.88 |
rollup-merge |
1.066 s |
1.14 s |
0.94 |
rollup-root |
1.62 s |
1.67 s |
0.97 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Execution Time
Details
| Benchmark suite | Current: 8c5e7e9 | Previous: a593e48 | Ratio |
|---|---|---|---|
private-kernel-inner |
0.028 s |
0.027 s |
1.04 |
private-kernel-reset |
0.164 s |
0.163 s |
1.01 |
private-kernel-tail |
0.016 s |
0.016 s |
1 |
rollup-base-private |
0.331 s |
0.333 s |
0.99 |
rollup-base-public |
0.212 s |
0.212 s |
1 |
rollup-block-root |
11.4 s |
11.6 s |
0.98 |
rollup-merge |
0.004 s |
0.004 s |
1 |
rollup-root |
0.013 s |
0.013 s |
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: 8c5e7e9 | Previous: a593e48 | Ratio |
|---|---|---|---|
test_report_AztecProtocol_aztec-packages_noir-projects_aztec-nr |
54 s |
52 s |
1.04 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-contracts |
90 s |
98 s |
0.92 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_blob |
42 s |
39 s |
1.08 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_private-kernel-lib |
178 s |
172 s |
1.03 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_rollup-lib |
191 s |
186 s |
1.03 |
test_report_AztecProtocol_aztec-packages_noir-projects_noir-protocol-circuits_crates_types |
54 s |
55 s |
0.98 |
test_report_noir-lang_noir-bignum_ |
412 s |
401 s |
1.03 |
test_report_noir-lang_noir_bigcurve_ |
230 s |
222 s |
1.04 |
test_report_noir-lang_sha512_ |
28 s |
27 s |
1.04 |
test_report_zkpassport_noir_rsa_ |
22 s |
22 s |
1 |
This comment was automatically generated by workflow using github-action-benchmark.
I will make a follow-up issue for this regression. This actually looks to be due DIE being run over the full SSA during the preprocess fns pass which is changing inlining. EDIT: #8321 |
|
|
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: a2c22d6 | Previous: ff795cf | Ratio |
|---|---|---|---|
test_report_noir-lang_noir_bigcurve_ |
285 s |
235 s |
1.21 |
This comment was automatically generated by workflow using github-action-benchmark.
CC: @TomAFrench
Here is the panic we see triggered during that test. It can be triggered on master so I am going to resolve it separately. It is currently blocking this PR. |
No longer getting a panic on the |
Automated pull of nightly from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE fix: always type-check turbofish, and error when it's not allowed (noir-lang/noir#8437) chore: Release Noir(1.0.0-beta.5) (noir-lang/noir#7955) feat(greybox_fuzzer): Parallel fuzz tests (noir-lang/noir#8432) fix(ssa): Mislabeled instructions with side effects in EnableSideEffectsIf removal pass (noir-lang/noir#8355) feat: SSA pass impact report (noir-lang/noir#8393) chore: bump external pinned commits (noir-lang/noir#8433) chore: separate benchmarking from github actions more (noir-lang/noir#7943) chore(fuzz): Break up the AST fuzzer `compare` module (noir-lang/noir#8431) chore(fuzz): Rename `init_vs_final` to `min_vs_full` (noir-lang/noir#8430) fix!: error on tuple mismatch (noir-lang/noir#8424) chore: bump external pinned commits (noir-lang/noir#8429) chore(acir): Test whether the predicate has an effect on slice intrinsics (noir-lang/noir#8421) feat(ssa): Mark transitively dead parameters during DIE (noir-lang/noir#8254) fix(ssa_gen): Do not code gen fetching of empty arrays when initializing the data bus (noir-lang/noir#8426) chore: remove `.aztec-sync-commit` (noir-lang/noir#8415) chore(test): Add more unit tests for `inline_functions_with_at_most_one_instruction` (noir-lang/noir#8418) chore: add minor docs for interpreter (noir-lang/noir#8397) fix: print slice composite types surrounded by parentheses (noir-lang/noir#8412) feat: Skip SSA passes that contain any of the given messages (noir-lang/noir#8416) fix: disable range constraints using the predicate (noir-lang/noir#8396) chore: bumping external libraries (noir-lang/noir#8406) chore: redo typo PR by shystrui1199 (noir-lang/noir#8405) feat(test): add `nargo_fuzz_target` (noir-lang/noir#8308) fix: allow names to collide in the values/types namespaces (noir-lang/noir#8286) fix: Fix sequencing of side-effects in lvalue (noir-lang/noir#8384) feat(greybox_fuzzer): Maximum executions parameter added (noir-lang/noir#8390) fix: warn on and discard unreachable statements after break and continue (noir-lang/noir#8382) fix: add handling for u128 infix ops in interpreter (noir-lang/noir#8392) chore: move acirgen tests into separate file (noir-lang/noir#8376) feat(fuzz): initial version of comptime vs brillig target for AST fuzzer (noir-lang/noir#8335) chore: apply lints to `ast_fuzzer` (noir-lang/noir#8386) chore: add note on AI generated PRs in `CONTRIBUTING.md` (noir-lang/noir#8385) chore: document flattening pass (noir-lang/noir#8312) fix: comptime shift-right overflow is zero (noir-lang/noir#8380) feat: let static_assert accept any type for its message (noir-lang/noir#8322) fix(expand): output safety comment before statements (noir-lang/noir#8378) chore: avoid need to rebuild after running tests (noir-lang/noir#8379) chore: bump dependencies (noir-lang/noir#8372) chore: Add GITHUB_TOKEN to cross build (noir-lang/noir#8370) chore: redo typo PR by GarmashAlex (noir-lang/noir#8364) chore: remove unsafe code from greybox fuzzer (noir-lang/noir#8315) feat: add `--fuzz-timeout` to `nargo test` options (noir-lang/noir#8326) chore: bump external pinned commits (noir-lang/noir#8334) fix(expand): try to use "Self" in function calls (noir-lang/noir#8353) fix: Fix evaluation order of assignments with side-effects in their rhs (noir-lang/noir#8342) fix: let comptime Field value carry the field's sign (noir-lang/noir#8343) fix: Ordering of items in callstacks (noir-lang/noir#8338) chore: add snapshosts for nargo expand tests (noir-lang/noir#8318) fix(ownership): Clone global arrays (noir-lang/noir#8328) chore: Replace all SSA interpreter panics with error variants (noir-lang/noir#8311) feat: Metamorphic AST fuzzing (noir-lang/noir#8299) fix: fix some Display implementations for AST nodes (noir-lang/noir#8316) chore: remove leftover file (noir-lang/noir#8313) fix: uses non-zero points with ec-add-unsafe (noir-lang/noir#8248) END_COMMIT_OVERRIDE --------- Co-authored-by: AztecBot <tech@aztecprotocol.com> 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 fix: always type-check turbofish, and error when it's not allowed (noir-lang/noir#8437) chore: Release Noir(1.0.0-beta.5) (noir-lang/noir#7955) feat(greybox_fuzzer): Parallel fuzz tests (noir-lang/noir#8432) fix(ssa): Mislabeled instructions with side effects in EnableSideEffectsIf removal pass (noir-lang/noir#8355) feat: SSA pass impact report (noir-lang/noir#8393) chore: bump external pinned commits (noir-lang/noir#8433) chore: separate benchmarking from github actions more (noir-lang/noir#7943) chore(fuzz): Break up the AST fuzzer `compare` module (noir-lang/noir#8431) chore(fuzz): Rename `init_vs_final` to `min_vs_full` (noir-lang/noir#8430) fix!: error on tuple mismatch (noir-lang/noir#8424) chore: bump external pinned commits (noir-lang/noir#8429) chore(acir): Test whether the predicate has an effect on slice intrinsics (noir-lang/noir#8421) feat(ssa): Mark transitively dead parameters during DIE (noir-lang/noir#8254) fix(ssa_gen): Do not code gen fetching of empty arrays when initializing the data bus (noir-lang/noir#8426) chore: remove `.aztec-sync-commit` (noir-lang/noir#8415) chore(test): Add more unit tests for `inline_functions_with_at_most_one_instruction` (noir-lang/noir#8418) chore: add minor docs for interpreter (noir-lang/noir#8397) fix: print slice composite types surrounded by parentheses (noir-lang/noir#8412) feat: Skip SSA passes that contain any of the given messages (noir-lang/noir#8416) fix: disable range constraints using the predicate (noir-lang/noir#8396) chore: bumping external libraries (noir-lang/noir#8406) chore: redo typo PR by shystrui1199 (noir-lang/noir#8405) feat(test): add `nargo_fuzz_target` (noir-lang/noir#8308) fix: allow names to collide in the values/types namespaces (noir-lang/noir#8286) fix: Fix sequencing of side-effects in lvalue (noir-lang/noir#8384) feat(greybox_fuzzer): Maximum executions parameter added (noir-lang/noir#8390) fix: warn on and discard unreachable statements after break and continue (noir-lang/noir#8382) fix: add handling for u128 infix ops in interpreter (noir-lang/noir#8392) chore: move acirgen tests into separate file (noir-lang/noir#8376) feat(fuzz): initial version of comptime vs brillig target for AST fuzzer (noir-lang/noir#8335) chore: apply lints to `ast_fuzzer` (noir-lang/noir#8386) chore: add note on AI generated PRs in `CONTRIBUTING.md` (noir-lang/noir#8385) chore: document flattening pass (noir-lang/noir#8312) fix: comptime shift-right overflow is zero (noir-lang/noir#8380) feat: let static_assert accept any type for its message (noir-lang/noir#8322) fix(expand): output safety comment before statements (noir-lang/noir#8378) chore: avoid need to rebuild after running tests (noir-lang/noir#8379) chore: bump dependencies (noir-lang/noir#8372) chore: Add GITHUB_TOKEN to cross build (noir-lang/noir#8370) chore: redo typo PR by GarmashAlex (noir-lang/noir#8364) chore: remove unsafe code from greybox fuzzer (noir-lang/noir#8315) feat: add `--fuzz-timeout` to `nargo test` options (noir-lang/noir#8326) chore: bump external pinned commits (noir-lang/noir#8334) fix(expand): try to use "Self" in function calls (noir-lang/noir#8353) fix: Fix evaluation order of assignments with side-effects in their rhs (noir-lang/noir#8342) fix: let comptime Field value carry the field's sign (noir-lang/noir#8343) fix: Ordering of items in callstacks (noir-lang/noir#8338) chore: add snapshosts for nargo expand tests (noir-lang/noir#8318) fix(ownership): Clone global arrays (noir-lang/noir#8328) chore: Replace all SSA interpreter panics with error variants (noir-lang/noir#8311) feat: Metamorphic AST fuzzing (noir-lang/noir#8299) fix: fix some Display implementations for AST nodes (noir-lang/noir#8316) chore: remove leftover file (noir-lang/noir#8313) fix: uses non-zero points with ec-add-unsafe (noir-lang/noir#8248) END_COMMIT_OVERRIDE --------- Co-authored-by: AztecBot <tech@aztecprotocol.com> Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Description
Problem*
Resolves #8239 (comment)
Summary*
Transtively dead parameters will now be removed during DIE.
For example this code:
Details
Will become the following:
Details
This was done in the following way:
As per the doc comments:
Additional Context
Documentation*
Check one:
PR Checklist*
cargo fmton default settings.