diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cc7fa5753ce..1f6189ce0b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -348,6 +348,41 @@ jobs: working-directory: ./barretenberg/cpp/ timeout-minutes: 15 run: earthly-ci --no-output +bench-ultra-honk --bench_mode=cache + + protocol-circuits-gates-report: + needs: setup + runs-on: ${{ inputs.username || github.actor }}-x86 + steps: + - { + uses: actions/checkout@v4, + with: { ref: "${{ github.event.pull_request.head.sha }}" }, + } + # Only allow one memory-hunger prover test to use this runner + - uses: ./.github/ci-setup-action + with: + dockerhub_password: "${{ secrets.DOCKERHUB_PASSWORD }}" + concurrency_key: protocol-circuits-gates-report-${{ inputs.username || github.actor }}-x86 + - name: "Noir Protocol Circuits Report" + working-directory: ./noir-projects/ + timeout-minutes: 25 + run: | + earthly-ci --artifact +gates-report/gates_report.json + mv gates_report.json ../protocol_circuits_report.json + + - name: Compare gates reports + id: gates_diff + uses: vezenovm/noir-gates-diff@acf12797860f237117e15c0d6e08d64253af52b6 + with: + report: protocol_circuits_report.json + summaryQuantile: 0 # Display any diff in gate count + + - name: Add gates diff to sticky comment + if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' + uses: marocchino/sticky-pull-request-comment@v2 + with: + # delete the comment in case changes no longer impact circuit sizes + delete: ${{ !steps.gates_diff.outputs.markdown }} + message: ${{ steps.gates_diff.outputs.markdown }} merge-check: runs-on: ubuntu-latest diff --git a/.github/workflows/protocol-circuits-gate-diff.yml b/.github/workflows/protocol-circuits-gate-diff.yml deleted file mode 100644 index b31e371d471..00000000000 --- a/.github/workflows/protocol-circuits-gate-diff.yml +++ /dev/null @@ -1,104 +0,0 @@ -name: Report gates diff - -on: - push: - branches: - - master - pull_request: - -jobs: - compare_protocol_circuits_gates: - concurrency: - group: compare_protocol_circuits_gates-${{ github.ref_name == 'master' && github.run_id || github.ref_name }} - cancel-in-progress: true - if: "!startsWith(github.head_ref, 'release-please--')" - runs-on: ubuntu-20.04 - steps: - - name: Checkout Code - uses: actions/checkout@v3 - - - name: Install bleeding edge cmake - run: | - sudo apt -y remove --purge cmake - sudo snap install cmake --classic - - - name: Create Build Environment - run: | - sudo apt-get update - sudo apt-get -y install ninja-build - - - name: Install Clang16 - run: | - wget https://github.com/llvm/llvm-project/releases/download/llvmorg-16.0.0/clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz - tar -xvf clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz - sudo cp clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/* /usr/local/bin/ - sudo cp -r clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/include/* /usr/local/include/ - sudo cp -r clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/lib/* /usr/local/lib/ - sudo cp -r clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04/share/* /usr/local/share/ - rm -rf clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz clang+llvm-16.0.0-x86_64-linux-gnu-ubuntu-18.04 - - - uses: actions/cache@v4 - with: - path: | - barretenberg/cpp/build - barretenberg/cpp/build-wasm - barretenberg/cpp/build-threads - key: ${{ runner.os }}-bb-build - - - name: Compile Barretenberg - run: | - cd barretenberg/cpp - - cmake --preset default -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_BUILD_TYPE=RelWithAssert -DTARGET_ARCH=westmere - cmake --build --preset default --target bb - - - name: Install noirup - run: | - curl -L $INSTALL_URL | bash - echo "${HOME}/.nargo/bin" >> $GITHUB_PATH - env: - INSTALL_URL: https://raw.githubusercontent.com/noir-lang/noirup/main/install - NOIRUP_BIN_URL: https://raw.githubusercontent.com/noir-lang/noirup/main/noirup - - - uses: actions/cache@v4 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - key: ${{ runner.os }}-cargo - - - name: Install Barretenberg dependencies - run: sudo apt update && sudo apt install clang lld cmake libomp-dev - - - name: Install nargo from source with noirup - run: noirup $toolchain - env: - toolchain: --path ./noir/noir-repo - - - name: Check nargo installation - run: nargo --version - - - name: Generate gates report - working-directory: ./noir-projects/noir-protocol-circuits - run: | - nargo info --json --silence-warnings > protocol_circuits_report.json - mv protocol_circuits_report.json ../../protocol_circuits_report.json - env: - NARGO_BACKEND_PATH: ../../barretenberg/cpp/build/bin/bb - - - name: Compare gates reports - id: gates_diff - uses: vezenovm/noir-gates-diff@acf12797860f237117e15c0d6e08d64253af52b6 - with: - report: protocol_circuits_report.json - summaryQuantile: 0 # Display any diff in gate count - - - name: Add gates diff to sticky comment - if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target' - uses: marocchino/sticky-pull-request-comment@v2 - with: - # delete the comment in case changes no longer impact circuit sizes - delete: ${{ !steps.gates_diff.outputs.markdown }} - message: ${{ steps.gates_diff.outputs.markdown }} diff --git a/noir-projects/Earthfile b/noir-projects/Earthfile index 85fe5130a92..645eddc4973 100644 --- a/noir-projects/Earthfile +++ b/noir-projects/Earthfile @@ -29,3 +29,13 @@ test: RUN cd noir-protocol-circuits && nargo test --silence-warnings RUN cd aztec-nr && nargo test --silence-warnings RUN cd noir-contracts && nargo test --silence-warnings + +gates-report: + FROM +build + WORKDIR /usr/src/noir-projects/noir-protocol-circuits + + COPY ../barretenberg/cpp/+preset-clang-assert/bin/bb /usr/src/barretenberg/cpp/build/bin/bb + + RUN NARGO_BACKEND_PATH=/usr/src/barretenberg/cpp/build/bin/bb nargo info --json > gates_report.json + + SAVE ARTIFACT gates_report.json gates_report.json \ No newline at end of file