From eef6f1675c9152222155490ad486556e0fc874f2 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:28:16 -0500 Subject: [PATCH 01/28] Simplify page title --- docs/docs/tooling/profiler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index c31271facbb..6c42894b6e4 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -1,5 +1,5 @@ --- -title: Noir Profiler +title: Profiler description: Learn about the Noir Profiler, how to generate execution flamegraphs, identify bottlenecks, and visualize optimizations. keywords: [profiling, profiler, flamegraph] sidebar_position: 0 From 4e5d77ae3ffdc79a34bb4a09af598c2bd9016c60 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 12:29:45 -0500 Subject: [PATCH 02/28] Update sidebar positions --- docs/docs/tooling/profiler.md | 2 +- docs/docs/tooling/security.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 6c42894b6e4..c56f48479f3 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -2,7 +2,7 @@ title: Profiler description: Learn about the Noir Profiler, how to generate execution flamegraphs, identify bottlenecks, and visualize optimizations. keywords: [profiling, profiler, flamegraph] -sidebar_position: 0 +sidebar_position: 3 --- `noir-profiler` is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. diff --git a/docs/docs/tooling/security.md b/docs/docs/tooling/security.md index e14481efc31..b3fc5c5a2e6 100644 --- a/docs/docs/tooling/security.md +++ b/docs/docs/tooling/security.md @@ -2,7 +2,7 @@ title: Security checks description: Security checks currently provided by the compiler keywords: [Nargo, Security, Brillig, Unconstrained] -sidebar_position: 2 +sidebar_position: 4 --- # Security checks @@ -58,4 +58,4 @@ fn main f0 (v0: Field, v1: Field) { } ``` -Normally, the addition operation over `v0` and `v1` happening before the call itself would prevent the call from being (correctly) considered properly constrained. With this option enabled, the false positive goes away at the cost of the check becoming somewhat less performant on large unrolled loops. +Normally, the addition operation over `v0` and `v1` happening before the call itself would prevent the call from being (correctly) considered properly constrained. With this option enabled, the false positive goes away at the cost of the check becoming somewhat less performant on large unrolled loops. From f96498f21fa01077559b6ad6c5221394c3be23cb Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 14:45:01 -0500 Subject: [PATCH 03/28] Supplement noirup versioning descriptions --- docs/docs/tooling/profiler.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index c56f48479f3..1c58aaf3b90 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -9,7 +9,9 @@ sidebar_position: 3 ### Installation -`noir-profiler` comes out of the box with [noirup](../getting_started/noir_installation.md). Test that you have the profiler installed by running `noir-profiler --version`. +`noir-profiler` is automatically installed with Nargo starting noirup v0.1.4. + +Check if the profiler is already installed by running `noir-profiler --version`. If the profiler is not found, update noirup and install the profiler by [reinstalling both noirup and Nargo](../getting_started/quick_start.md#noir). ### Usage From d067b08c04603e7cbd88d4d37e017d352093018d Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:05:22 -0500 Subject: [PATCH 04/28] Touch up project creation descriptions --- docs/docs/tooling/profiler.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 1c58aaf3b90..96d2bed4d29 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -15,7 +15,11 @@ Check if the profiler is already installed by running `noir-profiler --version`. ### Usage -Let's start by creating a simple Noir program. All this program aims to do is zero out an array past some dynamic index. +### Create a demonstrative project + +Let's start by creating a simple Noir program that aims to zero out an array past some dynamic index. + +Run `nargo new program` to create a new project named _program_, then copy in the following as source code: ```rust fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { @@ -27,13 +31,15 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { array } ``` -You can use these values for the `Prover.toml`: + +You can use these values for the _Prover.toml_: + ```toml ptr = 1 array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ``` -Running `nargo info` we can get some information about the opcodes produced by this program, but it doesn't give us a lot of info on its own. Compile and execute this program normally using `nargo compile` and `nargo execute`. +Compile the program using `nargo compile`, then we are ready to try the profiler out. ### Generating an ACIR opcode flamegraph From 3358234fddab007a26f76bb1501616585c7468b4 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:09:27 -0500 Subject: [PATCH 05/28] Touch up subtitles --- docs/docs/tooling/profiler.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 96d2bed4d29..a63396dd471 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -7,13 +7,13 @@ sidebar_position: 3 `noir-profiler` is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. -### Installation +## Installation `noir-profiler` is automatically installed with Nargo starting noirup v0.1.4. Check if the profiler is already installed by running `noir-profiler --version`. If the profiler is not found, update noirup and install the profiler by [reinstalling both noirup and Nargo](../getting_started/quick_start.md#noir). -### Usage +## Usage ### Create a demonstrative project @@ -56,7 +56,7 @@ You should now have a flamegraph that maps ACIR opcodes to their corresponding l We can see that the majority of opcodes come from the write to `array[i]`. Now that we have some more information about our program's bottlenecks, let's optimize it. -#### Transform conditional writes into reads +#### Optimizing the program: transform conditional writes into reads We can improve our circuit's efficiency using [unconstrained functions](../noir/concepts/unconstrained.md). @@ -91,7 +91,7 @@ This new program produces the following ACIR opcodes flamegraph with a total of In the above image we searched for the ACIR opcodes due to `i > ptr` in the source code. Trigger a search by clicking on "Search" in the top right corner of the flamegraph. In the bottom right corner of the image above, you will note that the flamegraph displays the percentage of all opcodes associated with that search. Searching for `memory::op` in the optimized flamegraph will result in no matches. This is due to no longer using a dynamic array in our circuit. By dynamic array, we are referring to using a dynamic index (values reliant upon witness inputs) when working with arrays. Most of the memory operations, have now been replaced with arithmetic operations as we are reading two arrays from known constant indices. -### Generate a backend gates flamegraph +### Generate a proving backend gates flamegraph Unfortunately, ACIR opcodes do not give us a full picture of where the cost of this program lies. The `gates` command also accepts a backend binary. In the [quick start guide](../getting_started/quick_start.md#proving-backend) you can see how to get started with the [Barretenberg proving backend](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg). From e5e6c4bfaed1862395bb14ff3339bd6d3a1901d9 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:30:31 -0500 Subject: [PATCH 06/28] Simplify subtitles --- docs/docs/tooling/profiler.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index a63396dd471..f700ef72e46 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -41,7 +41,7 @@ array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, Compile the program using `nargo compile`, then we are ready to try the profiler out. -### Generating an ACIR opcode flamegraph +### Flamegraphing ACIR opcodes The program on its own is quite high-level. Let's get a more granular look at what is happening by using `noir-profiler`. @@ -56,7 +56,7 @@ You should now have a flamegraph that maps ACIR opcodes to their corresponding l We can see that the majority of opcodes come from the write to `array[i]`. Now that we have some more information about our program's bottlenecks, let's optimize it. -#### Optimizing the program: transform conditional writes into reads +#### Optimizing array writes with reads We can improve our circuit's efficiency using [unconstrained functions](../noir/concepts/unconstrained.md). @@ -91,9 +91,9 @@ This new program produces the following ACIR opcodes flamegraph with a total of In the above image we searched for the ACIR opcodes due to `i > ptr` in the source code. Trigger a search by clicking on "Search" in the top right corner of the flamegraph. In the bottom right corner of the image above, you will note that the flamegraph displays the percentage of all opcodes associated with that search. Searching for `memory::op` in the optimized flamegraph will result in no matches. This is due to no longer using a dynamic array in our circuit. By dynamic array, we are referring to using a dynamic index (values reliant upon witness inputs) when working with arrays. Most of the memory operations, have now been replaced with arithmetic operations as we are reading two arrays from known constant indices. -### Generate a proving backend gates flamegraph +### Flamegraphing proving backend gates -Unfortunately, ACIR opcodes do not give us a full picture of where the cost of this program lies. +ACIR opcodes do not give us a full picture of where the cost of this program lies. The `gates` command also accepts a backend binary. In the [quick start guide](../getting_started/quick_start.md#proving-backend) you can see how to get started with the [Barretenberg proving backend](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg). Run the following command: @@ -120,7 +120,7 @@ In the optimized flamegraph, we searched for the backend gates due to `i > ptr` For posterity, here is the flamegraph for the same program with a size 2048 array: ![Gates Flamegraph Optimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png) -### Generate an unconstrained execution trace flamegraph +### Flamegraphing unconstrained opcodes The profiler also enables developers to generate a flamegraph of the unconstrained execution trace. For unconstrained functions Noir compiles down to Brillig bytecode, thus we will be seeing a flamegraph of Brillig opcodes, rather than ACIR opcodes. From 314c20eda7c5be24dcdbb7d6d568cede3b7ca9fd Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:31:16 -0500 Subject: [PATCH 07/28] Move unconstrained section up --- docs/docs/tooling/profiler.md | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index f700ef72e46..786bb99fc31 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -91,6 +91,28 @@ This new program produces the following ACIR opcodes flamegraph with a total of In the above image we searched for the ACIR opcodes due to `i > ptr` in the source code. Trigger a search by clicking on "Search" in the top right corner of the flamegraph. In the bottom right corner of the image above, you will note that the flamegraph displays the percentage of all opcodes associated with that search. Searching for `memory::op` in the optimized flamegraph will result in no matches. This is due to no longer using a dynamic array in our circuit. By dynamic array, we are referring to using a dynamic index (values reliant upon witness inputs) when working with arrays. Most of the memory operations, have now been replaced with arithmetic operations as we are reading two arrays from known constant indices. +### Flamegraphing unconstrained opcodes + +The profiler also enables developers to generate a flamegraph of the unconstrained execution trace. For unconstrained functions Noir compiles down to Brillig bytecode, thus we will be seeing a flamegraph of Brillig opcodes, rather than ACIR opcodes. + +Let's take our initial program and simply add an `unconstrained` modifier before main (e.g. `unconstrained fn main`). Then run the following command: +```sh +noir-profiler execution-opcodes --artifact-name ./target/program.json --prover_toml_path Prover.toml --output ./target +``` +This matches the `opcodes` command, except that now we need to accept a `Prover.toml` file to profile execution with a specific set of inputs. + +We will get the following flamegraph with 1,582 opcodes executed: +![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) + +Circuit programming (ACIR) is an entirely different execution paradigm compared to regular programming. To demonstrate this point further, let's generate an execution trace for our optimized ACIR program once we have modified `main` to be `unconstrained`. + +We then get the following flamegraph with 2,125 opcodes executed: +![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) + +In the above graph we are searching for `new_array`, which shows up zero matches in the initial program. In the unconstrained environment, the updated program essentially just adds extra unnecessary checks. Thus, we see a longer execution trace. + +`execution-opcodes` is useful for when you are searching for bottlenecks in unconstrained code. This can be especially meaningful for optimizing witness generation. Even though unconstrained execution helps us skip proving steps, we still need to compute the relevant inputs/outputs outside of the circuit before proving. + ### Flamegraphing proving backend gates ACIR opcodes do not give us a full picture of where the cost of this program lies. @@ -119,25 +141,3 @@ In the optimized flamegraph, we searched for the backend gates due to `i > ptr` For posterity, here is the flamegraph for the same program with a size 2048 array: ![Gates Flamegraph Optimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png) - -### Flamegraphing unconstrained opcodes - -The profiler also enables developers to generate a flamegraph of the unconstrained execution trace. For unconstrained functions Noir compiles down to Brillig bytecode, thus we will be seeing a flamegraph of Brillig opcodes, rather than ACIR opcodes. - -Let's take our initial program and simply add an `unconstrained` modifier before main (e.g. `unconstrained fn main`). Then run the following command: -```sh -noir-profiler execution-opcodes --artifact-name ./target/program.json --prover_toml_path Prover.toml --output ./target -``` -This matches the `opcodes` command, except that now we need to accept a `Prover.toml` file to profile execution with a specific set of inputs. - -We will get the following flamegraph with 1,582 opcodes executed: -![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) - -Circuit programming (ACIR) is an entirely different execution paradigm compared to regular programming. To demonstrate this point further, let's generate an execution trace for our optimized ACIR program once we have modified `main` to be `unconstrained`. - -We then get the following flamegraph with 2,125 opcodes executed: -![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) - -In the above graph we are searching for `new_array`, which shows up zero matches in the initial program. In the unconstrained environment, the updated program essentially just adds extra unnecessary checks. Thus, we see a longer execution trace. - -`execution-opcodes` is useful for when you are searching for bottlenecks in unconstrained code. This can be especially meaningful for optimizing witness generation. Even though unconstrained execution helps us skip proving steps, we still need to compute the relevant inputs/outputs outside of the circuit before proving. From 999bf57ea5ab846e051be804f6031afc1a07ef3d Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:35:52 -0500 Subject: [PATCH 08/28] Remove non-command `...` in sentences for better readability --- docs/docs/tooling/profiler.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 786bb99fc31..3503f9ae46e 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -5,11 +5,11 @@ keywords: [profiling, profiler, flamegraph] sidebar_position: 3 --- -`noir-profiler` is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. +The profiler is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. ## Installation -`noir-profiler` is automatically installed with Nargo starting noirup v0.1.4. +The profiler is automatically installed with Nargo starting noirup v0.1.4. Check if the profiler is already installed by running `noir-profiler --version`. If the profiler is not found, update noirup and install the profiler by [reinstalling both noirup and Nargo](../getting_started/quick_start.md#noir). @@ -43,13 +43,16 @@ Compile the program using `nargo compile`, then we are ready to try the profiler ### Flamegraphing ACIR opcodes -The program on its own is quite high-level. Let's get a more granular look at what is happening by using `noir-profiler`. +The program on its own is quite high-level. Let's get a more granular look at what is happening by using the profiler. After compiling the program, run the following: + ```sh noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ ``` -Below you can see an example flamegraph with a total 387 opcodes (using `nargo` version 1.0.0-beta.2): + +Below you can see an example flamegraph with a total 387 opcodes (using Nargo v1.0.0-beta.2): + ![ACIR Flamegraph Unoptimized](@site/static/img/tooling/profiler/acir-flamegraph-unoptimized.png) You should now have a flamegraph that maps ACIR opcodes to their corresponding locations in the source code. We strongly recommend generating these graphs yourself as you follow this guide. Opening the flamegraph in a browser provides a more interactive experience, allowing you to click into and examine different regions of the graph. Simply viewing the image file won't offer the same level of insight. @@ -99,7 +102,7 @@ Let's take our initial program and simply add an `unconstrained` modifier before ```sh noir-profiler execution-opcodes --artifact-name ./target/program.json --prover_toml_path Prover.toml --output ./target ``` -This matches the `opcodes` command, except that now we need to accept a `Prover.toml` file to profile execution with a specific set of inputs. +This matches the `opcodes` command, except that now we need to accept a _Prover.toml_ file to profile execution with a specific set of inputs. We will get the following flamegraph with 1,582 opcodes executed: ![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) @@ -124,7 +127,7 @@ noir-profiler gates --artifact-path ./target/program.json --backend-path bb --ou ``` `--backend-path` accepts a path to the backend binary. In the above command we assume that you have the backend binary path saved in your PATH. If you do not, you will have to pass the binary's absolute path. -This produces the following flamegraph with 3,737 total backend gates (using `bb` version 0.76.4): +This produces the following flamegraph with 3,737 total backend gates (using bb v0.76.4): ![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) Searching for ACIR `memory::op` opcodes, they look to cause about 18.2% of the backend gates. From f23cb346b76ffae08a93b68bd010d291c000dbf2 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 15:39:50 -0500 Subject: [PATCH 09/28] Trim demo project preparation --- docs/docs/tooling/profiler.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 3503f9ae46e..642c409d4ea 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -32,14 +32,7 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { } ``` -You can use these values for the _Prover.toml_: - -```toml -ptr = 1 -array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -``` - -Compile the program using `nargo compile`, then we are ready to try the profiler out. +Compile the program using `nargo compile`, and we are ready to try the profiler out. ### Flamegraphing ACIR opcodes @@ -104,6 +97,13 @@ noir-profiler execution-opcodes --artifact-name ./target/program.json --prover_t ``` This matches the `opcodes` command, except that now we need to accept a _Prover.toml_ file to profile execution with a specific set of inputs. +You can use these values for the _Prover.toml_: + +```toml +ptr = 1 +array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +``` + We will get the following flamegraph with 1,582 opcodes executed: ![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) From eb6ebaf5804a5fe94cd345ef57dafc9cc6799374 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 16:20:49 -0500 Subject: [PATCH 10/28] Touch up flamegraphing acir opcode section for readability --- docs/docs/tooling/profiler.md | 40 +++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 642c409d4ea..80af88b27e1 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -32,29 +32,31 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { } ``` -Compile the program using `nargo compile`, and we are ready to try the profiler out. +Change directory into the project and compile the program using `nargo compile`. We are ready then to try the profiler out. ### Flamegraphing ACIR opcodes -The program on its own is quite high-level. Let's get a more granular look at what is happening by using the profiler. - -After compiling the program, run the following: +Let's get a more granular look at our program using the profiler, running: ```sh noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ ``` -Below you can see an example flamegraph with a total 387 opcodes (using Nargo v1.0.0-beta.2): +The command will generate a flamegraph in your _target_ folder that maps the number of ACIR opcodes and their corresponding locations in your program source code. + +Opening the flamegraph in a web browser will provide a more interactive experience, allowing you to click into different regions of the graph and examine them. + +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: ![ACIR Flamegraph Unoptimized](@site/static/img/tooling/profiler/acir-flamegraph-unoptimized.png) -You should now have a flamegraph that maps ACIR opcodes to their corresponding locations in the source code. We strongly recommend generating these graphs yourself as you follow this guide. Opening the flamegraph in a browser provides a more interactive experience, allowing you to click into and examine different regions of the graph. Simply viewing the image file won't offer the same level of insight. +The demonstrative project consists of 387 ACIR opcodes in total, which from the flamegraph we can see that the majority of them comes from the write to `array[i]`. -We can see that the majority of opcodes come from the write to `array[i]`. Now that we have some more information about our program's bottlenecks, let's optimize it. +Knowing the insight on our program's bottleneck, let's optimize it. #### Optimizing array writes with reads -We can improve our circuit's efficiency using [unconstrained functions](../noir/concepts/unconstrained.md). +We can improve our program's performance using [unconstrained functions](../noir/concepts/unconstrained.md). Let's replace expensive array writes with array gets with the new code below: ```rust @@ -80,12 +82,28 @@ unconstrained fn zero_out_array(ptr: u32, mut array: [u32; 32]) -> [u32; 32] { array } ``` -We chose to instead write our array inside of the unconstrained function. Then inside of our circuit we assert on every value in the array returned from the unconstrained function. -This new program produces the following ACIR opcodes flamegraph with a total of 284 opcodes: +Instead of writing our array in a fully constrained manner, we first write our array inside an unconstrained function and then assert every value in the array returned from the unconstrained function in a constrained manner. + +This brings the ACIR opcodes count of our program down to a total of 284 opcodes: + ![ACIR Flamegraph Optimized](@site/static/img/tooling/profiler/acir-flamegraph-optimized.png) -In the above image we searched for the ACIR opcodes due to `i > ptr` in the source code. Trigger a search by clicking on "Search" in the top right corner of the flamegraph. In the bottom right corner of the image above, you will note that the flamegraph displays the percentage of all opcodes associated with that search. Searching for `memory::op` in the optimized flamegraph will result in no matches. This is due to no longer using a dynamic array in our circuit. By dynamic array, we are referring to using a dynamic index (values reliant upon witness inputs) when working with arrays. Most of the memory operations, have now been replaced with arithmetic operations as we are reading two arrays from known constant indices. +#### Searching in flamegraphs + +The `i > ptr` region in the above image is highlighted purple as we were searching for it. + +Click "Search" in the top right corner of the flamegraph to start a search (e.g. i > ptr). + +Check "Matched" in the bottom right corner to learn the percentage out of total opcodes associated with the search (e.g. 43.3%). + +:::tip + +If you try searching for `memory::op` before and after the optimization, you will find that the search will no longer have matches after the optimization. + +This comes from the optimization removing the use of a dynamic array (i.e. an array with a dynamic index, that is its values rely on witness inputs). After the optimized rewrite into reading two arrays from known constant indices, simple arithmetic operations replaces the original memory operations. + +::: ### Flamegraphing unconstrained opcodes From c71e8b72cff6186b2adb9ed7cf56381846ef149e Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 16:22:42 -0500 Subject: [PATCH 11/28] . --- docs/docs/tooling/profiler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 80af88b27e1..2eedf02abb1 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -36,7 +36,7 @@ Change directory into the project and compile the program using `nargo compile`. ### Flamegraphing ACIR opcodes -Let's get a more granular look at our program using the profiler, running: +Let's get a more granular look at our program's ACIR opcode footprint using the profiler, running: ```sh noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ From 487e46dbe98b38ad90df4789069ecb38f00733fd Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:17:54 -0500 Subject: [PATCH 12/28] Touch up flamegraphing unconstrained execution traces --- docs/docs/tooling/profiler.md | 60 +++++++++++++++++++++++++++-------- 1 file changed, 47 insertions(+), 13 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 2eedf02abb1..9f2cc1b9ad7 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -105,34 +105,68 @@ This comes from the optimization removing the use of a dynamic array (i.e. an ar ::: -### Flamegraphing unconstrained opcodes +### Flamegraphing unconstrained execution traces -The profiler also enables developers to generate a flamegraph of the unconstrained execution trace. For unconstrained functions Noir compiles down to Brillig bytecode, thus we will be seeing a flamegraph of Brillig opcodes, rather than ACIR opcodes. +The profiler also provides the ability to flamegraph a Noir program's unconstrained execution trace. This is particularly useful for searching bottlenecks in unconstrained programs and optimizing execution speeds. -Let's take our initial program and simply add an `unconstrained` modifier before main (e.g. `unconstrained fn main`). Then run the following command: -```sh -noir-profiler execution-opcodes --artifact-name ./target/program.json --prover_toml_path Prover.toml --output ./target +#### Preparing the demonstrative project + +Let's turn our demonstrative program into an unconstrained program by adding an `unconstrained` modifier to the main function: + +```rust +unconstrained fn main(...){...} ``` -This matches the `opcodes` command, except that now we need to accept a _Prover.toml_ file to profile execution with a specific set of inputs. -You can use these values for the _Prover.toml_: +Since we are profiling the execution trace, we will also need to provide a set of inputs to execute the program with. + +Run `nargo check` to generate a _Prover.toml_ file, which you can fill it in with: ```toml ptr = 1 array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ``` -We will get the following flamegraph with 1,582 opcodes executed: -![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) +#### Flamegraphing + +Let's take a granular look at our program's unconstrained execution trace footprint using the profiler, running: + +```sh +noir-profiler execution-opcodes --artifact-path ./target/program.json --prover-toml-path Prover.toml --output ./target +``` -Circuit programming (ACIR) is an entirely different execution paradigm compared to regular programming. To demonstrate this point further, let's generate an execution trace for our optimized ACIR program once we have modified `main` to be `unconstrained`. +This is similar to the `opcodes` command, except it additionally takes in the _Prover.toml_ file to profile execution with a specific set of inputs. -We then get the following flamegraph with 2,125 opcodes executed: +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: ![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) -In the above graph we are searching for `new_array`, which shows up zero matches in the initial program. In the unconstrained environment, the updated program essentially just adds extra unnecessary checks. Thus, we see a longer execution trace. +Note that unconstrained Noir functions compile down to Brillig opcodes, which is what the counts in this flamegraph stand for, rather than constrained ACIR opcodes like in the previous section. + +:::tip + +Optimizing constrained operations through unconstrained rewrites like what we did in [the previous section](#optimizing-array-writes-with-reads) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). + +For example, we can find a 13.9% match `new_array` in the flamegraph above. + +In contrast, if we profile the pre-optimization demonstrative project: +![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) + +You will notice that it does not consist any `new_array`, and executes a total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). + +As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. + +This is however good to keep in mind in case you start noticing execution speeds being the bottleneck of your program, or if you are simply looking to optimize your program's execution speeds. + +::: + + + + + + + + + -`execution-opcodes` is useful for when you are searching for bottlenecks in unconstrained code. This can be especially meaningful for optimizing witness generation. Even though unconstrained execution helps us skip proving steps, we still need to compute the relevant inputs/outputs outside of the circuit before proving. ### Flamegraphing proving backend gates From a49b85149677707a80d2506ca7abc534b135d8f7 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:22:00 -0500 Subject: [PATCH 13/28] Rename subtitles --- docs/docs/tooling/profiler.md | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 9f2cc1b9ad7..80658cbfcb7 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -15,7 +15,9 @@ Check if the profiler is already installed by running `noir-profiler --version`. ## Usage -### Create a demonstrative project +### Profiling ACIR opcodes + +#### Create a demonstrative project Let's start by creating a simple Noir program that aims to zero out an array past some dynamic index. @@ -34,7 +36,7 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { Change directory into the project and compile the program using `nargo compile`. We are ready then to try the profiler out. -### Flamegraphing ACIR opcodes +#### Flamegraphing Let's get a more granular look at our program's ACIR opcode footprint using the profiler, running: @@ -105,11 +107,11 @@ This comes from the optimization removing the use of a dynamic array (i.e. an ar ::: -### Flamegraphing unconstrained execution traces +### Profiling execution traces (unconstrained) The profiler also provides the ability to flamegraph a Noir program's unconstrained execution trace. This is particularly useful for searching bottlenecks in unconstrained programs and optimizing execution speeds. -#### Preparing the demonstrative project +#### Updating the demonstrative project Let's turn our demonstrative program into an unconstrained program by adding an `unconstrained` modifier to the main function: @@ -158,17 +160,7 @@ This is however good to keep in mind in case you start noticing execution speeds ::: - - - - - - - - - - -### Flamegraphing proving backend gates +### Profiling proving backend gates ACIR opcodes do not give us a full picture of where the cost of this program lies. The `gates` command also accepts a backend binary. In the [quick start guide](../getting_started/quick_start.md#proving-backend) you can see how to get started with the [Barretenberg proving backend](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg). From 7ca6f186a719be1b2fa608005512f42c8b46939b Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:24:37 -0500 Subject: [PATCH 14/28] Elaborate profiler's unconstrained-only execution profiling limitation --- docs/docs/tooling/profiler.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 80658cbfcb7..a56f0888de6 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -109,7 +109,9 @@ This comes from the optimization removing the use of a dynamic array (i.e. an ar ### Profiling execution traces (unconstrained) -The profiler also provides the ability to flamegraph a Noir program's unconstrained execution trace. This is particularly useful for searching bottlenecks in unconstrained programs and optimizing execution speeds. +The profiler also provides the ability to flamegraph a Noir program's execution trace. This is particularly useful for searching and optimizing bottlenecks in execution Noir programs. + +The profiler currently supports profiling fully unconstrained Noir programs at this moment. #### Updating the demonstrative project From c8820bf37f5177a00c66b58957d3200cba0e41d5 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:31:13 -0500 Subject: [PATCH 15/28] Supplement reasoning of ACIR opcode profiling --- docs/docs/tooling/profiler.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index a56f0888de6..ca41eb24a11 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -17,6 +17,14 @@ Check if the profiler is already installed by running `noir-profiler --version`. ### Profiling ACIR opcodes +The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying and optimizing proving bottlenecks of Noir programs. + +:::note + +"_Approximately_" as actual proving speeds depend on the proving backend of choice, and how it interprets the ACIR opcodes. + +::: + #### Create a demonstrative project Let's start by creating a simple Noir program that aims to zero out an array past some dynamic index. @@ -38,7 +46,7 @@ Change directory into the project and compile the program using `nargo compile`. #### Flamegraphing -Let's get a more granular look at our program's ACIR opcode footprint using the profiler, running: +Let's take a granular look at our program's ACIR opcode footprint using the profiler, running: ```sh noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ From 590befdfa6a75f0f14061c95bc4835b1f5900be5 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 17:32:54 -0500 Subject: [PATCH 16/28] Touch up execution trace section's wording --- docs/docs/tooling/profiler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index ca41eb24a11..863ba42ccc4 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -117,9 +117,9 @@ This comes from the optimization removing the use of a dynamic array (i.e. an ar ### Profiling execution traces (unconstrained) -The profiler also provides the ability to flamegraph a Noir program's execution trace. This is particularly useful for searching and optimizing bottlenecks in execution Noir programs. +The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying and optimizing execution bottlenecks of Noir programs. -The profiler currently supports profiling fully unconstrained Noir programs at this moment. +The profiler supports profiling fully unconstrained Noir programs at this moment. #### Updating the demonstrative project From 82fb3f50ae817b60b560a7397bf659ea6bf826d9 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 25 Feb 2025 19:06:15 -0500 Subject: [PATCH 17/28] Touch up profiling proving backend gates section --- docs/docs/tooling/profiler.md | 65 ++++++++++++++---- .../gates-flamegraph-optimized-2048.png | Bin 85893 -> 85962 bytes .../profiler/gates-flamegraph-optimized.png | Bin 34504 -> 76482 bytes 3 files changed, 51 insertions(+), 14 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 863ba42ccc4..e56c0220319 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -172,29 +172,66 @@ This is however good to keep in mind in case you start noticing execution speeds ### Profiling proving backend gates -ACIR opcodes do not give us a full picture of where the cost of this program lies. -The `gates` command also accepts a backend binary. In the [quick start guide](../getting_started/quick_start.md#proving-backend) you can see how to get started with the [Barretenberg proving backend](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg). +The profiler further provides the ability to flamegraph a Noir program's proving backend gates footprint. This is useful for fully identifying and optimizing proving bottlenecks of Noir programs. + +This feature depends on the proving backend you are using. We will use [Barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg) as an example here. Follow the [quick start guide](../getting_started/quick_start.md#proving-backend) to install it if you have not already. + +#### Updating the demonstrative project + +Let's first revert our demonstrative program into a constrained program by removing the `unconstrained` modifier from the main function: + +```rust +fn main(...){...} +``` + +Then recompile the program running `nargo compile`. + +#### Flamegraphing + +Let's take a granular look at our program's proving backend gates footprint using the profiler, running: -Run the following command: ```sh noir-profiler gates --artifact-path ./target/program.json --backend-path bb --output ./target ``` -`--backend-path` accepts a path to the backend binary. In the above command we assume that you have the backend binary path saved in your PATH. If you do not, you will have to pass the binary's absolute path. -This produces the following flamegraph with 3,737 total backend gates (using bb v0.76.4): -![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) +The `--backend-path` flag takes in the path to your proving backend binary. -Searching for ACIR `memory::op` opcodes, they look to cause about 18.2% of the backend gates. +The above command assumes you have Barretenberg (bb) installed and that its path is saved in your PATH. If that is not the case, you can pass in the absolute path to your proving backend binary instead. -You will notice that the majority of the backend gates come from the ACIR range opcodes. This is due to the way UltraHonk handles range constraints, which is the backend used in this example. UltraHonk uses lookup tables internally for its range gates. These can take up the majority of the gates for a small circuit, but whose impact becomes more meaningful in larger circuits. If our array was much larger, range gates would become a much smaller percentage of our total circuit. -Here is an example backend gates flamegraph for the same program in this guide but with an array of size 2048: -![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) -Every backend implements ACIR opcodes differently, so it is important to profile both the ACIR and the backend gates to get a full picture. +Flamegraph of the demonstrative project generated with bb v0.76.4: -Now let's generate a graph for our optimized circuit with an array of size 32. We get the following flamegraph that produces 3,062 total backend gates: ![Gates Flamegraph Optimized](@site/static/img/tooling/profiler/gates-flamegraph-optimized.png) -In the optimized flamegraph, we searched for the backend gates due to `i > ptr` in the source code. The backend gates associated with this call stack were only 3.8% of the total backend gates. If we look back to the ACIR flamegraph, that same code was the cause of 43.3% ACIR opcodes. This discrepancy reiterates the earlier point about profiling both the ACIR opcodes and backend gates. +The demonstrative project consists of 3,062 proving backend gates in total. + +:::note + +If you try searching for `i > ptr` in the source code, you will notice that this call stack is only contributing 3.8% of the total proving backend gates, versus the 43.3% ACIR opcodes it contributes. + +This illustrates that number of ACIR opcodes are at best approximations of proving performances, where actual proving performances depend on how the proving backend interprets and translates ACIR opcodes into proving gates. + +::: + +:::tip + +Profiling your program with different parameters is good way to understand your program's bottlenecks as it scales. + +From the flamegraph above, you will notice that `blackbox::range` contributes the majority of the backend gates. This comes from how Barretenberg UltraHonk uses lookup tables for its range gates under the hood, which comes with a considerable but fixed setup cost in terms of proving gates. + +If our array is larger, range gates would become a much smaller percentage of our total circuit. See this flamegraph for the same program but with an array of size 2,048 (versus originally 32) in comparison: -For posterity, here is the flamegraph for the same program with a size 2048 array: ![Gates Flamegraph Optimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png) + +Where `blackbox::range` contributes a considerably smaller portion of the total proving gates. + +Every proving backend interprets ACIR opcodes differently, so it is important to profile proving backend gates to get the full picture of proving performance. + +As additional reference, this is the flamegraph of the pre-optimization demonstrative project at array size 32: + +![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) + +And at array size 2,048: + +![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) + +::: diff --git a/docs/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png b/docs/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png index 8d0a1d42be1dfd500e0600aae35168282dda6bbd..fff69fbac5e04e9a511475c72a1443dc1a3c0d04 100644 GIT binary patch literal 85962 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

-(>n^Ocww7XuuK~{AoK*t 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

4eg{j`CvW~lsetVfBLgO^ zM~T%NQblC)SP&f7gm!>+!*c$og#QI2@t2?{{v&Qw=e9Q}ygAM0>Zer)DC&CA}9tQ^oQB0Cw9rc* z;Nn2%Y`-Sp^M9_Pfc?+ENy+CA0w2ACz^Pibwaq*3&*~o2Ww6({CQ_uZ*F>Us5^fL< zz^5YfV_H)z3PWAIPhd7+|L?!J$Y1v{>IWRo7<6w$mVovI%1^#Wnez@upgca@ zYm3a4Lta3Ao$mjBVZUw@C;kRPqqvIjllmz9-T@QTv^Q^=JdkAUxzNDiYrg)GxPON) zj^{Oj@MD%cDgT_-zG)6MGx&ME>{95smT;?TR%yA$@l8C@^Jm-`)d15aD`+1?); z^%BH&p!^xoF4%G9vY`f1MgF*hYr(Ba&GyBI^{$9EoLfM3*wumpuD)`yDziAma$`Qt z^ZoH#Ov>uXSQc9)EuU`hgZSi$6R~q8dd)nr(fub$)pZN5&n;5mYPq1`u2bf#^z6t~wiX8Li3QLUEs}=>k*i0uQ{=_!m*#_EacrY^VYq3ha#0yjF zj6ah>BN+ez29J>s1xkG

5jXK#i4Cf|Q>?VY$rbkhokqzp`uJ z%1;{cAK(~gZ|X~p;*!mr=#m5q?7JKW{o!L%#6Ljk{NqBQtLVeY{Q01xDga0`=LdW* z8I-v~d2b1-rYr0=o_g$8_iK5*qK@J88{`QoK|lnF63x>88FT211JyxY<@=8uXx>eN zCj8}VojIl}-)9u?y3}gaU-H?>gp+|@Pdr&apK}8@s+AWI#!$9rqXGrx!CuwTOvwyY z6v$$X9H=-;oPQ<}bJ%^d48q)FVNQ1{r@p#2UZNEBJA^-cE{jhoa!l-N(zi4Wmv8`F zkuk`5-C{73g@NjPCwN|#*0JT*DiF*D<(;f7L$!-1&XMHhC(4ivUR_#1dYdxL=Mwr3%aLP<-Y zDi_)owHW_rBoqGF#~wG)Ao9d-1KUe(wHbjX8tAl~B2%%E_^Q}&w|T#Lms z&nYyXF%bQ~VGNdmBRCiHsA^R?f!0FTqP{2`Ca>B7B&9LIm<&cqBh zV~VA~Nxa};=pykT8}#e;kqmquI7pZ@uj}>2a`x@FAXCt@SUs1ML^WlBc7vYCX7{Q! zWxE|@N;5%3P>2uZA88PDhb34j=-{kV>L~O152GtUmj`16s-gQo_M#fS2;CcK%mS zl_LuLD1P~_VtC}|xkoYmubb|Rw;pI7lalwgN!#r0;Jwy~sKaG$UN0+Oavw3*woO)q zuH!zpGC1j7d6!66)Be@2yeb_gSk92!C6w$YE%Sh%^L8*ZgQ zrV?Te-VSJ*AbB-`V-(U{0=C>XENS+;EO|pVv$u>-`gTv7oZE3w!PYb5m2K{E~EH3^`y1QEN44|3{BTnh#RZa~(6eY(XhPbO`c|(P+m>vgz^rV2vSZ+kS zb(Qzb8>`)x$Gy=akNyzdx*$Mh6jAdR7fuAKH&65hH-%M6VZ=i(cN4<$?uw?3PKxJr zR`Lx7p3p?miHLF;E1k?(rNqlYeESZAjz{wC`Y$qGyExRO*`2I&j#79I;q^teO1o&L zcD972^o@=hCw~R%Z5~OHwVJ4QFX({WDpXYJt!K7jq$qt-lDOO9l9W zE`lZ<88>#;Ycuk4u@gUUCyU<5PEKyw>_heHPqOL$?LDs)5oFBdlmUU>M-6rL-6^ao zy*S@*?GAKCt(Is`3Ykk3HtIsMZ<#;DvBL8i0Q?e8s?y8^FS^~LH|LRNgzT>Z&FS~5I zO%eN8H&QLp48+=RzB!}_P{Cn6QL{^GGwzM;*7X<@6^^!;sTwT0cMF_m(|NAqRs2Mw zFD^gB$hM33h4&)jM!9?&lL=QgquD@z!XzFpCSx@((x2%P7bQ5>Ko1^3nZSKeCI~L# zyKJWELQ#ZU%sxH>3HSuFbpIiuBB4i$5BqEvs?3gLQ7E?4{*rwLGVTS6&sm#)7XW24 zLaRTt0ov#REqjV3Xe{uJkNh`Jy47a7%g}wTPf@0C^VE-tll*>14HdNy?KbOBVI!A8 zS7xt-S!!$#kzjzV#I1aU{(y*vHV7 zcQ@}oa{a3f2o;m2+HIy=V+ESr+rH|P|4n=`fnc(~CMkT*1h@x z^y%Ygc*Cf0ZUjroO8#fU&yX%LRdFnlZ9dCZa_D^7q*H&zRfj3>w9$U{6)W)O>ml8& z^wj-b|B>ug@J{f*+N3#zKHO;F^_7B(RCo%x&IO=5kLw(0;-3nvbvX`{eY-VK8YX%; z*$-2qn%ZW73pV_A84KTCPEd+^$fMf6%0UMo+KVb)dax}`wk<0%(26?4;C0p%<8@Qx zf^Y&0|F4{y;}0mmKtns{^!PXI%OhLObgVfV0l#6x9U&D8|03&jXpzi+aR^n~S4V1g z(DBAm%zm{rM45`j1`ZcLv#X5dAbc1mzC&W}Gw!9$uJDttV*DJr`pO6t)Gj;zZ_>iY z*;ZZZQ=*rW-=KHrgJEI}XsyDF9re31C>{3UD9@RR>iA`#9xVphnxyT@|H=Y#_`eh} zccCQV1)s zz*-7PAfTLd$Lgleo-dEH(Sa?J)i*RE6_Gpm-*pSD7;oIfwvoUo2KB2pg>=oOX})yH z?sR;hpcd)U_($ZIje%o7AuIqn*WDa{=fbKLh0O|%$A}A$%}E65WS71y#~IPT zx&Wv|0i|%5%vp}ymDfViS^4v`K;Ah(P1NO7W#o|W3oQ8O&U^nD&Qrex*MeUePAO+e z4mz~+2pVJ;V0ObTOYHQKo0Y{%`H*z})?QY_na|n*DxOAXGvK}Z!;b;i7;-kbCH16h zLyCp5_pCeP_TYltD-m;c>U5CRs{XpODTVaL4r$~?y3cQn_RneKU->Z6eS%8pQdAAK7LgCb-FCwF=2Bh0?Ol&JoEZ z)-J$&Rl0N|)T8oXpYpQe{+(2g!_7Obch0#6H~KfzQ6@8z3wA3rVGj5Ffj}Far(=7| z)ZBI}#FqaqdBr0igblh3gD?gvc(+ymx@&07DMDp0p5lLQDR+tpsh=i-!Pa|9_KTGl z?T=cE7iM6NKRxlqwSg>*2i~BZsX4u)t&}lwW0YBcv|P4Y+D&$>xBRisq*E7jTik<< zasa*Q&~Hz3r4ql~c`xvXRE$N&%}WHI0V!`=Ap?-XHcPW8E{7= zjRlYN*5VdPlgRm{GtJ~)8;Ap|6=k=l+BsOYgid^Qr1YgEM^C5(G3*{y$y}A@7_1LU z{Gf!lEUJ@ev~~ohVltN!ZN$W53AAl#P(f=h?PDFKp**g)4Aj~^Wgf=~#hJ~l3vG8! zA3HOKI^KL+`GF=g`=%`ns-WS?PEV9=b+aSd6WGCrz<_f1^fP)Dp3A?lgi4Mo3@)bT zxUXBpHKZvQN*9#U`A<$}V1Y&9)KalQ3YXM-Y&_(jh!CJj78pa@OO9jC{_zychJO%_ z10>1e%i7n(xb(5Z1oy~<^8VezbU;}Ie@@Mf(vz&*96?JF`$DC|tPMsP3yY|5XQJ;m zA2as?EBTGCR|oH$b~`CQ=-(Zc=yP%3eLEfEcU-|sH#!ts#|u*8xZk`;V3m2=!2>ju zt~-kOn!-hw^g9#(6EVUMc4Hn{9fM-`dwsU3l@J%6UJL}#?^eN~F3sY{#wk~cN3|** z)$}Y{6bTsm#Ub2nV>_O&X-gIsLzz>(+nO94GRdBmT9K08NeTM)Mu=$YRs*FH?Pvn~ zS9)rAZ!Wbw*!trhTWJ#~WbDO=UF$l}>T6YVE_W!cUfA8zKh4LDyXeg5k$nc=A66Cg zGZHGbK{@S|9{TN8MdtND8hX_~q5RwXAq!VNkH(_GsO3ed9en~D94^o+5BnMBCoP4I z0m)gm-+yU6f>YXpeIBFHS8MhKzrsb1E{g)T4PNfe#Jf?l$ksR6a0S%ZXg!AN5%8s# zGV2a5k(61ut9EPHfsm6adfTBqp^QUO+i70xK#$i64FsBj>(Ah9yO2(&YWEuJL|@Br z^#lsZY6bvHyu!SS+CkrB+V#qW0fkG;Xy>76aolk+a|zwF6z$ey5oFZ3f9^)~BJ0Q^ zjc{C8E7wdhI@g{9G(KO_6;~+czbYnJaQ(^SrDVIbO&8#2TSthXqtK`RzlnFHw{Td_ zP=2?~A?g?=H4wHt*(-^FItY>J*H5qFzwpy3&VBgUC@(K>)a-lEHKF|5Yw(79OEA}@0#v!6Mm8ku@*F~v_u9MPRg%iUu^U{EQuq*NY zl?nkM#`Pa4^Fi18Xvf!7eMFh=g^|*i#I-fmmg%r^Q{FqkW!S5;*H0hhbV?<*-AmPb zAonen2k6)npagUCn^yHtH=PeR4wg^1@$po5gQ?+yMY%&w;8gQhb0(sL@FXQqs>Lfw z>)yNOhjE0RN;u2;ceJSblB)W4V;z}cz`L2?yp??A{ApHn^rAf7ZbMtHWF{=_zBjCX zKc!}69d0-W2CcFI$}JM1V(GqoxtxeSrHp?6UYyN5jTU*M{+np*NIvz1F!9*_l2gEN z9kag9${$|tDj8pDO&4dZC=m%eq72-&5daQ{@v6&KdwA*W&Sdt>>&!H^xlOD1^c$a; z_>&NdVodt|m@P2JFR)sOKW8q(g4;7?;SGK2us35DX0ed|{^IJz1fqzffc2BPQ(A?Q zXB$>_b;6a6*2FV;{rczHFWhcech*e#Aeop^9_Yv&U>Dg38>Jh%Vgc(-Wd;$rwb4CX$K2+(&j-; z^OFS~C@@g_io6j7q6kmoPqlE)0zUKxI3vPwqbOU4S$Uptp;WE?u-DWS8YPcdjCX(H zLq+HW7F~shD;7hj+NFFLWR%S=&E$5!!gf9*F+(<&4?B31lWGYbEdFPovi!kcJ^#)%P zV|(1jzxz9*X|ZG>zJV&i6x*C>?o(pRm~7#gzea>J!e0?mtoQa)xg>YmqF7N-81sY} zXwB4#kHkD1tB*Ykoe%XSTZEsX-R=nPgD6;p9vRI{kQ=SYxN-!0l|*dd^^G#T=YMMx zOl!9*4GLa|b0WBJuzZJ|n3^nBQlMQ|t|MF@3sLHcWvU2Sd}(O={yfIuEXy4Ey(m^KKYBjq%v-(6)08cA_AQf*q85)8sy_cptwpkhgcOsZ%f4?FfW|Q?`JFQ~fFkJI{YL?#0ni+wc-qC}lj}WXab4#R*5oZ~ln`AWOCNU0H`9 zC+ffii8)tLptt0DkTY+y`MuHyxYn;HM!s&IQjaQ;rQMGQgjV{_njFci;BZAIiEv;3 z@Q34M4&_5p3UdB97Q;fuViTMld)ByO7W7?Y`s!toIoLyMsYSZYPu}Wew*vE>plTG# z2O45dK7Zj@$h@yHF5l~S3wb}*?64w4VI@M)Z#)I>nlf<0Q0B$v#m+GKQl#Gti1Gs? ztJ6R9uYkODHnnT-Q8O^GMcA|+bs_^Jko58J%>Bp(Acj+?JYdVHu-Q3&5nC9>^Y4Q6Oj4{kq^HK;uFI^5A{n;tzzmdU5f|`rD}KKQ z?LQI(-0xa{r4T&i8~n;Ku!ifyr1n7_7(0DqWjRQXY`a*!SpSdQfIGz#7zA3`aOj)R zro&P)rD#_;s4YK#<1GuX2Sm_%{=Q zK>*g7p^QSYv_Gdqqy82X7F8G)5}Ipss85RIUNwu*#>gmSz35z_->Fk!x)QJwqJBkk zZ)19qeQogQLh`r`^Zr|P8@6JTr(^jUyDYP%CJNYgZNSQG+*J;d{*^k;nL<|YT97R6 z#vH1I&t-^dso=68oCrfM<1$of`u-pEW7Ic??IFivfB=8K4)gdU=+XS?2K zI8mZ$I8m%=ib27T#Z?m87tQm9$#%eH{o5#7ve@0l+|AXF;8N8BJ;Q9et%9SUS2yA; zVX9LRmgvST6TdM!+WEx|IvcP5fbh&}r1@O^7GZ@_F`o`;*^k?*s`5lGga?nEG>Lc5eV7`8lbEFc7@ZGdzckw;}J$X6JlCCHdO_zf!DgM%jlghP}6dQFi8*NDez0bYU`0arvh)@Y{PB1S!a|>2AK$ z>OUQX;&AuaaL(Bas9=b*KQ(VXH%5INSuj5mL7T=P{lpj4@C6s+`swd>8PjyWAM}a$ zYj-5n)}ly$v{eiW6AAL^U!9R!mKzGSgOh+3H>B6aPH5?A)1kq$K0Zwz*HzL8wgDQ| zkV<0i&$3bhG|~e+r#nq%$AtVMGMaIho%$Y_W@UxI1v*5YzMSWbn) zwQ(pmY0}K=)TW5IIZDT!$a0&GG;6tc#{o5yufs@0tsM7nW)#^~SL@X?xIP|Aho-+b z8~glzAnLgJaN3wloiS3*8tci4GTFwUSMqTHbm^c;AKmgU_(Ytv`}F&wi+HK}mkGr@ zaUb90u>yU&3fr~vAPX#@?53M)USB`<5m7d!m+CnLz;Add%%nD#$%zvqww)qb;WUgM6m?NXGCGNaZZtQ zkjto@lZKk3i~>xdPK{bF&f#0ri>A0c(QoJ}fqLAHmwS$EhksSuOPI|h6ZLNiJK|tC zQB2SowHiNR#L*BdS(l&i6eT|e8SDUZDkeW=^)O`NDFf!QHG)$3C3eSaBK>#uuY@c% zkE!yYH^{Id&nqTFJ)8xaor#_rluzGH7UL>GY!^Ht5|Js2KpjW$c`g-iJ6xkm2|e#F z2~!AlOf1Vcx(cut;iH0d|3A9kDyprxYxiv_PAO2VXpjO$gS(Vsr9dfA+`T|?3trq> zDDKeW#ickTXmNK-aEIU!2;t=2@7`yeJ;ry&y2(v0B5SVyeCG3erXat~$R~k-B|XEp z(idB!wwXeQU&hFY7|y!k5NEPbzs)eFB%4u*3<6*~mkBw^8L;Cv*&BMDyoYp#{Mem-BL7&z`PV!duQ}sltcXk^C#UC^saUD|y%!Z-K6}4b&p8-F`MZBhd#f+job~eCpcOC5rZ-7e2oyNr#?N!CQ9C zwf29rHH;9+_*a^IZ2Y>&6_QlnD+-+;Z;?VNiXPd3c^AVj4I~gCr(x z4Ss@kV-C+<-BBP(Z!Yqt7W|TN;I8!!k6B9&PCZ3X87|adS<4TB?G-42J(r=47DvZS|n5(Dpc5m_aro zbf>{`rb&jWIn=M|y(xIIkIT}mUC*Oj3Y!L*hp&*x3;yY%i{Yt9z99L?9d7ZAjXof0 z@DRoHU**xg=j`8uJ723qX?OmVoM`jm?Xcl0^4m5JZ<+xvbW*v9Q`gKBa)x;oiL=v4 zN33pBNZ?Sgh9?pOI6l{ROSJj03hCy<&Axq?h}m^=`&tHH81N6u7+| zDi(V6s5=#e^68-BvoIioWI2PERs#K~h~&7WAMSn#(TF%rO7hSV>6!Wz6*rHK9i{Ze zsl-QJ(iI8?%#>ynf6R$9m~Qpd+A{weK(L_OaB_DTIcYzh8$jaou-{cD>a{Q7eL_Ns z(0{Bwbl=@r^6u|)thju*C)(>dJzA{y*#&Uz##yFB);iyubPTcUv~tFBPiu(;Ar^Bg zkl7ky-1ED@tkiS%bw9MHr3HB&dF5BAmbI%IiXD#~>(hS(JA(Z|1Z;R_PmBe1Jib-f zxb1pNu*nHFJrYgxey9b)n0QB+UUd10c8Mw=UJnX*?7gnvgm>6on_)aVqq5Dm9uqH* z8hkT+iL5ivK^!-kHmpumPO16wB)B8Cb?WQq5D1;t{pt)F?7y){nGytZM$IH^*X-yaRV0or-3=#j>oq+Ozqq9ibNb6-!Ed za%rUvsAeb%iKrj>+2!0)Xw_5_1=`(+t)6gSYDZAkoA(%yJh!2II+|ev19$NEKT>Eb z$(#O!RYH(2S1B3XM6YHriW5NTgKY1zJr8vTeXca2G$K{;YjN18_czE3AU_rX1;4`_ z@~d#{HztjNB(^+uog;s8JtWV~x$b(%g_<(19kqo`$9}Pdc6L~=X`sHt1QC6}CDkYm zS-RlYnGdP@9F=wtcV5D#fnugNXXa9H$*O)p?CE|e5w@?L9s904yWh@ldw^UM`=UzfF09ks+7VD?LO{y0)PGl&GR^fjwZ6yd&m4? zhm)TlzvhVFot5xDN-RopAF3Zb6`(Uc3z|W(V+fOU@ zyGgjF!I(S?Av=^=BloE>dg~T8?1!~E6VzS=he2RS#4ao*-^ILwfPNz(<^rgDB6hLr z%{f{>F8xK^yUN+8FdrE`GQPRp+~P=G6|^&=aK6@}@HyULrnJm%7N4jv;DPH?P>Wl` zB|RoVwW*8(eY)Hp$>R9czQcDEe4Ahf-q+@fvF~?%MBW6|o_%Z7bkei&!i1i;zZ9VO zJ)9sdbFx4t73UZhlVFC%&8v*WKL7gMdm_}%mZBG2MdcE7jaE|d%|4`oM+EK83)wX`-T@(;yN=sP?~^45-z#63|5+cA@2Ekr ze=@gU${%*89(d4NYS?xt^5qqvdR6r1Mz0tS3;MM43$o=QFqAb|GAL9u{ve@IC9?tU zU5D6=R@-!bJF~dFGroOwe5h;enQ+t+_iEw8<04ByjW=9lqZnm)f!I|EucTwsE{9rI zK~C`P=0x%^4-g*LX*QRU^@T?w7H?5KD;`?P``#>S9lk`dwWnluI!mz{^zS&Lz#Bz= zyEFybrY6C|0tb&na%V+LU9|d3s>uC&Ei%NX7Hy@ zfZ5T>d{Zm}bzj}FcS)B1*$*j39=+y0a4{}pf$l}t8r=U;ghgeCV9~v|cIoSRjkkeG{?1^;9RWH^X|aBnw*y9B6nSCY@{_Ud z>wEiWVK4Q(Fjf9jxm7yeeIv!d6u-{?K_%e@iWx`zqk;3zItWgPi+ekn2b$EX-aG(W z+_ov61+bFqi#oHTF4v?_tSfh^vj}*a<-^%|9!m1SlRqZtBeK8`+Se3!Qc>Sp7 zL)zCBs(d23Xg$&uiigPp`s5*hPx1FPafaw5-h$;IZPdnEm;4J))Vo&F0fTYY-!M`n z>V7=vvF{G;T~wk4@bebZgasm-AtE7$#qOx6vm4+p(HJ0GMl|RgP1oij1EL|_?_fAx z+(9xA1&}=ZS^H`x3}lBf74U9@!8^xIO2hSe z`4+KMch#tXr+$x7BwBr0=S1frtLpakSey%Hv6M1O?Z?tq^kp99gRgTfLN{-2V2{a^ zD?6EIn=(Sfsg-=h=?r9?Is+?S%MIsT=dM1i?85Dz&+!^Jfif;@^7WuIB72bt?jfui z|I;qFjhQv`T36e&FX%)sn=5G&m{6B%SgAEXE=A4ykQqRvIH_HrUlu)^Lrb zBub0?vn$`1_nt(ncq9o2TQ!J*}8%pJzDOCS2sT%A% zp6%zfp5B1C=o?{3@Lu%{rIK#11pnR}*ZQML>eHOFpnZQ2hg6yVLb=(k!l4gR(^bZ| z+>`QGD?YoP=Zb%>pdtRRv|brTzdM|3Q0<9`?;8nWkz)`(C$K|OId?StjnZX;)m)e4 zy}#e*!^wF+pOxv}mj)WoW!^Rkda3a|fG~i^V?@ zxcmYk-C=ssar#bZx{gKO^FL#}edQ;c}nTtLshxl+*gt*K!cZn>JM{=|7Y zyxqz9a!nj%UVe6=x}xK<4MRukyby2&1_lT-%)f`LZ6Vw$;cQ7BM2Qv z92}|b9wq_T2BBv{RxMd|*3R=^xE_L8-oC_o^%qd3DHj+oS-QB^feGc*q;a~1RTkT* zaSEq1VBZh^;a%vL*yYg972byXehM@_NtVHPD81cmzu@`o+OwkuNe3v9)g47TZv}V4 z*u{+{1v{tSpxgC4-k?urA>fIP?cRXj?rh7HxuE_!fkk6S$x;AcZFVFlf(l9Q-7R~DFu+D}n>4ZIYaqZuE#xyw?Q&dATtYdrSN$`*4UMg&>5cGx}Y zd>5~MD}O`JERUO{9;PBQpn@}*k9d2X9!Z?OHISi}n$c<+{+jqF!vc%zR_(VZ{W2rQ zxarkLf!HwVUU$Yx<#w9FBEbVz9-jVxt0oy4}R|ssK)^ri)Ppval<%xqyy9i9yq%A7N1IMM>1F6jBH^GCGpS_Z; zDS;-ejez#&02wou#IsG>qhUm>JRE_yW}gg z#GbtDllxaA^CtJn`W<(=XVRKFeT-++!ITj@qkezb;;Dr=%H|W_g?~))Top;5HwENF zUw*pYPRr8~%7)P6sxsua?B>#pvZRrb78wO{-%Ki*MosonKmXNj`1eaGh~g#rss{F} zU71JZeRBhs{&~T?6CA46R~nd>c5~Kmm}xgn5tWv>QS7$8EZ?H1N*1!%APxCqJyqy* zkkHGCR#J7h+q)Q02}&muEQxD5))zKD1iDq;%Z(61c?>qW_wizTR%^uV*q5YN#pJ3# zH;JS{QtL*B4F{Yy|GtkmSdC_G9PgmA8sP1hnndcJcYTy{BjJ=3KT036oOPmJHpKl~ zkKA*pmSR(Rz9piE!iW99-HQ*nkNBb3;roNX((qTdD+YSHaUdFGlD43-s@-~ z&7O$0;ZQIEMj&Eu4DVPrm8Yzqo$lq{<{02-&=w3lNG9rI?#EqKR}WT(pe#TC;`KgJ z75G{zROP@7Rr>0xe72F6iI#fU>j`Oe`pHX@+wa7a9%rU!c!SPZbTco;LetnSQ)6Ah zw&Pyir@!VkKX@@*@1Oe07@OGKoa7YiPuqUKFiA8*$nPGdeh$_p$|g-sz>A=hXw2ft zG5zReN0nTT!T1ALhj^|+-&_$a(uw34p3C+=2|xIQolhV3tFzGSn6=oW6!>;#?JC@m zBi+x~H2v;373BfJUjDJfC55w*0(t_jqKXz18cc3nmmO~gG!@79*OwYNM^DWIE|I{t zBaUZ8Z-~3se6xfqSs*M;L-5}EaA&~iVqd`9@ zb4%*6Fbj1A2qUR}oX5t*VOfRK*IOQNv0pNo`;Ok{Z?QjI=9kaGOjX5h=A0X9JEdl2 z8rsojZCAkAa1vK7LLNLH|L-cP!_O;rtv;9ce%j;0a-V4>dAijs ziyJY#_w}5EvLaP~hUb`Dm1aWRSxA%licy5m2$;@txPbnDGWm+?<86%t>k4hf}M4)<_sc(R#<9_H}&75Zo5{8arU!DUYO-^)(qkmV-3qHdsoZQz1Oy`o^ z%Dr#gFMW82WKa2mPz;N?F+BzNpg43Daoq51{TpRbr7NYFD=Bu>XSZStGMD{!Z8ldS zo%@AjA#YW=u#a_n=-<*mQzj+j-_2+yhn-pJBP9{5jv2qZjk8wSOi?0xwi7_7WpnSG z&A_+Nm6BfdbO$=<9&r7l0Dv#P;z~;W75VFJ%!k&_^tS)EM&t>2FOT z(TNyy&ZT(nc|r~ei*?(;iwU`=yE(=BeaJ(j+H-aFvZu63Gcn|w??eWQE!oN2ax=?; z{*Q{^)0s#&vZyCZ)CtZ|u8}IqmBWCQR<16PceW@Uy^Wcb94?Q7pjoFVNeUUC2+aRS zVe8$I*IY%P#ZSAc?TT8I^&$>1OWJC{>S9V|Rj9*#7rXT`S%waAs#9$2PQS=>NCa>o z?+@_ZqQy+ea<}uc$PP;PK9#0jMaaF5sC{0GC2zBv>zCR-=tO9rfX2zZM4XU4My`F# zOSjL6R+w_J4F)NJF9g!}rzz9zXH91Ro)Sg5ApZSmEAMraVFd$sg$0y>REHsM&5Mab=FaIJ4Jn4 z%qyrE^23p<`T2=3Mmd9W-hX-Y`syA&#rI-K@hrqArbhr?@K6-SOT1U}dgs`R22met z$l~M&AvNik!-Zyc*@dqQ<&50qA4|UxesWi$b*%F?CN(!7+t}8Ghhrm=Z zzY?)WWbDj6=2W9I%*F&hA>ZB*W~|l9kK(?4oBUMcL)IMOC@ko4o2AE3sa$7ORd^kM z#sLG&<1fPj%=g_{tM3A2H(|h&UHhi5H?5pWy-v1izSh zpH+z(f>QYAjodp1Ifoh71G&>5qoEg3_*=j1XAO25m*E2UH*f*ZzHmDO3`|z^zDEoD z*|I{2XKff$;Ke(6jIo6#CNZv*(160>=RvPSohDhQR^d2>?xq2hgLjHCULYIdwAJcw~@#*h_ zl~2JfmVVdl$FS=5ss7!rULddQ6;{)qa#)U1OzJ?iW!`tB#2d%swhNacS6cJ{`LTiz zw0g2IyA~I^{I_Tm!IOKljzve)eRZ-}uWJIT-uKCG5?*i-uX+|I#K47zlLc)&etTsR ze{0f_8Iv>E;R4{vqX18Ond;_o?HiSc?ykbBvNhg+)x_y#wO*zdJ=LyNUS$&glVYLb z%WjqAtMXMdEmHmQ4GK&WJje#h=1FP6;jA+8rfs?MVmfsIXg!z=kRS3`21{>gVIaP8~N`0Y;3Pd7(0L29x|QL zdUg<6yEMl}L%4n(6&dqoEW5hz4df#|vU1w;)obV0KZTO=mo&HE!HaR%pI(?yo4tAa zjZdOIJI46%Zava@+JF5*2>smbs8hVzc#9GW?zYpxd>DPaQ_1OOVxi(z2ep$`-4 zd>HuC69Oc4CZb%*4?c(aU(}oECUJ*d{+}!W^xc0|8PIMWUt|ToJ79Bl3@A3*oXszG zi}2S~u)5cCz?U?Bk|r=7mKHnU&m$!c-F6p41Fa5QzYk>h2~@0COScaaEbp&#&RGxj z-GXBGJ4Ek~LimDJyiy%Lzg)?hFGXRT!70 zq0fQFcX%Cev_H+7RW0PpzaTpHa@Z_ohni8~$%=C!JkUAt&MqfzyUtoA>gnc7a@Jo~ z`%`Iy=(rNUxOtL{HZQ7DKy5ZbFCl1|?y%rD#4@|@AV|Q5YsRecs9Qcwfrfj-PNUGPWx?SHpN#1x=?JjPyHv+mRCk`TKr1^u(bCSZV~EQjRS} zD!N1b_}8N@R-nxv5eKcPlDxT08mCgKq7PnBU2)H{5^SbBdv*?ZOeis;<>UCvO&ETLH+6dq6WmfwAZa3=vxgbel z7%aOpkyWa-DFNP3cow7B7pmSL_n;Q2Z-LbvZ=>cg1W@-YILBhvbQ_cM1((00PYzc~ zK3QEF@D4Uk#D(DyQvVf9i4b@8GMz4YuMCS$o7usrl_kig)yLNqf zxrqU2YsbzI>xmP57E;3K;Xb^+26v#9V~9lIo8#>Oan;ruFgKD43wsP+KmZKc^%$h{ zZl`{e|L-4w5kQQ4P2fH9zkQkOJE3c-|4sSG283LMNbI1qJ%TUfe8-8#E--brI|)WW z!T0@u{sY)(O>8Q=mhllFy!WF|Iud*~2Thx^JxBAlK3{!B#BNV!@|-)B7=gRccr23&7I3|Y^I4rZM?J|hwP`-1_0n#7C#xUeToexVtM2&oX&t-480yk9&6q`YWR_~$ z<`wFp@C`iyj#WE&3WOGw6g?E6@$I9oUSkiWqg6@ns|JscXc2px8yslR)#&)jWBpU> zWm0SV`y6qiK^nUt(6CdO`>Tuf$Q-Nv5Qhg1C~7E$X5?brTVp+fa(@|*hQP7VVLXlH z#Oc&1f#lg(hxG~Y)yZen!m0Fga$ZUB!}Xp^p>wr9cK>N-tn>k$DlhL(R(!e0MhflO(dfD_ z1`DBsXB}vwbmrS08&~T4>!}T!Q$H*OV%HVz!#VF8Jyh3gIG{8x#&I3Z(iKt5lHOPU zc=O;5%VAYa7x@ci*Yb@@pkt~^jvNLC$@eJ{TPy%+4ZRTOLir5-ibR@A>Y7k{WcDq8 zFLI{I`Lq)KWD#g^big9$iENs+{%NEZ=*-142I-4W^@cf?bc+QcC&y$B8^3CyZu#TM zu?g+jExx;HDDz6rR>NjV`4p^wM(GVx^bOsp_sjN@qMHg+CL9&z(Ts}}6tO{@SE4Ul zXN$!kEmzJak^3%qGa6&vsp1`$!?(kwhTkBS7SsCfU;h1co_(i(r#KH%yU}k+LX~zB z%~=miU+y@SaQ*mP=i5hmB6-@Wa%agu6|2$Bq>4`Yc#rjTNEx`V26!h4$swY)Jhq{@CSbr$fE@$C5&r(aR(6`LJswGY*k#d%m}02$GkWNP5s?JEdIiWOt2j(sV^Dw&UhdMuDP5hIE@?5k1Y*^rO=_Y0OFWJ!EwrDQ*ZK6QNkyxN4)%xVWJm92s6#-FVZeVNvnEER% zCw*FUAsob{C5}f7`*PyVM~Pli(Kx4J5|p^b|6f-8|GKI^N@Jjj_eMuYA6a`a4>!N1 zBCs~Ym=zccb}$JFsNu4{Pi{YImt^3r<(jhCMQp}HdMWNc#h5|SQZu&jqTW+SnMZ%N z07eNN-^dr9YB}O59j_tWfm;JFG=zz)dJ{R}5SVNp8wg8I0v32*FX;|aGd+J%+?9(( zqqmUoPPCs$rXn?kDpNj(?I>Tb+j=Bj-5(>#MXX80ZpyaU_v+NW@jXz0XTBCT_h)+Y zJGFHljuTW;PUlC|gAosi6@ol(6OG30`270j+0C|IRR&e=8;!_H!C?@{6A_R zi&DRw^>*rjEKd7QW^93g@^k1=)3E1))$*U^y{DhG5a;1A6Zt}P{>i+@Sy{f}jYjLG z76-3uKXI6uU2a~GiL+vSZqejkVJrpVtVq3)^w;_7M>TP0At1iBN*eex0Q|eBKr8Ky zhS7}PI?m=ZoR7(}X2yCwhn;`z2>wc9+f^AYcC?;8skWQ`GKoEOy>}Lz=G+@)cYuWk zj1TML=P~SUL{DIz2IEOSF``UhlX?+&?^yn7y8Mgw4J@c0l6+L%?LZqS258#I|LPp- z3^!)Y*{tZ*SfrSLpFrKGxXk&7^`)-2r}IphtX0*rvxv@TBIPCY6$#kdT=M2TT!z9Q?gs5nKBa0Y z-_!oJ9hXL!e>TPvFD16X0og6pS~hhV{k5A0EX6%^v#&Qq({b6&lxm3l2xYoTHLN0G zIa;*fT`Z&j#ZdQ323*dCU$kwWfTv1 zT|t#7c+LK_UrZUoZSQj8pVMKVBkzyjGC>!0Q5;$kNlG z{)=fP507+bPx8AMShMKMQ{r=TE+T3{lD3^lfHbkE`;nNjz$u#cX3)koOIG-{PEP-% zqW>l6NzEA#9TQn0^IBUc9W(5=T%^bMlU2WguS?Cc7loGv%1K^3i7Gu8{NLw;P-kt6 z9kyv)$5`qfieQ;3Sm+>?Etzn&_g_dTvjREeb_g6}jr{i{f#cRq7I|D?gH>=8uq~=< z>HO4M&5IKH_QQZC7cL>qXRU$&x9|z+)Y`$c>bEf+X@xu44zX-8Q*~C)yE%dL8eMNs zvrPi72;EP7D2L!j5VeAc$sn9&X-thsncAgF*{_HBKl|0-`G^x6UwZ|ln%9f zQxtL?#y;>Qc(9H6E94CS^@4JFC#J=Zz=!_Qk{|Il-_sxu*h&qWrlJ-ZnKF;JYGCyK zS+W1t&JDCqkP^v1=ck(2BoR|G5PoosZQ@Lvy-RkOQv4UO$1FClk+5q}yHT)%!a0H! zp-pEh+l9hpJVw3f0mm$9Yd0qzR2)B6Ic|?{gO5$tALBZGKKry6U-j#-?9&hS!-}4qi>AkvNW5Ca(%S%4L7;9$KEHUqrN$mq%%~auHy7bUgztt!z!^k zw&+Qn1=|bAS4;_kqtP1ju8a^F(X1qy7xz`hl#jQYmC)~8CVH(NDGOm}o4tIuv~D|ym64tNvx0u-()O+VOqf zY6P}ySZ#8Ke0fTdX`5?Tt@budz(%!%Oawh^(EF-oq=C=Bp?~QOd-zK4cSPP`x1QVi z57$s67ptgAjRVTwr^loOwMu-n3dUk*RxiLXe0(W(#-ZRJPY*np!m2`U4Z8PntJ84T zd5y~J7l@}FMIORe{gOc#=nOMRZzvkO73tKtZJ4*uz`g=pO-Xpub5z+xICRw8-XulF z_A!saAX{BE=8hf+y2mSXyW9k3+o306x|n{_s7rROok7pPb9cJcxo>z1+!bcvRpXGW zG$ntuG3Dym%a)6%xWE{aNf@Exv63yu=r79T+;mK_d8uL$>6Hv9EZCCGlrn{MVlqWA zh8hlMRc8pUKI#NTz8D|w)n?y8DEaY5H}%SIpn@-ccm~9cR~ff$n_oV6wG8mzHeNppWKD)XNf#A z=33KFHdbt$WQ6&LY(MPEcpa7S|6U#>gnn5|`ImQc*Mm)>eRV9NV{`)`Tc1h9En@tf zKDwP3g#JiQhqtYpYr-v;)-n}*B2X*HL%~|Pr z#Z4bx@L<3VbnmQhiv5)SnXa|Y{wt@T#kz)_e>8mX+m4~IX}TMBEs6o!nGYA0CQ@Bn zGD7j_oSIf66c0bZ>p)WVVi{OxXazg(A&OsCK-Sw|RhLop#j`><1w~AkfQ6Ii;h3^H zbh-;0D&;@9o_;?4jwCs&Lj66xnhz4(F2G`)_nSYKfiNkYOy6U5^{;iIS0k7NG{nc8 z{VF`309Uo#=SIAAR)qv|%d2`s9?_BXtdX5D%o=Y}a=m&Zvo)rr3(_?@EBz(=Y zv?qIc7CJKhCbFoLL)U5Nie!`vVB9MB6To>h9ABHaJ^E;OkU3t&LJfPki%YU*ht5?H zD=rmHYf6Jd9wa($+kEwckT7+nX~^LGnB1fMqxkD?5>8&R*PG9s?*J4DR;(n6w1QLu zR)We*4Cpgr+vgXlW?>~yK&qnt?>7o1jT}#)0Sww0Nk%OfQMX^i8ap(?*q_1nd4`iK zH9~o@{oAfP6yED^rQ@pB*^Zn0LL9Ni5{AKMPIx#*wyV2_Q7-r5KaeNOedhtoeD+kt zuit$??M?C&g7xAtdq$H;od$dkY;FZb)CGNNa?&Z9gQH)J9&?udWuI-`$OKKMzwDXH)(wbK zEKja@u0F*BTxx`1*IGXrYE33ey*!Il0{H2)=W2hpL61|of7hT-H5rFwK6`F?_)2v# zO$E=XdM%?z)HAH2X}Nr!x#HbPW3r63;Z2?0!+b@>xYU+e+;|~p_w08!P4`gG<)DrG zT|HF5zl&YCz;*R0OvTBljr)JmM`-@&e}D<2MP$OH(j{%_tNh#A*RE>tfr{}bh1Z7n z?`~WI;s6fOw2+)#va>Jid4LeFT$?)IZ!)V_G;Nnd3#COWMy<=OC@epA9oJ5Ru^N%@ z^s5>sP#KYKu#m$XlaJ1MiO)uK+ZEg&86abQ?tfwRC7L!lORB9}QcFyGy2>!wz1igJCdkP=uWiFR*$?hm2ps5^7Ic_f-svWY1?}tQ;;2+Jbhb&fw--ny-z?wc z(9xfPs_^fxzCGR4P<7NaMY{!RZ*Q@v2M&+^oFG@`&Ro&fTKlQ>%O}84xwo69gikgS zPgYHni-PfoGQy56&vNt7jEiY*#_ZgzTIb1OwbH-=sTsXgeDMwvxo!R!LWzQ)mi~O? zb0H!*O$@3wQ5$(gd8af+-cfR+WbfQA(uM!n=Ak9whf#Hlq)hrAR&C=CCI0^XH)b1E zhU$FC^&7L7aX+AkjHh}22lT+M>P$@{R-e95yc3l-@;PX+;x4{v-*GZr@w zZa%$Szj`nH@`BHUKf_V-eQi;q+if0H=Hi~zWi27OUyU?YKOoAjrOG`I zg=71%xDqZ@IB}WSVyq|9K4w9XBm~Z~v2(M;qIY;-Yh*X{cSnnn4%aVXY z`-*U3jsK|2uV@az_j^m8VfzcNr4pYTc2$7d)52?`g@#QDCe)JI+3Xfk>5L!mO-xK% zO<4{``M@68L}LV97iJqOHwTySuqk*;f1tUNPt#dSyciB*>S6XBx!;`rEuXm+xRk-^ zgc-pYxHrMR(??nP$)f6#86qJdqTA(%*URQAmwnxVe0=8{*7tr3%o1>j^Da9YfL+D|UKFnpaD!rJI~Q|8ycJE=vac zE}7m5isc`8_8TvbXh2dxwO#fY%7T&fnJYo7{kEvMZ&-(1=5TY6-!^R5442HHsrKT! z_S7sS5RZsN?|NGcRCJo!CTrX9G(YP=h&rlNGcf3bUgHtX^kJnJM@6j|lMEy8{*-6U zSg0vaE?YS(yz?di9i_-v4bqIi4I80 z`kW4C`vaQCknGSenL>ofTPW zfl%M~pP|c;X0-{q))|;`6p01fKcGO1*_!giv)eusr1r_W!OG!}8Qw4lnpy6SsJD;b z>n<>-G{zQ3XRi5mbMIN)13-Aoi>}x&{Dr1AeZJqVwjdnONQApSMPL&`Ke@_IWDQ`f zyXLvb?#=6(w3D+v?K-`jKAs_vkS9BwS3l1c5w(4iYdq*37=&su4&%7S5~x-)ZFOKa zFiY$VRsMcnMZa3i+o4%he1P@O^tw3fLrhXwBdczH3J~M!UYBiuxd|PE1>|OP57Nql zcHF;5%S>DD?^hznr4OCQq?&3TUtS`v6els|7YespYrYeiB*xh#ombZU)V%lf4_4mV z2Pp*xD?g%u!*X>59fFS^yFw7#PhCC&hhTrETjgI!zI;wIw^U9lf%D?^V9(+?HKloH z+N(pMZ6UQRff7i|`4EAJj1YkDN86u2Z_mXGDlg1lmWvtzuMWaRpg$x%vWuK^5f=!; z06&ExyD)9$y07Fkm87;z9a zH$`JIQMt)UW%zV@@_T_(7CYpkFb2e&_5M;ob;C&>26UFv<>%D;3{h z>+=GuD4dzBhf^nnrZD<0d4=33&bJ+kcpPdvDH$c7cCAGdFGaapl>|mJe1sg)2S>i3 zL1N%>Jz~M>T&%sA!f=BJahQI_*7nY$B?JXed%}S9_(_?Q=1rfg7qiW0n>*WS4(UP; z!Z8H3Y*&elMm@-oHMk!!FyP@zorAY4?G~+M$YW)jLbp!194NjwlAOSZH`ltE*T*LK!S(YIq5s>fIq^)~%0=CMZS5(1;kd%I$p90F z=IXTQ-|^Nce(CNHU-xeemdlMY+k^=MgsJ!~Z^OuN1D}2f#=ufT8^#@w-Qo44w(d52 z($XhopOjMv%YXOJO%Le-x#vC_j8R<)+Rywma@`g(*w$5{7+QY1*_X8@?9;Pp&_Ri| zi~RO$65gmha9EAMaYg$*w%dwg#SV}1&+5Lko0^6AtzK}Ont~qb>hhuyvNs7#aMBk53cy8o;S}k#KXTaKnI-ORLnoAl zoS}wNL7k`?uj5{_M?!d0-)6W$lr*xd<9)2J$k+5E7D9T-K|!Y#t@!odTj&vu@3?=q zBc28A?*8UsH4L3!5k51gU9*;BP^DkbX1%{r(k{OGu`h;cFXJ&sTO$i|`PB!|-a!OA?HUn6h?N}}AF@3(tMROuJbfl9eeYbz{;&4> zGwj#c#SVaNV-%ADN7>n`ua^ta5qB<%N*bRC4}}@-Ea;K(Lv7x zw^TJCA1|Bj-NlZ2c$jST_&7}ZyFQwJYP}|$nXEQ-cOHB}yZo~mTxsaNNBJyF2v=v% zEsMJ>FM9ZXyq_W_@3DtShHqSIUZb9n`m*d5w^PEyEy6fJkEzTbapx;@)+cPKsP1{Q zJ+=Co%R;%;4)R=upPFHm+4ODV^)&eUG zggD(Q3>u1B*+ZKu$vKatV6~RG8PzEa5Dv z3_j)a_t77RRkDN}5_esn5QMmci}4 z@|#a<9$IZ5wS2PH-jOr5pgF>dpCUMOnP`qwkJ7INMgzXUg=#p&6b6wN#9+7nEZQ?Si59_h4vj``YM=Kj5j z#~z*bqkBVExWH>tRPoUmEXWIb71`BHB;;@a#nZnu<-}Vb?Z9D-bCXSv(1$ za2hU8+{T4&_GrU%?0g!KX}7;kT3^BnBV3huX#HAVoNxU`1Oib%f;*#wP#~vPLx}I2 z!RV`t_Z*OX`e#7Sb=IcanL zNvV+2`8rfGRQxBt#JHiR)+O>;8^w{~+;C(=xI=+!Zi#N$jH)R;P$Rz?ajE4%s*(&V zUN71~)FsN&NQM2_xSU?qAM(VEJG<1m;Q@X&~9kj z5WKbg_fCI6j(9`c9`UK<*@7vcmp5JpYS2I`8e9#gra!kzlr=F~VG;f_p5LCLm-U&d zR(VuwG^9bz-rc4tYVCp02x^ZtH)pA=jFCg|F% z&a&T$&qQ~|p;U9*i`=`ncYg~129D?Znfhd$N!M6gn{eZrfZYqAqOywO zA2WP$!VPYJxhkXk;`<5YktJt>Sj5ww=&F5v>S4Lo(l&OYtF?;A7v_Sn4^L&U4Iv&L zD=M-!EcwVLU_aB}$_k4ipLABaPus`mz+%LF#iPQ)uttDq5{4gL&fbre|LhH}N=oZz z1%lc!ppZLpyJcq|Rd*~_+~O#G{XECM&uIXVSyn?s{vpac4x7+q_SVU{agN1h1t3T4-9GD3NWEBqkIhv4 zk%}8X$U$D|<@W=1Nex}H$26rVaun(wSZ|cN*pM-AIRYj)u`AM~n>yzj;5;`+45`dEe*#?fhfg_p?8?eXldF<2&Meuf^UR$n?V}^0)hx-bEnOEA#<0eeXh>++} zYY{28OLP+!NV>J4Ga?*X(6~L6nE7(fz^|s>pE*d>)sEi5lygd}*L`MrBMMR+KR0w7 zurUdEVFOrf^Demg!P~2vDfq56I-Qg^jhNUM-wbFi(bxc~92O@HW=f#(f-@r}IEr>OgKg`>h z8^7(#R-TQxJwUY9_WJA6owlK_joYJP{a6XbcL<4_FQmhC&hjkFGB3Zz3UCB66J{6} zQG4iPcwc|M$9Y2FoOoen+V;{~`hU~B>QsK!365Q?2dQDQXrHsE2|$_0-n|=kI^VkZ zF3te)wS@M9?G=Cf9YS7PFd8z4TJ82W)&OlfjkZhCi_=GNo++L@A$@mZ4 z20k2abeDe$+RLN0**QlOe1{xw;&Mu)s^q}>@?ni{JvnjJ1hU@jY8_G+VerRu8ECmRE@Zjdk$uJ z1sqk%mfmPczhUBc2Fc$iNmfj_Gl-Jc{Sdqs;`J`?No`B z=``-kANKVk&pnenrNkUJ9$sogQ=d2s@1&P-+4XL*9ruzulu>O^vCrT;5wKiSK#mr* zwb{?aDC=zJy}(xzo+CB+ zsRH%VHoNlTCS%Vraei>5sW0PTTZGFJc@O!g1p>*d(iY;oh0L5M|E@L z#C(i~w~E)x?m%v$;SIol;{pO zv!b901`vcwOcy5~A~w^%QTkS&DvDP1ndLeYp-{aB#(Kc}z_{{uBtD~)i1JQ(3-?O` zxwPDDhI)uT zBFG?;eIDwB=7KA`0b%zr291#}tSkzMoBF_~462VKaAE-KML}*HRAjOtx59dN5+IWA z8<9jKz!j+NuU3s#n=Jd{Sqx}R%KHY7rJwds>AyC|YMj8jQbC7xI^iQ}mmi>k+%^uG z3DOE|@o%zUn12KOxK3~p_Pyx^x51Z)}oYSTwX42y1>rH zSSr|_yyn0st2L0 z!hgQ00np=%g|%p)j~bWiot!xn?k_Grw=#@yz^{nYuGp7fm-zgt5>HzZ zr!nd?V;?)e@VH$kpT^<}E`3gZslXxcyyoAX0HtLgi7~D|tPda#aDXp24EIHe9sS~;O zd0K{zQuI+a(KS!UP09I-RFr9|puK_{`ef-$%}MmhOvPmdz`fQPxo7sfu9?I%JQ(rL z-eM#*;R&@zDiO!cT=QA|JiM6Hpx2`k6w(=CC7 zi)Xj&I}Plou8tbmQ*OKC0f)ACOF82S>bJ|SKZSAej`?JRuVisthjDY%G9|_G4_Gr> zM^nn6`5^HGJQ}a>LEmkdh{zVP*NIJsT<4mE3Qe0XgT4^H|BM;?Im^zl(}WD ztF+aW>8W_AoymGEU2?3r`75ZmZSnMm`nr&H#Ip!V?}XQq88m)hNjPGFM{9U5)I>%c zP>E1Ry*Vi=EQdD#|d$ofV}Fi9la@45lLFN_8hqi>YmF2Oo^ zUbOobhlu*DuCK(ZI3~`!S(bTxzVH^u?IKr*T9jfQod~rDUA-!NMc0m6Fv?Uo+f?K_ z(5LCN&l?KXv#ZWfBuaM%D854!tYf$u?UO`QqJPX3BMR=qH9-6A;Mvi3FeyLZ|! zCl5dUwe$$TKiqjEjNCFuF$9~$)KcKG1HQsKC$nj1n}MTd&t4#T^pm^gfTdY|Z^2e^ z-qXSU8sYjJzBmJMU-@pfF72j<@}>widxpGQT+KJnL>=4~r32M?KMY?jAj@eFGk9$PVY)3INrZ_+z)*SBroe#V{c=on^m zbziWyHEWBiY@0pH%S3A!S^|*cbMbiBPhha2+Z;eU9`JlzV|xKg8_ef^r??matC%n%*KuhxxC)M?U$ewLA5#?9E!9dAeDoTfu+x^N@jDwvLSqf<-aIhv-5@hu_*(sZ(Y^7Xt!3`pNJzR|=bg=gwjVQz}lMYrLe!n>WC;}dR z#(nw{_yB0gHA?NN49jprClL!BBiBLG%(EsSOY4{@I4@_c-g~}+{Q63g4w>Uk3|~u7 zmlRvHf)Lan#1aaUe^B}^w2}g@R#SYa@&L_bs$U&c>JG8gGV+?}TB3d@vWzI}*j5-= zgvH?lH{`tAuhK#HUy1}Rtb5u^lVB!jzq41Ncj}zZJVPr0H}&DN#J;+jm)$%O!)WVu zTM-{xqSCre#Cs2Ir-a|PucKumn8coZ@b5O9Ol!rG@;1|`20P)X<}BUs)^!h}xq_|w z!^>Nx<@Ii+_mOArQSE)Sv{?wihAVBy0Dbt=Y50M~8TAnFHlL7q%H|<=>k0BJHc7f< zV=EB81e{XrtECb?0Unw;+39(<6!w!{8|qP^sni5Zbo%0`^D)~M_10BI07!JvB&2(< ze(hIo(<&NTTeSj?NwHgJF~$;f5m z0?bw*)jaT9sUvz=_msROaS2+m8so$T}dNiQy6g_qsCl?saQ!A!EEjsCUPO>t&vwD`Sm*F2ZqzKUB!3?W_(%a>*?^=bLZ zS?c1a>1=H#uD^0y6R{I^Gi`-DPJ-SF#4s7Dl_!Tf$|FRfscAOeO}dFIg6ix5#O@b! zxjw3HWmeEI-sqhWW#~Ht*F3wZ86Ergep`~JH%`9P$-}2hGKHk(Uj%%RmC{_-=$~pd zm-rmIHpCIK5QQcGqhJ>xqH9|wp!o|0zhhf;U)8D!z(*E)QiBDda}^HtqoTH{5eT6d z6iFWPUtFY~N!}19G~KuExGDH<9N(fH-puDqjV_FHM_&rP4|&)4D;!x1{8dgh7c<>) zN0xup{{0f6b&y%X+pyy0+#e1{w4@{l8BrO@RrcepkdLA@q#L%goP$8G4^rAz`{>%vMoZ;5O+ayOt0UrA1}h6@ zZyLo^5)WfYR3(W+p3F65e3&ol>Ugs>e!Cu$sk(ykJOq!T`SzO@{*WZRNj=xX2i&ri zgaC!#0?nAxJ#f}i4_nW6BIkvtA_XjSW947o^zw|_m=2I_ojo?XQgu7+?bnm;oSkU>eM!-QXxJ$1$eL(*)5Kvx7K_2)J5x{Vvy zRSNbVwgPV-%TPZJ=I2NgM;wE-)NfC zwH@VYJ7$wm(-!Md!T4f4X|}oXwiPsK5~n?xWc#^vDW&awuP%Rg=poAjmVTBj&?V0= zm}c%sbZva`^k6g5hF7jC>=xsE@Aj=~W$bbFn?`9sbLw_qNiqTA2?iB8FmnNaOjlX) z?0U@U^W9MNa z>a0p!@D1^0Q%>}Pm>yaMiOSCC+tZ3;NsAp^Z*s#aG<#^(ZbloOtsst|`AR-87FFwF zI*CtOKHF>F#i>q~ugc#nK1}qziEfng`wNqZq6w%pvJFe3%|CL zF7avSiQ&h9BSV)7M~fQ0LA%zwA-7djV>1^PdX};GXFFy|`NhW&ky8dB4@^nkN4((l z_-3fe-^4jc?rcxp!Bj&CnQMCj?@+IbK{*sAsGRuTopeKL1m^U)o_zUXSMVcRZIo$1 zcsvFM}G)^SD)F-1CL4w#sLRpzxjxQG-tm$)B6UyrMhrrXx zMgq~jxy=%h?OiQuRiH?s#nJg(Q5$t&FDw-ujoK^ay9z(N>a93BZauqU;>~0CeLo>7 zZZ8Llyl#x6U%#Nk^WE0&6_B&Pu^?cX{W3@_NeK|ia(DqcFi`KX!yfZ3&D=oA1tujpgBQEO{jRSKDjfr{mw#Rw=MwA4|Y zdL3iUi73VE*gfGRD?LMOhecQPrj`gy<9<`Vg6BXZ{ga;L1*IXUZvNy=+J55D-Dym6 zwZx@xyGf+gRL5OG?2B1Fj*C6agtMGsuj_%` zaQy5M$9@B2qw!Vh5v}Jbu5$()O_UL;<}sBs*#1KIJ5)~1h+tis zSuZjVf4v}lZac%9Tdk+jDzl#1hiXW8*W7dWHvcj&vO2@Jr?u;#Y6o{u^jmSh>;MfR z*)Wqp=odv=ge-r?vi1z8!PKGyutC;GQ&z0QDD5}wv$mSJ`Lbl9i0Z6ssa zki$J&`J2&g0xlTJzxsg%mt|z=C!b}nu#Lemz23chl;z5D(r+CDpuq{2G-a(Y_RE}` z!&tQZgvmj=I!0Hyg6CIT-q5oT%ee0EPUX)cyJ-X24 zv^T=hW(=i^+)Tpd523-LPsT*w9`1@3>0eoam=MJ`jEGntB}sO9#*hC?6e?JaX*iIA z&CnT{D1I@9{W!+63Ulyqyi>oXyC^ORnOQ%q{!xJ8XE&qg05Z;t8f3)9tB4`LjN8db zi*HRKwKtldv|I?;x_ja9EH@|S*6YEq9%UX$cQor2P^7psLaUn1R1?#-q6#@RabU93 z&E24GZ-BLTQ%0u}N(6?cJpriqE? zlC89sVjf=KEdN&?TU^w^pyHL>T6FNszpb@MV)G!Cv;ffa_4A;F+ageI!drl9b>986Hp@uy5rSR}03cd}P9Cxwh0>03k3XcSzCy)|7oaWlpr{>^t(NDj0vU2q)4e66O zPaGBbrqF8pdW46daVPn2J^b}77^dt65_(*opb8^CKk1Jm^8ReAnWe2TcL{CqHmLtK z(0yL}v}L~@HIAZj9a!L5)hZ-#4Ca09ffpvXEFIv+FCtDyX~59Y*t_eqUz9_VR+kbJ zO)GY}$=%DcDUDVYA=_Xih?fnfPAO}1gUA9PqyRiICU-K{JP;b0X%4(+!hyr#fBN)8 z|H%+4m-ahHQ3 z4oj>YT}q%1aVXPnA^J+J#`ZO>LI~)b>@e}a;jjM!V>!og0%`8+ov(*9)UWo1O#8_F z?(d01L$Tfc{b-%mmJ5(xz;b?=G4X@N%hfwy4ltoYOnX%KB{$7!%HI zpS!6GDyZ$t?GLOpps9#LKGVw+o-63qgGKkPXSkE50H+|^LAycKmU}OYwtxj+#V}@q zDdgdDzh1A=9n$9#UA!$uIvzXRIN3;x9h!?puB!u4GQ`A7gM?TNXyp`h@`$`=;aJ_Q z3Qyh}G*atk5I>@k1Zi%D{23Rn7$$^-POc-RLPEY}jZed7A(iBU`QH4QC>2Qwl%dJxTad#GXZ@xZm0X zDwbop2(M?cTU`S0CZNN|en9S^Uu-ezSBaJx-_zSJW=jtsfIDD>c7~DnVbn`O`ar>X z#smF%yZO&4ZdEw^rT z5CA`H(WviBEqVXGts>u&tQ z@kh{AG98MyI;V?!7K6L<%}dJaUsc;)J&qso7vf`#r>Pj4$LQ zM>*eOD4lDFR4phq)G-q}KZ6&z^~m50)du_YN1|~i^31}nK5W;Y8XYgWAICX&-uK|$ zvt}ZOD{bhtCSLI&Lt`sTV@|r{K2W=hhrdEY-2c^k`Iqniqbnn2iy3L`RIsvA*QdxV zV;m%X@7;R+B5mp@d4)&^Vq{m%+xh*9wAX%-U+x>#>!TK}demj68lFaE6bZ{spW#W2 zQh{F&k@v^$5CYwmtlg8F%T+%Q3CxA3I_dFCd9L$PL4O)R{&_g}&qcB3uZDp26z25N znD>Lc)I_Ztz_OAiP}k=H#@U1-xbYv)V{lj^HoDM@>7=l{ZdMd*Q&M4aWUo^eG_dzw z)ZW%sMHDx3;`NR5F?0KccqmJg@8h=mm)`999zD|m|M4ewW=s84;9Zwz7bmd~3Yh&B z&WlB=TTU zXsO8u4m6qEBF%xd!8FbO(*IyqZ%jZI3#Y8nW7jwPI&Ai?n)U8%dqm&`uHn5C)2?S3 z$?aF}PPp{W&soRj+`X@htw7^M|Re$04e;= zxVGMn!E9*c9*n)}T~Rk{X?=q56xc^P#?T5Lzm>sP*xf%Z(oQodb8FK`O}z`d zSiKbDnO}0E`9cV~+~UrFR_4#4%$)Il+^~Yt`>SmC! z`byln*#F6fyrgJV_Z@WW82_{f3l-2r18Z%qXP6=GUtCFq=Kzpm+iriq^VowL%Z7rg<+IMEg~oO3-u`@^+ldZuuF8JYvz7oKH~WNoTJ~;< zN@4%tiS*6R3|8b>xf7)v0wUqDyYh4%n#!V@fM*|F_+;>uO?IJF@sSD?1|jM&&lGCp&{4 zU5;}e!uT4tC+G(NgWI;W44R?T`f2YKJg_>Y(n3b7d^j@gHxtCil-bVZfoFvdQ4xo{ z_q5b9Yq0^Wd>->Of!Gh6Q)8Z9s$!Yh(7&F|7hE-$%6GUX-y}wwWco##rFl6y4Yo#} zP#hEpzO4+~hV00ZL^;eEUfH6!a&MX>>C=-Enqz^<6HFt@moluC@?>Dmjsk&C&_hgO z)*ox%d$t5<7JVo2>g(>xe!yRkg?X6j@wm77H%_@TEoahXcILD`mF&VsSSQv>{xMzU z5Mb3K!1~mq`+MqW3wbw5k77g7{bl3miy?W6K#E_RIy2R;xOIxPHJeT*kXFnz-0SE+ ztX4(}sfD(zL>DE$S3pijlvF4&aj+3yV=M>n8jEJ|Q|XOP?=TYK?S=L^cjEBFG#|)T zpd8hHe7q3x;-wO(i9D`Q(UT!Qr9alkr^FW2D^7gZz0dc|%!HaHh8q5+vz#)Wt5sbR z$Qsk*nX)GWo!Rb5@G=~s8$tXII*>`O%RLS1n9Us4aUTRQ#mP|=?U9;uhBC#D-@qHZ zsiYNh(m_fry9C6Wq&)EEb0XLw@_q$N?}hD-M*Q8|tSjtw_)$a?qJ1bRW>%4#U`t{! zWK$NV@fW1?=T>jR-mD~`_g_qak3|D9%zvRk|NNL4TWrj;UxD9y!l!3-@;?*e$3NbC zxOe}b=KoZg;CEVx5D{MejT6*FE>6T^z`i6-ZXDZrL|B!w=LxHqF=yY;G@R#kJ9|ye zi)Hq-7y-Us=Rc=B!>qne&^|al06WJ!es}8YPEqZMR0j<$590)qhSHxax4lnRGtC0R za%e8PLZjBfxU3YpJ9(ab_&dFgfvZ2oBf%~+!%FPWjQ*^cXNUk*GB0ML7F9nc3}uEG z3f$7|Hq54j<(836S{^y>4hgUG;$hESw)01@XNNLCKK#RR^{_9dP6YJ$5`-r1<5bgg z?}V*rl<@ykT={cdv;y_I`O2&9V}MYN`g}i#?NXj)^ZQ4gA-o! zt}Wy=3akku&7i0gvzhLls|PLKyq~{@?8%*I0WnxeDT5``nEMNyej=HW8)1uK zKKpDgy<})>r07etbW>m`5HTR)C9V8FcoP4L5H3&e6R9?br|dtzPyes0oO3wFr5Ao4 zXPpm1Lk3ME9LXSDD>O@m(7t8fCG=oW7>=JT4Xd9==4^8`4PrXah&b4kHB~sP_l(o! z^~eMNn4OF4J6@(KoKQzxL;` z2|p@W0ZcNIFvCx>v?zH4{(ql`>kk#&0Ofr5;LH#l{&h3Po<4@~Hhea64}4slH;R-)k~ zRJhv4VNL}0aSfKV=#GOM(FVio2^sj6I0!#7jOaU(Pkm@_btg8s3K%(+v^|(2A5e>q zc$q9|3(bzYkjHn1)+j3!y~+q|hbgA|rfI2#))7TSZ#Rw|3uGXYVcndQHI)bLdxX*? zTZ+A+uQ{-%j|M2h9j`3gGF}g$;HOhlu=BP@k@UhPlie=MEE?mWo!(!6oChNAJwUU&R;!cqUNeAaIpd--S zY;y&6S;tX4&>Xxqwl(V-0S%5-fhi5JUi;dS_b7d|w^w867E_K@i-qr!P=2z_iL~8b z(Y88v-Q#gB1O7dl{EggX>`(YSXy8=x;As+QvFCBAQftsqj5fDVt)!FZnta73W4|m? z8g2B+*n8M}ipu~e&-Y131ZtR$Fs!-Q&&1AA&nLT;sHHn`FmTm}2Ps7rwP{{Stz|Rn4lVU|~bZn0UJ`~i|a_(7XR%h^>`(#~kAfDJ0j;V_<{ApFRKdY5&yxUQRqZ7K1 z#4bYpAAbc(auOvC57DP}@f$~F)xfbCQ6cE? z-&@CkPqb~1A^b6|OWnV$eAX*28g@4cB;I`U6MKn@oe5>-u3S4dRJsWx$#O+l+Ar7w z&K2Tq4DWwn;pUSB zf9zu$VgH}!VSnE@q10NA|CYplhThAN=iQ8_`x4k6UD)j)O>7>I6ZRmhTOvM?^?o$f zqGskQ;WT5f!>jt*{$1*iflXh~Q(TW%j`(usgF!-XuJwO>!{F=fk3sOdM-E0x-|<

zx~!**ZxsKp+{O7ELx6zg@q+&0-?#gnu&{f2u{rB5+)n-W=dP!FfjU zRhh!w8sIq{)zeNQo{slbWA({^+Ox2#Zro$`bcgjV0uZ6op?PeED=ZWm-nj}5GW_xeqbjiH;*kW= z96lJ|)57Tg`uZ;97-h1XfhDx|Pizf`ObEySz4Um;BtfX)HY>qIBBR;Z|E2!iXMQDG z?K3(^3HyL38hY?LVnx$yJNeuU@p>`}Lkch>yJ^3MI0@m2@dXi5^qzL#8%Y|cTp1PI z6M0IEi$Yx0n)%3l9OpUvvMb{oLmP`ZV9EX0T?tC(WJAc}J0l#_VU)Dr^xF;Y8vEm$ zwyScv1|4>vZqvZjf!sU0Sm*xG#9c+b^9-mmdcV6V4WpCzPd4rbhZYYKnC^1ke| zb;S(UnEXOwvC1$+L4P1g?6P<##;WeLU_^1&HFgskuku6rVy9R!fxS{Pj5o*)+ZMl5uAJ1Z@DXr+hVzIRR@xBVUT>#|O@} zmMS7)T>U1W^VM&gbe;k-ose+16&Ap1|LY%M0Bey)Xf&_tRP@^=8=v*D)Nv%V_@>Ec z8@5v&8Jf5SR5D#p#B5dG3=q4M38A~AZ<)sZ@I-`J{r|J7?f}S|o{wZmJlA{ZhqAny KT)B+#*Z&8&^A!vL diff --git a/docs/static/img/tooling/profiler/gates-flamegraph-optimized.png b/docs/static/img/tooling/profiler/gates-flamegraph-optimized.png index ea445d1950fcb1a60ffb3b60d6e02ba4ca9c501f..f52a498d8eee316abd01f61800a980e5d1834a5d 100644 GIT binary patch literal 76482 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

QpT9itdIf~ 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 literal 34504 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 Date: Thu, 13 Mar 2025 00:42:33 +0800 Subject: [PATCH 18/28] Grammar and readability improvements Co-authored-by: Maxim Vezenov --- docs/docs/tooling/profiler.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index e56c0220319..eea4485e194 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -42,7 +42,7 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { } ``` -Change directory into the project and compile the program using `nargo compile`. We are ready then to try the profiler out. +Change into the project directory and compile the program using `nargo compile`. We are now ready to try out the profiler. #### Flamegraphing @@ -52,7 +52,7 @@ Let's take a granular look at our program's ACIR opcode footprint using the prof noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ ``` -The command will generate a flamegraph in your _target_ folder that maps the number of ACIR opcodes and their corresponding locations in your program source code. +The command generates a flamegraph in your _target_ folder that maps the number of ACIR opcodes to their corresponding locations in your program's source code. Opening the flamegraph in a web browser will provide a more interactive experience, allowing you to click into different regions of the graph and examine them. @@ -60,9 +60,9 @@ Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: ![ACIR Flamegraph Unoptimized](@site/static/img/tooling/profiler/acir-flamegraph-unoptimized.png) -The demonstrative project consists of 387 ACIR opcodes in total, which from the flamegraph we can see that the majority of them comes from the write to `array[i]`. +The demonstrative project consists of 387 ACIR opcodes in total. From the flamegraph, we can see that the majority come from the write to `array[i]`. -Knowing the insight on our program's bottleneck, let's optimize it. +With insight into our program's bottleneck, let's optimize it. #### Optimizing array writes with reads @@ -93,7 +93,7 @@ unconstrained fn zero_out_array(ptr: u32, mut array: [u32; 32]) -> [u32; 32] { } ``` -Instead of writing our array in a fully constrained manner, we first write our array inside an unconstrained function and then assert every value in the array returned from the unconstrained function in a constrained manner. +Instead of writing our array in a fully constrained context, we first write our array inside an unconstrained function. Then, we assert every value in the array returned from the unconstrained function in a constrained context. This brings the ACIR opcodes count of our program down to a total of 284 opcodes: @@ -111,7 +111,7 @@ Check "Matched" in the bottom right corner to learn the percentage out of total If you try searching for `memory::op` before and after the optimization, you will find that the search will no longer have matches after the optimization. -This comes from the optimization removing the use of a dynamic array (i.e. an array with a dynamic index, that is its values rely on witness inputs). After the optimized rewrite into reading two arrays from known constant indices, simple arithmetic operations replaces the original memory operations. +This comes from the optimization removing the use of a dynamic array (i.e. an array with a dynamic index, that is its values rely on witness inputs). After the optimization, the program reads from two arrays with known constant indices, replacing the original memory operations with simple arithmetic operations. ::: @@ -162,7 +162,7 @@ For example, we can find a 13.9% match `new_array` in the flamegraph above. In contrast, if we profile the pre-optimization demonstrative project: ![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) -You will notice that it does not consist any `new_array`, and executes a total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). +You will notice that it does not contain `new_array` and executes a total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. From 87555a9967fe94fe2f858018d036e4306e018f3e Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:38:25 -0400 Subject: [PATCH 19/28] Add "Flamegraphing" to cspell dictionary --- cspell.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cspell.json b/cspell.json index ece6836ac8d..e880b7e5b02 100644 --- a/cspell.json +++ b/cspell.json @@ -95,6 +95,7 @@ "envrc", "EXPONENTIATE", "Flamegraph", + "Flamegraphing", "flamegraphs", "flate", "fmtstr", From dd04e299b97ffaf6b1a1a67cb697ef1dac5877db Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:46:53 -0400 Subject: [PATCH 20/28] Reorder to ACIR > Backend Gates > Brillig --- docs/docs/tooling/profiler.md | 110 +++++++++++++++++----------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index eea4485e194..51c19c8df7b 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -115,61 +115,6 @@ This comes from the optimization removing the use of a dynamic array (i.e. an ar ::: -### Profiling execution traces (unconstrained) - -The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying and optimizing execution bottlenecks of Noir programs. - -The profiler supports profiling fully unconstrained Noir programs at this moment. - -#### Updating the demonstrative project - -Let's turn our demonstrative program into an unconstrained program by adding an `unconstrained` modifier to the main function: - -```rust -unconstrained fn main(...){...} -``` - -Since we are profiling the execution trace, we will also need to provide a set of inputs to execute the program with. - -Run `nargo check` to generate a _Prover.toml_ file, which you can fill it in with: - -```toml -ptr = 1 -array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -``` - -#### Flamegraphing - -Let's take a granular look at our program's unconstrained execution trace footprint using the profiler, running: - -```sh -noir-profiler execution-opcodes --artifact-path ./target/program.json --prover-toml-path Prover.toml --output ./target -``` - -This is similar to the `opcodes` command, except it additionally takes in the _Prover.toml_ file to profile execution with a specific set of inputs. - -Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: -![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) - -Note that unconstrained Noir functions compile down to Brillig opcodes, which is what the counts in this flamegraph stand for, rather than constrained ACIR opcodes like in the previous section. - -:::tip - -Optimizing constrained operations through unconstrained rewrites like what we did in [the previous section](#optimizing-array-writes-with-reads) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). - -For example, we can find a 13.9% match `new_array` in the flamegraph above. - -In contrast, if we profile the pre-optimization demonstrative project: -![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) - -You will notice that it does not contain `new_array` and executes a total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). - -As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. - -This is however good to keep in mind in case you start noticing execution speeds being the bottleneck of your program, or if you are simply looking to optimize your program's execution speeds. - -::: - ### Profiling proving backend gates The profiler further provides the ability to flamegraph a Noir program's proving backend gates footprint. This is useful for fully identifying and optimizing proving bottlenecks of Noir programs. @@ -235,3 +180,58 @@ And at array size 2,048: ![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) ::: + +### Profiling execution traces (unconstrained) + +The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying and optimizing execution bottlenecks of Noir programs. + +The profiler supports profiling fully unconstrained Noir programs at this moment. + +#### Updating the demonstrative project + +Let's turn our demonstrative program into an unconstrained program by adding an `unconstrained` modifier to the main function: + +```rust +unconstrained fn main(...){...} +``` + +Since we are profiling the execution trace, we will also need to provide a set of inputs to execute the program with. + +Run `nargo check` to generate a _Prover.toml_ file, which you can fill it in with: + +```toml +ptr = 1 +array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +``` + +#### Flamegraphing + +Let's take a granular look at our program's unconstrained execution trace footprint using the profiler, running: + +```sh +noir-profiler execution-opcodes --artifact-path ./target/program.json --prover-toml-path Prover.toml --output ./target +``` + +This is similar to the `opcodes` command, except it additionally takes in the _Prover.toml_ file to profile execution with a specific set of inputs. + +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: +![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) + +Note that unconstrained Noir functions compile down to Brillig opcodes, which is what the counts in this flamegraph stand for, rather than constrained ACIR opcodes like in the previous section. + +:::tip + +Optimizing constrained operations through unconstrained rewrites like what we did in [the previous section](#optimizing-array-writes-with-reads) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). + +For example, we can find a 13.9% match `new_array` in the flamegraph above. + +In contrast, if we profile the pre-optimization demonstrative project: +![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) + +You will notice that it does not contain `new_array` and executes a total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). + +As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. + +This is however good to keep in mind in case you start noticing execution speeds being the bottleneck of your program, or if you are simply looking to optimize your program's execution speeds. + +::: From 495d4a1328483a3838f8f6323086ab6f1279765e Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 8 Apr 2025 17:57:18 -0400 Subject: [PATCH 21/28] Remove code updates no longer relevant after section reordering --- docs/docs/tooling/profiler.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 51c19c8df7b..348068e42ca 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -121,16 +121,6 @@ The profiler further provides the ability to flamegraph a Noir program's proving This feature depends on the proving backend you are using. We will use [Barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg) as an example here. Follow the [quick start guide](../getting_started/quick_start.md#proving-backend) to install it if you have not already. -#### Updating the demonstrative project - -Let's first revert our demonstrative program into a constrained program by removing the `unconstrained` modifier from the main function: - -```rust -fn main(...){...} -``` - -Then recompile the program running `nargo compile`. - #### Flamegraphing Let's take a granular look at our program's proving backend gates footprint using the profiler, running: From 1553b9e13f7d227b3ecd5486a19834e7f4dc61c0 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 8 Apr 2025 18:10:07 -0400 Subject: [PATCH 22/28] Update optimized array size 2048 screenshot --- .../gates-flamegraph-optimized-2048.png | Bin 85962 -> 110870 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png b/docs/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png index fff69fbac5e04e9a511475c72a1443dc1a3c0d04..00e28cc9fd52df908bccab31a8363a0a37a4c259 100644 GIT binary patch literal 110870 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

_%y&?ViigmiZd-QCUbHlBO#@t%9%egFHu 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 literal 85962 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

-(>n^Ocww7XuuK~{AoK*t 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 Date: Tue, 8 Apr 2025 18:25:57 -0400 Subject: [PATCH 23/28] Touch up wordings --- docs/docs/tooling/profiler.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 348068e42ca..1ed381a1207 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -17,11 +17,11 @@ Check if the profiler is already installed by running `noir-profiler --version`. ### Profiling ACIR opcodes -The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying and optimizing proving bottlenecks of Noir programs. +The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying constrained execution and proving bottlenecks of Noir programs. :::note -"_Approximately_" as actual proving speeds depend on the proving backend of choice, and how it interprets the ACIR opcodes. +"_Approximately_" as execution and proving speeds depend on the constrained execution trace and how the proving backend of choice interprets the ACIR opcodes. ::: @@ -64,7 +64,7 @@ The demonstrative project consists of 387 ACIR opcodes in total. From the flameg With insight into our program's bottleneck, let's optimize it. -#### Optimizing array writes with reads +#### Visualizing optimizations We can improve our program's performance using [unconstrained functions](../noir/concepts/unconstrained.md). @@ -99,7 +99,7 @@ This brings the ACIR opcodes count of our program down to a total of 284 opcodes ![ACIR Flamegraph Optimized](@site/static/img/tooling/profiler/acir-flamegraph-optimized.png) -#### Searching in flamegraphs +#### Searching The `i > ptr` region in the above image is highlighted purple as we were searching for it. @@ -117,9 +117,9 @@ This comes from the optimization removing the use of a dynamic array (i.e. an ar ### Profiling proving backend gates -The profiler further provides the ability to flamegraph a Noir program's proving backend gates footprint. This is useful for fully identifying and optimizing proving bottlenecks of Noir programs. +The profiler further provides the ability to flamegraph a Noir program's proving backend gates footprint. This is useful for fully identifying proving bottlenecks of Noir programs. -This feature depends on the proving backend you are using. We will use [Barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg) as an example here. Follow the [quick start guide](../getting_started/quick_start.md#proving-backend) to install it if you have not already. +This feature depends on the proving backend you are using and whether it supports the profiler with a gate profiling API. We will use [Barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg) as an example here. Follow the [quick start guide](../getting_started/quick_start.md#proving-backend) to install it if you have not already. #### Flamegraphing @@ -173,7 +173,7 @@ And at array size 2,048: ### Profiling execution traces (unconstrained) -The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying and optimizing execution bottlenecks of Noir programs. +The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying execution bottlenecks of Noir programs. The profiler supports profiling fully unconstrained Noir programs at this moment. @@ -211,14 +211,14 @@ Note that unconstrained Noir functions compile down to Brillig opcodes, which is :::tip -Optimizing constrained operations through unconstrained rewrites like what we did in [the previous section](#optimizing-array-writes-with-reads) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). +Rewriting constrained operations with unconstrained operations like what we did in [the optimization section](#visualizing-optimizations) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). For example, we can find a 13.9% match `new_array` in the flamegraph above. In contrast, if we profile the pre-optimization demonstrative project: ![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) -You will notice that it does not contain `new_array` and executes a total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). +You will notice that it does not contain `new_array` and executes a smaller total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. From 2110260ff72cec699b4b31b1c6220c5314b13884 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Tue, 8 Apr 2025 18:28:53 -0400 Subject: [PATCH 24/28] Reformat tips as sub-sections --- docs/docs/tooling/profiler.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 1ed381a1207..dbcb5dd5ae2 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -147,7 +147,7 @@ This illustrates that number of ACIR opcodes are at best approximations of provi ::: -:::tip +#### Understanding bottlenecks Profiling your program with different parameters is good way to understand your program's bottlenecks as it scales. @@ -169,8 +169,6 @@ And at array size 2,048: ![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) -::: - ### Profiling execution traces (unconstrained) The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying execution bottlenecks of Noir programs. @@ -209,7 +207,7 @@ Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: Note that unconstrained Noir functions compile down to Brillig opcodes, which is what the counts in this flamegraph stand for, rather than constrained ACIR opcodes like in the previous section. -:::tip +#### Balancing proving and execution optimizations Rewriting constrained operations with unconstrained operations like what we did in [the optimization section](#visualizing-optimizations) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). @@ -223,5 +221,3 @@ You will notice that it does not contain `new_array` and executes a smaller tota As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. This is however good to keep in mind in case you start noticing execution speeds being the bottleneck of your program, or if you are simply looking to optimize your program's execution speeds. - -::: From 8b4a73162fd666f27c7fc15005df0aeb963db818 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:44:53 -0400 Subject: [PATCH 25/28] Note optimized --- docs/docs/tooling/profiler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 4a1b7e1957d..c7845b1a88c 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -133,7 +133,7 @@ The `--backend-path` flag takes in the path to your proving backend binary. The above command assumes you have Barretenberg (bb) installed and that its path is saved in your PATH. If that is not the case, you can pass in the absolute path to your proving backend binary instead. -Flamegraph of the demonstrative project generated with bb v0.76.4: +Flamegraph of the optimized demonstrative project generated with bb v0.76.4: ![Gates Flamegraph Optimized](@site/static/img/tooling/profiler/gates-flamegraph-optimized.png) @@ -153,7 +153,7 @@ Profiling your program with different parameters is good way to understand your From the flamegraph above, you will notice that `blackbox::range` contributes the majority of the backend gates. This comes from how Barretenberg UltraHonk uses lookup tables for its range gates under the hood, which comes with a considerable but fixed setup cost in terms of proving gates. -If our array is larger, range gates would become a much smaller percentage of our total circuit. See this flamegraph for the same program but with an array of size 2,048 (versus originally 32) in comparison: +If our array is larger, range gates would become a much smaller percentage of our total circuit. See this flamegraph for the same optimized program but with an array of size 2,048 (versus originally 32) in comparison: ![Gates Flamegraph Optimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png) From 76c8dd9c3668c786907febabed1f944355cb800a Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:51:19 -0400 Subject: [PATCH 26/28] Improve intuitiveness --- docs/docs/tooling/profiler.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index c7845b1a88c..7e925370cc7 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -17,11 +17,13 @@ Check if the profiler is already installed by running `noir-profiler --version`. ### Profiling ACIR opcodes -The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying constrained execution and proving bottlenecks of Noir programs. +The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying bottlenecks in constrained execution and proving of Noir programs. :::note -"_Approximately_" as execution and proving speeds depend on the constrained execution trace and how the proving backend of choice interprets the ACIR opcodes. +"_Approximately_" as: +- Execution speeds depend on the constrained execution trace compiled from ACIR opcodes, and +- Proving speeds depend on the how the proving backend of choice interprets the ACIR opcodes. ::: From 0eef9068dc696fa8992d14c984b11dfffa4c3237 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:58:25 -0400 Subject: [PATCH 27/28] Improve readability --- docs/docs/tooling/profiler.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/tooling/profiler.md b/docs/docs/tooling/profiler.md index 7e925370cc7..a23c798f923 100644 --- a/docs/docs/tooling/profiler.md +++ b/docs/docs/tooling/profiler.md @@ -22,8 +22,8 @@ The profiler provides the ability to flamegraph a Noir program's ACIR opcodes fo :::note "_Approximately_" as: -- Execution speeds depend on the constrained execution trace compiled from ACIR opcodes, and -- Proving speeds depend on the how the proving backend of choice interprets the ACIR opcodes. +- Execution speeds depend on the constrained execution trace compiled from ACIR opcodes +- Proving speeds depend on the how the proving backend of choice interprets the ACIR opcodes ::: From 18f316dde39be31bbb348b42c2bb5cba044e68a1 Mon Sep 17 00:00:00 2001 From: Savio <72797635+Savio-Sou@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:59:10 -0400 Subject: [PATCH 28/28] Copy changes to versioned docs --- .../version-1.0.0-beta.4/tooling/profiler.md | 192 +++++++++++++----- .../version-v1.0.0-beta.3/tooling/profiler.md | 192 ++++++++++++++---- 2 files changed, 292 insertions(+), 92 deletions(-) diff --git a/docs/versioned_docs/version-1.0.0-beta.4/tooling/profiler.md b/docs/versioned_docs/version-1.0.0-beta.4/tooling/profiler.md index 26faec57d2f..a23c798f923 100644 --- a/docs/versioned_docs/version-1.0.0-beta.4/tooling/profiler.md +++ b/docs/versioned_docs/version-1.0.0-beta.4/tooling/profiler.md @@ -1,19 +1,37 @@ --- -title: Noir Profiler +title: Profiler description: Learn about the Noir Profiler, how to generate execution flamegraphs, identify bottlenecks, and visualize optimizations. keywords: [profiling, profiler, flamegraph] -sidebar_position: 0 +sidebar_position: 3 --- -`noir-profiler` is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. +The profiler is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. -### Installation +## Installation -`noir-profiler` comes out of the box with [noirup](../getting_started/noir_installation.md). Test that you have the profiler installed by running `noir-profiler --version`. +The profiler is automatically installed with Nargo starting noirup v0.1.4. -### Usage +Check if the profiler is already installed by running `noir-profiler --version`. If the profiler is not found, update noirup and install the profiler by [reinstalling both noirup and Nargo](../getting_started/quick_start.md#noir). -Let's start by creating a simple Noir program. All this program aims to do is zero out an array past some dynamic index. +## Usage + +### Profiling ACIR opcodes + +The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying bottlenecks in constrained execution and proving of Noir programs. + +:::note + +"_Approximately_" as: +- Execution speeds depend on the constrained execution trace compiled from ACIR opcodes +- Proving speeds depend on the how the proving backend of choice interprets the ACIR opcodes + +::: + +#### Create a demonstrative project + +Let's start by creating a simple Noir program that aims to zero out an array past some dynamic index. + +Run `nargo new program` to create a new project named _program_, then copy in the following as source code: ```rust fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { @@ -25,32 +43,32 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { array } ``` -You can use these values for the `Prover.toml`: -```toml -ptr = 1 -array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -``` -Running `nargo info` we can get some information about the opcodes produced by this program, but it doesn't give us a lot of info on its own. Compile and execute this program normally using `nargo compile` and `nargo execute`. +Change into the project directory and compile the program using `nargo compile`. We are now ready to try out the profiler. -### Generating an ACIR opcode flamegraph +#### Flamegraphing -The program on its own is quite high-level. Let's get a more granular look at what is happening by using `noir-profiler`. +Let's take a granular look at our program's ACIR opcode footprint using the profiler, running: -After compiling the program, run the following: ```sh noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ ``` -Below you can see an example flamegraph with a total 387 opcodes (using `nargo` version 1.0.0-beta.2): + +The command generates a flamegraph in your _target_ folder that maps the number of ACIR opcodes to their corresponding locations in your program's source code. + +Opening the flamegraph in a web browser will provide a more interactive experience, allowing you to click into different regions of the graph and examine them. + +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: + ![ACIR Flamegraph Unoptimized](@site/static/img/tooling/profiler/acir-flamegraph-unoptimized.png) -You should now have a flamegraph that maps ACIR opcodes to their corresponding locations in the source code. We strongly recommend generating these graphs yourself as you follow this guide. Opening the flamegraph in a browser provides a more interactive experience, allowing you to click into and examine different regions of the graph. Simply viewing the image file won't offer the same level of insight. +The demonstrative project consists of 387 ACIR opcodes in total. From the flamegraph, we can see that the majority come from the write to `array[i]`. -We can see that the majority of opcodes come from the write to `array[i]`. Now that we have some more information about our program's bottlenecks, let's optimize it. +With insight into our program's bottleneck, let's optimize it. -#### Transform conditional writes into reads +#### Visualizing optimizations -We can improve our circuit's efficiency using [unconstrained functions](../noir/concepts/unconstrained.md). +We can improve our program's performance using [unconstrained functions](../noir/concepts/unconstrained.md). Let's replace expensive array writes with array gets with the new code below: ```rust @@ -76,60 +94,132 @@ unconstrained fn zero_out_array(ptr: u32, mut array: [u32; 32]) -> [u32; 32] { array } ``` -We chose to instead write our array inside of the unconstrained function. Then inside of our circuit we assert on every value in the array returned from the unconstrained function. -This new program produces the following ACIR opcodes flamegraph with a total of 284 opcodes: +Instead of writing our array in a fully constrained context, we first write our array inside an unconstrained function. Then, we assert every value in the array returned from the unconstrained function in a constrained context. + +This brings the ACIR opcodes count of our program down to a total of 284 opcodes: + ![ACIR Flamegraph Optimized](@site/static/img/tooling/profiler/acir-flamegraph-optimized.png) -In the above image we searched for the ACIR opcodes due to `i > ptr` in the source code. Trigger a search by clicking on "Search" in the top right corner of the flamegraph. In the bottom right corner of the image above, you will note that the flamegraph displays the percentage of all opcodes associated with that search. Searching for `memory::op` in the optimized flamegraph will result in no matches. This is due to no longer using a dynamic array in our circuit. By dynamic array, we are referring to using a dynamic index (values reliant upon witness inputs) when working with arrays. Most of the memory operations, have now been replaced with arithmetic operations as we are reading two arrays from known constant indices. +#### Searching -### Generate a backend gates flamegraph +The `i > ptr` region in the above image is highlighted purple as we were searching for it. -Unfortunately, ACIR opcodes do not give us a full picture of where the cost of this program lies. -The `gates` command also accepts a backend binary. In the [quick start guide](../getting_started/quick_start.md#proving-backend) you can see how to get started with the [Barretenberg proving backend](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg). +Click "Search" in the top right corner of the flamegraph to start a search (e.g. i > ptr). + +Check "Matched" in the bottom right corner to learn the percentage out of total opcodes associated with the search (e.g. 43.3%). + +:::tip + +If you try searching for `memory::op` before and after the optimization, you will find that the search will no longer have matches after the optimization. + +This comes from the optimization removing the use of a dynamic array (i.e. an array with a dynamic index, that is its values rely on witness inputs). After the optimization, the program reads from two arrays with known constant indices, replacing the original memory operations with simple arithmetic operations. + +::: + +### Profiling proving backend gates + +The profiler further provides the ability to flamegraph a Noir program's proving backend gates footprint. This is useful for fully identifying proving bottlenecks of Noir programs. + +This feature depends on the proving backend you are using and whether it supports the profiler with a gate profiling API. We will use [Barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg) as an example here. Follow the [quick start guide](../getting_started/quick_start.md#proving-backend) to install it if you have not already. + +#### Flamegraphing + +Let's take a granular look at our program's proving backend gates footprint using the profiler, running: -Run the following command: ```sh noir-profiler gates --artifact-path ./target/program.json --backend-path bb --output ./target -- --include_gates_per_opcode ``` -`--backend-path` accepts a path to the backend binary. In the above command we assume that you have the backend binary path saved in your PATH. If you do not, you will have to pass the binary's absolute path. -This produces the following flamegraph with 3,737 total backend gates (using `bb` version 0.76.4): -![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) +The `--backend-path` flag takes in the path to your proving backend binary. -Searching for ACIR `memory::op` opcodes, they look to cause about 18.2% of the backend gates. +The above command assumes you have Barretenberg (bb) installed and that its path is saved in your PATH. If that is not the case, you can pass in the absolute path to your proving backend binary instead. -You will notice that the majority of the backend gates come from the ACIR range opcodes. This is due to the way UltraHonk handles range constraints, which is the backend used in this example. UltraHonk uses lookup tables internally for its range gates. These can take up the majority of the gates for a small circuit, but whose impact becomes more meaningful in larger circuits. If our array was much larger, range gates would become a much smaller percentage of our total circuit. -Here is an example backend gates flamegraph for the same program in this guide but with an array of size 2048: -![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) -Every backend implements ACIR opcodes differently, so it is important to profile both the ACIR and the backend gates to get a full picture. +Flamegraph of the optimized demonstrative project generated with bb v0.76.4: -Now let's generate a graph for our optimized circuit with an array of size 32. We get the following flamegraph that produces 3,062 total backend gates: ![Gates Flamegraph Optimized](@site/static/img/tooling/profiler/gates-flamegraph-optimized.png) -In the optimized flamegraph, we searched for the backend gates due to `i > ptr` in the source code. The backend gates associated with this call stack were only 3.8% of the total backend gates. If we look back to the ACIR flamegraph, that same code was the cause of 43.3% ACIR opcodes. This discrepancy reiterates the earlier point about profiling both the ACIR opcodes and backend gates. +The demonstrative project consists of 3,062 proving backend gates in total. + +:::note + +If you try searching for `i > ptr` in the source code, you will notice that this call stack is only contributing 3.8% of the total proving backend gates, versus the 43.3% ACIR opcodes it contributes. + +This illustrates that number of ACIR opcodes are at best approximations of proving performances, where actual proving performances depend on how the proving backend interprets and translates ACIR opcodes into proving gates. + +::: + +#### Understanding bottlenecks + +Profiling your program with different parameters is good way to understand your program's bottlenecks as it scales. + +From the flamegraph above, you will notice that `blackbox::range` contributes the majority of the backend gates. This comes from how Barretenberg UltraHonk uses lookup tables for its range gates under the hood, which comes with a considerable but fixed setup cost in terms of proving gates. + +If our array is larger, range gates would become a much smaller percentage of our total circuit. See this flamegraph for the same optimized program but with an array of size 2,048 (versus originally 32) in comparison: -For posterity, here is the flamegraph for the same program with a size 2048 array: ![Gates Flamegraph Optimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png) -### Generate an unconstrained execution trace flamegraph +Where `blackbox::range` contributes a considerably smaller portion of the total proving gates. -The profiler also enables developers to generate a flamegraph of the unconstrained execution trace. For unconstrained functions Noir compiles down to Brillig bytecode, thus we will be seeing a flamegraph of Brillig opcodes, rather than ACIR opcodes. +Every proving backend interprets ACIR opcodes differently, so it is important to profile proving backend gates to get the full picture of proving performance. -Let's take our initial program and simply add an `unconstrained` modifier before main (e.g. `unconstrained fn main`). Then run the following command: -```sh -noir-profiler execution-opcodes --artifact-name ./target/program.json --prover_toml_path Prover.toml --output ./target +As additional reference, this is the flamegraph of the pre-optimization demonstrative project at array size 32: + +![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) + +And at array size 2,048: + +![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) + +### Profiling execution traces (unconstrained) + +The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying execution bottlenecks of Noir programs. + +The profiler supports profiling fully unconstrained Noir programs at this moment. + +#### Updating the demonstrative project + +Let's turn our demonstrative program into an unconstrained program by adding an `unconstrained` modifier to the main function: + +```rust +unconstrained fn main(...){...} ``` -This matches the `opcodes` command, except that now we need to accept a `Prover.toml` file to profile execution with a specific set of inputs. -We will get the following flamegraph with 1,582 opcodes executed: -![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) +Since we are profiling the execution trace, we will also need to provide a set of inputs to execute the program with. -Circuit programming (ACIR) is an entirely different execution paradigm compared to regular programming. To demonstrate this point further, let's generate an execution trace for our optimized ACIR program once we have modified `main` to be `unconstrained`. +Run `nargo check` to generate a _Prover.toml_ file, which you can fill it in with: -We then get the following flamegraph with 2,125 opcodes executed: +```toml +ptr = 1 +array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +``` + +#### Flamegraphing + +Let's take a granular look at our program's unconstrained execution trace footprint using the profiler, running: + +```sh +noir-profiler execution-opcodes --artifact-path ./target/program.json --prover-toml-path Prover.toml --output ./target +``` + +This is similar to the `opcodes` command, except it additionally takes in the _Prover.toml_ file to profile execution with a specific set of inputs. + +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: ![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) -In the above graph we are searching for `new_array`, which shows up zero matches in the initial program. In the unconstrained environment, the updated program essentially just adds extra unnecessary checks. Thus, we see a longer execution trace. +Note that unconstrained Noir functions compile down to Brillig opcodes, which is what the counts in this flamegraph stand for, rather than constrained ACIR opcodes like in the previous section. + +#### Balancing proving and execution optimizations + +Rewriting constrained operations with unconstrained operations like what we did in [the optimization section](#visualizing-optimizations) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). + +For example, we can find a 13.9% match `new_array` in the flamegraph above. + +In contrast, if we profile the pre-optimization demonstrative project: +![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) + +You will notice that it does not contain `new_array` and executes a smaller total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). + +As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. -`execution-opcodes` is useful for when you are searching for bottlenecks in unconstrained code. This can be especially meaningful for optimizing witness generation. Even though unconstrained execution helps us skip proving steps, we still need to compute the relevant inputs/outputs outside of the circuit before proving. +This is however good to keep in mind in case you start noticing execution speeds being the bottleneck of your program, or if you are simply looking to optimize your program's execution speeds. diff --git a/docs/versioned_docs/version-v1.0.0-beta.3/tooling/profiler.md b/docs/versioned_docs/version-v1.0.0-beta.3/tooling/profiler.md index 1f906226f8c..a23c798f923 100644 --- a/docs/versioned_docs/version-v1.0.0-beta.3/tooling/profiler.md +++ b/docs/versioned_docs/version-v1.0.0-beta.3/tooling/profiler.md @@ -1,21 +1,37 @@ --- -title: Noir Profiler +title: Profiler description: Learn about the Noir Profiler, how to generate execution flamegraphs, identify bottlenecks, and visualize optimizations. keywords: [profiling, profiler, flamegraph] -sidebar_position: 0 +sidebar_position: 3 --- -## Noir Profiler +The profiler is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. -`noir-profiler` is a sampling profiler designed to analyze and visualize Noir programs. It assists developers to identify bottlenecks by mapping execution data back to the original source code. +## Installation -### Installation +The profiler is automatically installed with Nargo starting noirup v0.1.4. -`noir-profiler` comes out of the box with [noirup](../getting_started/noir_installation.md). Test that you have the profiler installed by running `noir-profiler --version`. +Check if the profiler is already installed by running `noir-profiler --version`. If the profiler is not found, update noirup and install the profiler by [reinstalling both noirup and Nargo](../getting_started/quick_start.md#noir). -### Usage +## Usage -Let's start by creating a simple Noir program. All this program aims to do is zero out an array past some dynamic index. +### Profiling ACIR opcodes + +The profiler provides the ability to flamegraph a Noir program's ACIR opcodes footprint. This is useful for _approximately_ identifying bottlenecks in constrained execution and proving of Noir programs. + +:::note + +"_Approximately_" as: +- Execution speeds depend on the constrained execution trace compiled from ACIR opcodes +- Proving speeds depend on the how the proving backend of choice interprets the ACIR opcodes + +::: + +#### Create a demonstrative project + +Let's start by creating a simple Noir program that aims to zero out an array past some dynamic index. + +Run `nargo new program` to create a new project named _program_, then copy in the following as source code: ```rust fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { @@ -27,32 +43,32 @@ fn main(ptr: pub u32, mut array: [u32; 32]) -> pub [u32; 32] { array } ``` -You can use these values for the `Prover.toml`: -```toml -ptr = 1 -array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -``` -Running `nargo info` we can get some information about the opcodes produced by this program, but it doesn't give us a lot of info on its own. Compile and execute this program normally using `nargo compile` and `nargo execute`. +Change into the project directory and compile the program using `nargo compile`. We are now ready to try out the profiler. -### Generating an ACIR opcode flamegraph +#### Flamegraphing -The program on its own is quite high-level. Let's get a more granular look at what is happening by using `noir-profiler`. +Let's take a granular look at our program's ACIR opcode footprint using the profiler, running: -After compiling the program, run the following: ```sh noir-profiler opcodes --artifact-path ./target/program.json --output ./target/ ``` -Below you can see an example flamegraph with a total 387 opcodes (using `nargo` version 1.0.0-beta.2): + +The command generates a flamegraph in your _target_ folder that maps the number of ACIR opcodes to their corresponding locations in your program's source code. + +Opening the flamegraph in a web browser will provide a more interactive experience, allowing you to click into different regions of the graph and examine them. + +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: + ![ACIR Flamegraph Unoptimized](@site/static/img/tooling/profiler/acir-flamegraph-unoptimized.png) -You should now have a flamegraph that maps ACIR opcodes to their corresponding locations in the source code. We strongly recommend generating these graphs yourself as you follow this guide. Opening the flamegraph in a browser provides a more interactive experience, allowing you to click into and examine different regions of the graph. Simply viewing the image file won't offer the same level of insight. +The demonstrative project consists of 387 ACIR opcodes in total. From the flamegraph, we can see that the majority come from the write to `array[i]`. -We can see that the majority of opcodes come from the write to `array[i]`. Now that we have some more information about our program's bottlenecks, let's optimize it. +With insight into our program's bottleneck, let's optimize it. -#### Transform conditional writes into reads +#### Visualizing optimizations -We can improve our circuit's efficiency using [unconstrained functions](../noir/concepts/unconstrained.md). +We can improve our program's performance using [unconstrained functions](../noir/concepts/unconstrained.md). Let's replace expensive array writes with array gets with the new code below: ```rust @@ -78,38 +94,132 @@ unconstrained fn zero_out_array(ptr: u32, mut array: [u32; 32]) -> [u32; 32] { array } ``` -We chose to instead write our array inside of the unconstrained function. Then inside of our circuit we assert on every value in the array returned from the unconstrained function. -This new program produces the following ACIR opcodes flamegraph with a total of 284 opcodes: +Instead of writing our array in a fully constrained context, we first write our array inside an unconstrained function. Then, we assert every value in the array returned from the unconstrained function in a constrained context. + +This brings the ACIR opcodes count of our program down to a total of 284 opcodes: + ![ACIR Flamegraph Optimized](@site/static/img/tooling/profiler/acir-flamegraph-optimized.png) -In the above image we searched for the ACIR opcodes due to `i > ptr` in the source code. Trigger a search by clicking on "Search" in the top right corner of the flamegraph. In the bottom right corner of the image above, you will note that the flamegraph displays the percentage of all opcodes associated with that search. Searching for `memory::op` in the optimized flamegraph will result in no matches. This is due to no longer using a dynamic array in our circuit. By dynamic array, we are referring to using a dynamic index (values reliant upon witness inputs) when working with arrays. Most of the memory operations, have now been replaced with arithmetic operations as we are reading two arrays from known constant indices. +#### Searching + +The `i > ptr` region in the above image is highlighted purple as we were searching for it. + +Click "Search" in the top right corner of the flamegraph to start a search (e.g. i > ptr). -### Generate a backend gates flamegraph +Check "Matched" in the bottom right corner to learn the percentage out of total opcodes associated with the search (e.g. 43.3%). -Unfortunately, ACIR opcodes do not give us a full picture of where the cost of this program lies. -The `gates` command also accepts a backend binary. In the [quick start guide](../getting_started/quick_start.md#proving-backend) you can see how to get started with the [Barretenberg proving backend](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg). +:::tip + +If you try searching for `memory::op` before and after the optimization, you will find that the search will no longer have matches after the optimization. + +This comes from the optimization removing the use of a dynamic array (i.e. an array with a dynamic index, that is its values rely on witness inputs). After the optimization, the program reads from two arrays with known constant indices, replacing the original memory operations with simple arithmetic operations. + +::: + +### Profiling proving backend gates + +The profiler further provides the ability to flamegraph a Noir program's proving backend gates footprint. This is useful for fully identifying proving bottlenecks of Noir programs. + +This feature depends on the proving backend you are using and whether it supports the profiler with a gate profiling API. We will use [Barretenberg](https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg) as an example here. Follow the [quick start guide](../getting_started/quick_start.md#proving-backend) to install it if you have not already. + +#### Flamegraphing + +Let's take a granular look at our program's proving backend gates footprint using the profiler, running: -Run the following command: ```sh -noir-profiler gates --artifact-path ./target/program.json --backend-path bb --output ./target +noir-profiler gates --artifact-path ./target/program.json --backend-path bb --output ./target -- --include_gates_per_opcode ``` -`--backend-path` accepts a path to the backend binary. In the above command we assume that you have the backend binary path saved in your PATH. If you do not, you will have to pass the binary's absolute path. -This produces the following flamegraph with 3,737 total backend gates (using `bb` version 0.76.4): -![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) +The `--backend-path` flag takes in the path to your proving backend binary. -Searching for ACIR `memory::op` opcodes, they look to cause about 18.2% of the backend gates. +The above command assumes you have Barretenberg (bb) installed and that its path is saved in your PATH. If that is not the case, you can pass in the absolute path to your proving backend binary instead. -You will notice that the majority of the backend gates come from the ACIR range opcodes. This is due to the way UltraHonk handles range constraints, which is the backend used in this example. UltraHonk uses lookup tables internally for its range gates. These can take up the majority of the gates for a small circuit, but whose impact becomes more meaningful in larger circuits. If our array was much larger, range gates would become a much smaller percentage of our total circuit. -Here is an example backend gates flamegraph for the same program in this guide but with an array of size 2048: -![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) -Every backend implements ACIR opcodes differently, so it is important to profile both the ACIR and the backend gates to get a full picture. +Flamegraph of the optimized demonstrative project generated with bb v0.76.4: -Now let's generate a graph for our optimized circuit with an array of size 32. We get the following flamegraph that produces 3,062 total backend gates: ![Gates Flamegraph Optimized](@site/static/img/tooling/profiler/gates-flamegraph-optimized.png) -In the optimized flamegraph, we searched for the backend gates due to `i > ptr` in the source code. The backend gates associated with this call stack were only 3.8% of the total backend gates. If we look back to the ACIR flamegraph, that same code was the cause of 43.3% ACIR opcodes. This discrepancy reiterates the earlier point about profiling both the ACIR opcodes and backend gates. +The demonstrative project consists of 3,062 proving backend gates in total. + +:::note + +If you try searching for `i > ptr` in the source code, you will notice that this call stack is only contributing 3.8% of the total proving backend gates, versus the 43.3% ACIR opcodes it contributes. + +This illustrates that number of ACIR opcodes are at best approximations of proving performances, where actual proving performances depend on how the proving backend interprets and translates ACIR opcodes into proving gates. + +::: + +#### Understanding bottlenecks + +Profiling your program with different parameters is good way to understand your program's bottlenecks as it scales. + +From the flamegraph above, you will notice that `blackbox::range` contributes the majority of the backend gates. This comes from how Barretenberg UltraHonk uses lookup tables for its range gates under the hood, which comes with a considerable but fixed setup cost in terms of proving gates. + +If our array is larger, range gates would become a much smaller percentage of our total circuit. See this flamegraph for the same optimized program but with an array of size 2,048 (versus originally 32) in comparison: -For posterity, here is the flamegraph for the same program with a size 2048 array: ![Gates Flamegraph Optimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-optimized-2048.png) + +Where `blackbox::range` contributes a considerably smaller portion of the total proving gates. + +Every proving backend interprets ACIR opcodes differently, so it is important to profile proving backend gates to get the full picture of proving performance. + +As additional reference, this is the flamegraph of the pre-optimization demonstrative project at array size 32: + +![Gates Flamegraph Unoptimized](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized.png) + +And at array size 2,048: + +![Gates Flamegraph Unoptimized 2048](@site/static/img/tooling/profiler/gates-flamegraph-unoptimized-2048.png) + +### Profiling execution traces (unconstrained) + +The profiler also provides the ability to flamegraph a Noir program's execution trace. This is useful for identifying execution bottlenecks of Noir programs. + +The profiler supports profiling fully unconstrained Noir programs at this moment. + +#### Updating the demonstrative project + +Let's turn our demonstrative program into an unconstrained program by adding an `unconstrained` modifier to the main function: + +```rust +unconstrained fn main(...){...} +``` + +Since we are profiling the execution trace, we will also need to provide a set of inputs to execute the program with. + +Run `nargo check` to generate a _Prover.toml_ file, which you can fill it in with: + +```toml +ptr = 1 +array = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] +``` + +#### Flamegraphing + +Let's take a granular look at our program's unconstrained execution trace footprint using the profiler, running: + +```sh +noir-profiler execution-opcodes --artifact-path ./target/program.json --prover-toml-path Prover.toml --output ./target +``` + +This is similar to the `opcodes` command, except it additionally takes in the _Prover.toml_ file to profile execution with a specific set of inputs. + +Flamegraph of the demonstrative project generated with Nargo v1.0.0-beta.2: +![Brillig Trace "Optimized"](@site/static/img/tooling/profiler/brillig-trace-opt-32.png) + +Note that unconstrained Noir functions compile down to Brillig opcodes, which is what the counts in this flamegraph stand for, rather than constrained ACIR opcodes like in the previous section. + +#### Balancing proving and execution optimizations + +Rewriting constrained operations with unconstrained operations like what we did in [the optimization section](#visualizing-optimizations) helps remove ACIR opcodes (hence shorter proving times), but would introduce more Brillig opcodes (hence longer execution times). + +For example, we can find a 13.9% match `new_array` in the flamegraph above. + +In contrast, if we profile the pre-optimization demonstrative project: +![Brillig Trace Initial Program](@site/static/img/tooling/profiler/brillig-trace-initial-32.png) + +You will notice that it does not contain `new_array` and executes a smaller total of 1,582 Brillig opcodes (versus 2,125 Brillig opcodes post-optimization). + +As new unconstrained functions were added, it is reasonable that the program would consist of more Brillig opcodes. That said, the tradeoff is often easily justifiable by the fact that proving speeds are more commonly the major bottleneck of Noir programs versus execution speeds. + +This is however good to keep in mind in case you start noticing execution speeds being the bottleneck of your program, or if you are simply looking to optimize your program's execution speeds.