From 938066e3727fb139cb5459749d7c479c0181002b Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:13:03 +0000 Subject: [PATCH 01/47] feat: bench bb in pr's --- .circleci/config.yml | 12 ++++++++++++ .../benchmark/honk_bench/standard_plonk.bench.cpp | 4 ++-- .../benchmark/honk_bench/ultra_honk.bench.cpp | 4 ++-- .../benchmark/honk_bench/ultra_plonk.bench.cpp | 4 ++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cfbed9d1d76..0935c8acdda 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -225,6 +225,17 @@ jobs: name: "Test" command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/bb-tests.sh + barretenberg-ultra-honk-bench: + docker: + - image: aztecprotocol/alpine-build-image + resource_class: small + steps: + - *checkout + - *setup_env + - run: + name: "Test" + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert ./bin/ultra_honk_bench 32 + barretenberg-honk-tests: docker: - image: aztecprotocol/alpine-build-image @@ -1050,6 +1061,7 @@ workflows: - barretenberg-x86_64-linux-clang-fuzzing: *defaults - barretenberg-wasm-linux-clang: *defaults - barretenberg-x86_64-linux-clang-sol: *defaults + - barretenberg-ultra-honk-bench: *defaults - barretenberg-proof-system-tests: *bb_test - barretenberg-honk-tests: *bb_test - barretenberg-dsl-tests: *bb_test diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp index b44f4123f61..c5293d8b25e 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/standard_plonk.bench.cpp @@ -18,6 +18,6 @@ static void construct_proof_standard_power_of_2(State& state) noexcept } BENCHMARK(construct_proof_standard_power_of_2) - // 2**13 gates to 2**18 gates - ->DenseRange(13, 18) + // 2**15 gates to 2**20 gates + ->DenseRange(15, 20) ->Unit(::benchmark::kMillisecond); \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp index 471e7db76e0..803c5e4af93 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.bench.cpp @@ -43,6 +43,6 @@ BENCHMARK_CAPTURE(construct_proof_ultrahonk, ->Unit(kMillisecond); BENCHMARK(construct_proof_ultrahonk_power_of_2) - // 2**13 gates to 2**18 gates - ->DenseRange(13, 18) + // 2**15 gates to 2**20 gates + ->DenseRange(15, 20) ->Unit(kMillisecond); \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp index 9ea895fe703..99c4e845f39 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_plonk.bench.cpp @@ -41,6 +41,6 @@ BENCHMARK_CAPTURE(construct_proof_ultraplonk, ->Unit(kMillisecond); BENCHMARK(construct_proof_ultraplonk_power_of_2) - // 2**13 gates to 2**18 gates - ->DenseRange(13, 18) + // 2**15 gates to 2**20 gates + ->DenseRange(15, 20) ->Unit(kMillisecond); \ No newline at end of file From e019f680b04a61a22ee2eb9951e3d5494cb76865 Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:14:59 +0000 Subject: [PATCH 02/47] fix: core count first --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0935c8acdda..45728f4edf4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -234,7 +234,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert ./bin/ultra_honk_bench 32 + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./bin/ultra_honk_bench barretenberg-honk-tests: docker: From a079fe88886cdfee9a8c27e72a9e6473c2996b28 Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:20:41 +0000 Subject: [PATCH 03/47] fix: core count first --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 45728f4edf4..d22c8ca999f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -234,7 +234,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./bin/ultra_honk_bench + command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 sh -c "cd build && ./bin/ultra_honk_bench" barretenberg-honk-tests: docker: From 00abec4582537a2522f809a03271549b76b21b7e Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:27:12 +0000 Subject: [PATCH 04/47] fix script run --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d22c8ca999f..a49841f9306 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -234,7 +234,7 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 sh -c "cd build && ./bin/ultra_honk_bench" + command: cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 sh -c "cd build && ./bin/ultra_honk_bench" barretenberg-honk-tests: docker: From 24bc448a1f21f055edbf3000f92ad7dd076bc7fc Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:39:18 +0000 Subject: [PATCH 05/47] Bench --- .circleci/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a49841f9306..136bed93dfe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -234,7 +234,9 @@ jobs: - *setup_env - run: name: "Test" - command: cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 sh -c "cd build && ./bin/ultra_honk_bench" + command: | + export TAG_POSTFIX=ultra-honk-bench + cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 sh -c "cd build && ./bin/ultra_honk_bench" barretenberg-honk-tests: docker: From 50629e3eb8b02f6116185b99f6e1ac18f8a040fc Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:44:27 +0000 Subject: [PATCH 06/47] fix: change to /bin/bash --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 136bed93dfe..c406443066f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -236,7 +236,7 @@ jobs: name: "Test" command: | export TAG_POSTFIX=ultra-honk-bench - cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 sh -c "cd build && ./bin/ultra_honk_bench" + cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 /bin/bash -c "cd build && ./bin/ultra_honk_bench" barretenberg-honk-tests: docker: From 7cb52d4a0a598c49b8751db965dfb1642867ab21 Mon Sep 17 00:00:00 2001 From: ludamad Date: Mon, 4 Dec 2023 23:46:15 +0000 Subject: [PATCH 07/47] fix: change to /bin/bash --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c406443066f..681e190609b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -236,7 +236,7 @@ jobs: name: "Test" command: | export TAG_POSTFIX=ultra-honk-bench - cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 /bin/bash -c "cd build && ./bin/ultra_honk_bench" + cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 x86_64 /bin/bash -c "cd build && ./bin/ultra_honk_bench" barretenberg-honk-tests: docker: From 1090a9888d9c9422a5747aacea87441736599398 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:01:46 +0000 Subject: [PATCH 08/47] meh. --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 681e190609b..7f1b1be304f 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -236,7 +236,7 @@ jobs: name: "Test" command: | export TAG_POSTFIX=ultra-honk-bench - cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 x86_64 /bin/bash -c "cd build && ./bin/ultra_honk_bench" + cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 x86_64 /bin/bash -c "cd build && ls" barretenberg-honk-tests: docker: From 3fdbd144783cd8db663b4cb0b2f1a29751bf9612 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:14:19 +0000 Subject: [PATCH 09/47] Janky attempts --- .circleci/config.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 7f1b1be304f..166e3b97522 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -236,7 +236,13 @@ jobs: name: "Test" command: | export TAG_POSTFIX=ultra-honk-bench - cond_spot_run_script barretenberg-x86_64-linux-clang-assert 32 x86_64 /bin/bash -c "cd build && ls" + cond_spot_run_container barretenberg-x86_64-linux-clang-assert 32 /bin/bash -c "\ + set -xe; \ + cd /usr/src/barretenberg/cpp/srs_db; \ + ./download_ignition.sh 1; \ + cd /usr/src/barretenberg/cpp/build; \ + ./bin/grumpkin_srs_gen 1048576; \ + ./bin/ultra_honk_bench barretenberg-honk-tests: docker: From bcfaecc8cff67d3a8dab22aed74ec9d43427a862 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:14:56 +0000 Subject: [PATCH 10/47] Janky attempts --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 166e3b97522..69d87337bf1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -242,7 +242,7 @@ jobs: ./download_ignition.sh 1; \ cd /usr/src/barretenberg/cpp/build; \ ./bin/grumpkin_srs_gen 1048576; \ - ./bin/ultra_honk_bench + ./bin/ultra_honk_bench" barretenberg-honk-tests: docker: From a263c0aee74ef92b6c60874888b31716c20e6d13 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:15:49 +0000 Subject: [PATCH 11/47] Janky attempts --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 69d87337bf1..ae5e09bc830 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -235,7 +235,7 @@ jobs: - run: name: "Test" command: | - export TAG_POSTFIX=ultra-honk-bench + export TAG_POSTFIX=ultra-honk-bench-2 cond_spot_run_container barretenberg-x86_64-linux-clang-assert 32 /bin/bash -c "\ set -xe; \ cd /usr/src/barretenberg/cpp/srs_db; \ From a8d5e2112c176c270508058ac28c50a85fb1e09a Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:30:11 +0000 Subject: [PATCH 12/47] Add script for ultra_honk_bench.sh --- .circleci/config.yml | 9 +-------- barretenberg/cpp/scripts/ci/ultra_honk_bench.sh | 11 +++++++++++ 2 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 barretenberg/cpp/scripts/ci/ultra_honk_bench.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index ae5e09bc830..94a2af1c16e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -235,14 +235,7 @@ jobs: - run: name: "Test" command: | - export TAG_POSTFIX=ultra-honk-bench-2 - cond_spot_run_container barretenberg-x86_64-linux-clang-assert 32 /bin/bash -c "\ - set -xe; \ - cd /usr/src/barretenberg/cpp/srs_db; \ - ./download_ignition.sh 1; \ - cd /usr/src/barretenberg/cpp/build; \ - ./bin/grumpkin_srs_gen 1048576; \ - ./bin/ultra_honk_bench" + cond_spot_run_container barretenberg-x86_64-linux-clang-assert 32 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh barretenberg-honk-tests: docker: diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh new file mode 100644 index 00000000000..55fbafbc0a4 --- /dev/null +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -0,0 +1,11 @@ +#!/bin/bash +[ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace +set -eu + +# enter script folder +cd "$(dirname $0)" +cd ../srs_db +./download_ignition.sh 1 +cd ../build +./bin/grumpkin_srs_gen 1048576 +./bin/ultra_honk_bench \ No newline at end of file From b47c911bd186da8967450499ed7d1b97789482c9 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:33:59 +0000 Subject: [PATCH 13/47] executable flag --- barretenberg/cpp/scripts/ci/ultra_honk_bench.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 barretenberg/cpp/scripts/ci/ultra_honk_bench.sh diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh old mode 100644 new mode 100755 From 791a4920d45d24c8d0c6007500071adad4874474 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:34:54 +0000 Subject: [PATCH 14/47] reqs --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 94a2af1c16e..e57d9222241 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1062,7 +1062,7 @@ workflows: - barretenberg-x86_64-linux-clang-fuzzing: *defaults - barretenberg-wasm-linux-clang: *defaults - barretenberg-x86_64-linux-clang-sol: *defaults - - barretenberg-ultra-honk-bench: *defaults + - barretenberg-ultra-honk-bench: *bb_test - barretenberg-proof-system-tests: *bb_test - barretenberg-honk-tests: *bb_test - barretenberg-dsl-tests: *bb_test From df03cd26551c0d4806d60362bbb58dc0eb114e9b Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:46:24 +0000 Subject: [PATCH 15/47] fix: include scripts/ci in ci build --- .../Dockerfile.x86_64-linux-clang-assert | 19 ++++++++++--------- .../dockerfiles/Dockerfile.x86_64-linux-clang | 15 ++++++++------- .../Dockerfile.x86_64-linux-clang-assert | 15 ++++++++------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert index a44442d0bf4..f3425ac98b4 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert @@ -3,15 +3,15 @@ FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ - build-base \ - clang15 \ - cmake \ - ninja \ - git \ - curl \ - perl \ - clang-extra-tools \ - bash + build-base \ + clang15 \ + cmake \ + ninja \ + git \ + curl \ + perl \ + clang-extra-tools \ + bash WORKDIR /usr/src/barretenberg/cpp COPY . . # Build everything to ensure everything builds. All tests will be run from the result of this build. @@ -19,5 +19,6 @@ RUN ./format.sh check && cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert FROM alpine:3.17 RUN apk update && apk add curl libstdc++ +COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index c0eca292e40..fff73b0cc22 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -4,13 +4,13 @@ FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ - build-base \ - clang15 \ - cmake \ - ninja \ - git \ - curl \ - perl + build-base \ + clang15 \ + cmake \ + ninja \ + git \ + curl \ + perl COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp COPY . . @@ -18,5 +18,6 @@ COPY . . RUN cmake --preset default && cmake --build --preset default FROM alpine:3.17 +COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert index 9095d9d056a..bf9f91c84f3 100644 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert +++ b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert @@ -4,13 +4,13 @@ FROM alpine:3.17 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ - build-base \ - clang15 \ - cmake \ - ninja \ - git \ - curl \ - perl + build-base \ + clang15 \ + cmake \ + ninja \ + git \ + curl \ + perl COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp WORKDIR /usr/src/circuits/cpp COPY . . @@ -19,6 +19,7 @@ RUN cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert -DCI=ON && cmake --b FROM alpine:3.17 RUN apk update && apk add curl bash libstdc++ +COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures COPY --from=builder /usr/src/circuits/cpp/scripts /usr/src/circuits/cpp/scripts From 94fefdc6498d5cba5aaf7698d64e4339ce26c2d8 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:48:13 +0000 Subject: [PATCH 16/47] reqs --- .circleci/config.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e57d9222241..0c5c9850d97 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -235,7 +235,7 @@ jobs: - run: name: "Test" command: | - cond_spot_run_container barretenberg-x86_64-linux-clang-assert 32 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh + cond_spot_run_container barretenberg-x86_64-linux-clang 32 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh barretenberg-honk-tests: docker: @@ -1062,7 +1062,10 @@ workflows: - barretenberg-x86_64-linux-clang-fuzzing: *defaults - barretenberg-wasm-linux-clang: *defaults - barretenberg-x86_64-linux-clang-sol: *defaults - - barretenberg-ultra-honk-bench: *bb_test + - barretenberg-ultra-honk-bench: + requires: + - barretenberg-x86_64-linux-clang + <<: *defaults - barretenberg-proof-system-tests: *bb_test - barretenberg-honk-tests: *bb_test - barretenberg-dsl-tests: *bb_test From 643696c48dd13e8d6a04aba878e622ec0abfe62f Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 00:59:33 +0000 Subject: [PATCH 17/47] Build ultra honk in linux clang --- .../dockerfiles/Dockerfile.x86_64-linux-clang | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 79ce703bf62..2f7f82b40b4 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -2,22 +2,21 @@ FROM alpine:3.18 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ - build-base \ - clang16 \ - cmake \ - ninja \ - git \ - curl \ - perl + build-base \ + clang16 \ + cmake \ + ninja \ + git \ + curl \ + perl WORKDIR /usr/src/barretenberg/cpp COPY . . -# Build bb binary. Everything else is built as part linux-clang-assert. -RUN cmake --preset default && cmake --build --preset default --target bb +# Build bb binary and ultra_honk_bench. Everything else is built as part linux-clang-assert. +RUN cmake --preset default && cmake --build --preset default --target bb --target ultra_honk_bench FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp -COPY . . -COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb -# Copy libs for consuming projects. -COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a -COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libenv.a /usr/src/barretenberg/cpp/build/lib/libenv.a \ No newline at end of file +RUN apk update && apk add curl libstdc++ +COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci +COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db +COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file From 0a4f4915032e33ce715d0e3e59e20b75ce2c338c Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 01:03:27 +0000 Subject: [PATCH 18/47] Update --- barretenberg/cpp/.dockerignore | 1 + barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 5 +---- .../cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert | 1 - 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/barretenberg/cpp/.dockerignore b/barretenberg/cpp/.dockerignore index 2f64b1972b1..8a3ab9f3fa7 100644 --- a/barretenberg/cpp/.dockerignore +++ b/barretenberg/cpp/.dockerignore @@ -18,5 +18,6 @@ # Needed scripts. !scripts/install-wasi-sdk.sh !scripts/strip-wasm.sh +!scripts/ci !./.clang-format !./format.sh \ No newline at end of file diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 2f7f82b40b4..09d052c4134 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -16,7 +16,4 @@ RUN cmake --preset default && cmake --build --preset default --target bb --targe FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp -RUN apk update && apk add curl libstdc++ -COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file +COPY . . \ No newline at end of file diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert index f3425ac98b4..d72709139ce 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert @@ -19,6 +19,5 @@ RUN ./format.sh check && cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert FROM alpine:3.17 RUN apk update && apk add curl libstdc++ -COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file From 0f2e89a42ee822f60f5fa010f26d27e3253d2dc5 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 01:27:25 +0000 Subject: [PATCH 19/47] fix path --- barretenberg/cpp/scripts/ci/ultra_honk_bench.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index 55fbafbc0a4..f6330f0a6c1 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -4,7 +4,7 @@ set -eu # enter script folder cd "$(dirname $0)" -cd ../srs_db +cd ../../srs_db ./download_ignition.sh 1 cd ../build ./bin/grumpkin_srs_gen 1048576 From 2792b63613c7a9ea0f37a10572cfdf895dfc2222 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 01:29:29 +0000 Subject: [PATCH 20/47] fix reqs --- barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 1 + 1 file changed, 1 insertion(+) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 09d052c4134..630d3edee4e 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -16,4 +16,5 @@ RUN cmake --preset default && cmake --build --preset default --target bb --targe FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp +RUN apk update && apk add curl bash libstdc++ COPY . . \ No newline at end of file From b0b4c8c6cac2cbcc44b3924dc68e65d948a71b51 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 01:36:32 +0000 Subject: [PATCH 21/47] Build grumpkin srs gen in linux clang --- .../cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 630d3edee4e..077aa390e60 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -11,10 +11,14 @@ RUN apk update \ perl WORKDIR /usr/src/barretenberg/cpp COPY . . -# Build bb binary and ultra_honk_bench. Everything else is built as part linux-clang-assert. -RUN cmake --preset default && cmake --build --preset default --target bb --target ultra_honk_bench +# Build bb binary and targets needed for benchmarking. +# Everything else is built as part linux-clang-assert. +# Benchmark targets want to run without asserts, so get bundled with bb. +RUN cmake --preset default && cmake --build --preset default --target bb --target ultra_honk_bench --target grumpkin_srs_gen FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp RUN apk update && apk add curl bash libstdc++ -COPY . . \ No newline at end of file +COPY . . +COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db +COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file From 8f252136b1375caffb545c5e9dafc93336fa9d64 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 19:52:49 +0000 Subject: [PATCH 22/47] Try a simple benchmark --- .../dockerfiles/Dockerfile.x86_64-linux-clang | 8 +++--- .../cpp/scripts/ci/ultra_honk_bench.sh | 2 +- .../benchmark/honk_bench/CMakeLists.txt | 5 +++- .../honk_bench/ultra_honk.simple.cpp | 21 +++++++++++++++ .../dockerfiles/Dockerfile.wasm-linux-clang | 14 ---------- .../Dockerfile.wasm-linux-clang-assert | 16 ------------ .../dockerfiles/Dockerfile.x86_64-linux-clang | 23 ---------------- .../Dockerfile.x86_64-linux-clang-assert | 26 ------------------- .../Dockerfile.x86_64-linux-clang-tidy | 22 ---------------- 9 files changed, 31 insertions(+), 106 deletions(-) create mode 100644 barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp delete mode 100644 circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang delete mode 100644 circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert delete mode 100644 circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang delete mode 100644 circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert delete mode 100644 circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 077aa390e60..3af4d7e90f4 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -13,12 +13,14 @@ WORKDIR /usr/src/barretenberg/cpp COPY . . # Build bb binary and targets needed for benchmarking. # Everything else is built as part linux-clang-assert. -# Benchmark targets want to run without asserts, so get bundled with bb. -RUN cmake --preset default && cmake --build --preset default --target bb --target ultra_honk_bench --target grumpkin_srs_gen +# Benchmark targets want to run without asserts, so get built alongside bb. +RUN cmake --preset default && cmake --build --preset default --target bb --target ultra_honk_simple_bench --target grumpkin_srs_gen FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp RUN apk update && apk add curl bash libstdc++ COPY . . + COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin \ No newline at end of file +COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin +RUN HARDWARE_CONCURRENCY=128 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh \ No newline at end of file diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index f6330f0a6c1..24ce90181f0 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -8,4 +8,4 @@ cd ../../srs_db ./download_ignition.sh 1 cd ../build ./bin/grumpkin_srs_gen 1048576 -./bin/ultra_honk_bench \ No newline at end of file +time ./bin/ultra_honk_simple_bench \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt index 1de8756be42..8c0bc2940f5 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt @@ -22,4 +22,7 @@ foreach(BENCHMARK_SOURCE ${BENCHMARK_SOURCES}) add_executable(${BENCHMARK_NAME}_bench main.bench.cpp ${BENCHMARK_SOURCE} benchmark_utilities.hpp) target_link_libraries(${BENCHMARK_NAME}_bench ${LINKED_LIBRARIES}) add_custom_target(run_${BENCHMARK_NAME} COMMAND ${BENCHMARK_NAME} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -endforeach() \ No newline at end of file +endforeach() + +add_executable(ultra_honk_simple_bench ultra_honk.simple.cpp benchmark_utilities.hpp) +target_link_libraries(ultra_honk_simple_bench ${LINKED_LIBRARIES}) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp new file mode 100644 index 00000000000..fcee8dd6a9a --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp @@ -0,0 +1,21 @@ +#include "barretenberg/benchmark/honk_bench/benchmark_utilities.hpp" +#include "barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp" +#include "barretenberg/ultra_honk/ultra_composer.hpp" + +using namespace benchmark; +using namespace proof_system; + +int main() +{ + barretenberg::srs::init_crs_factory("../srs_db/ignition"); + + honk::UltraComposer composer; + size_t log2_of_gates = 20; + auto prover = bench_utils::get_prover( + composer, &bench_utils::generate_basic_arithmetic_circuit, log2_of_gates); + for (int i = 0; i < 10; i++) { + // Construct proof + auto proof = prover.construct_proof(); + } + return 0; +} \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang deleted file mode 100644 index eb623c554a6..00000000000 --- a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang +++ /dev/null @@ -1,14 +0,0 @@ -FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-wasm-linux-clang as bb - -FROM ubuntu:lunar AS builder -RUN apt-get update && apt-get install -y build-essential wget git libssl-dev cmake ninja-build curl binaryen -COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp -WORKDIR /usr/src/circuits/cpp -COPY . . -RUN cmake --preset wasm && cmake --build --preset wasm --target aztec3-circuits.wasm - -FROM scratch -COPY --from=builder /usr/src/barretenberg/cpp/build-wasm/bin/barretenberg.wasm /usr/src/barretenberg/cpp/build-wasm/bin/primitives.wasm -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm /usr/src/circuits/cpp/build-wasm/bin/aztec3-circuits.wasm -COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures diff --git a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert b/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert deleted file mode 100644 index 1c996f61594..00000000000 --- a/circuits/cpp/dockerfiles/Dockerfile.wasm-linux-clang-assert +++ /dev/null @@ -1,16 +0,0 @@ -FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-wasm-linux-clang as bb - -FROM ubuntu:lunar AS builder -RUN apt-get update && apt-get install -y build-essential git libssl-dev cmake ninja-build curl binaryen -COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp -WORKDIR /usr/src/circuits/cpp -COPY . . -RUN cmake --preset wasm && cmake --build --preset wasm - -FROM ubuntu:lunar -RUN apt-get update && apt-get install -y xz-utils curl -RUN curl https://wasmtime.dev/install.sh -sSf | bash /dev/stdin --version v3.0.1 -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures -COPY --from=builder /usr/src/circuits/cpp/scripts /usr/src/circuits/cpp/scripts -COPY --from=builder /usr/src/circuits/cpp/build-wasm/bin/*_tests /usr/src/circuits/cpp/build-wasm/bin/ diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang deleted file mode 100644 index fff73b0cc22..00000000000 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ /dev/null @@ -1,23 +0,0 @@ -FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang as bb - -FROM alpine:3.17 AS builder -RUN apk update \ - && apk upgrade \ - && apk add --no-cache \ - build-base \ - clang15 \ - cmake \ - ninja \ - git \ - curl \ - perl -COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp -WORKDIR /usr/src/circuits/cpp -COPY . . -# Build the entire project, as we want to check everything builds under clang -RUN cmake --preset default && cmake --build --preset default - -FROM alpine:3.17 -COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert deleted file mode 100644 index bf9f91c84f3..00000000000 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-assert +++ /dev/null @@ -1,26 +0,0 @@ -FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang as bb - -FROM alpine:3.17 AS builder -RUN apk update \ - && apk upgrade \ - && apk add --no-cache \ - build-base \ - clang15 \ - cmake \ - ninja \ - git \ - curl \ - perl -COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp -WORKDIR /usr/src/circuits/cpp -COPY . . -# Build everything to ensure everything builds. All tests will be run from the result of this build. -RUN cmake --preset default -DCMAKE_BUILD_TYPE=RelWithAssert -DCI=ON && cmake --build --preset default - -FROM alpine:3.17 -RUN apk update && apk add curl bash libstdc++ -COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures /usr/src/circuits/cpp/src/aztec3/circuits/kernel/private/fixtures -COPY --from=builder /usr/src/circuits/cpp/scripts /usr/src/circuits/cpp/scripts -COPY --from=builder /usr/src/circuits/cpp/build/bin/*_tests /usr/src/circuits/cpp/build/bin/ \ No newline at end of file diff --git a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy b/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy deleted file mode 100644 index ca0adedbafe..00000000000 --- a/circuits/cpp/dockerfiles/Dockerfile.x86_64-linux-clang-tidy +++ /dev/null @@ -1,22 +0,0 @@ -FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang as bb - -FROM alpine:3.17 AS builder -RUN apk update \ - && apk upgrade \ - && apk add --no-cache \ - build-base \ - clang15 \ - clang15-extra-tools \ - openmp-dev \ - cmake \ - ninja \ - git \ - curl \ - perl \ - bash \ - python3 -COPY --from=bb /usr/src/barretenberg/cpp /usr/src/barretenberg/cpp -WORKDIR /usr/src/circuits/cpp -COPY . . -# Configure cmake and check if code is tidy -RUN ./scripts/tidy.sh fix \ No newline at end of file From 1a16e10a123195002fe13522bf7cced00310636d Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 20:10:26 +0000 Subject: [PATCH 23/47] temporary simple docker sanity test --- .../honk_bench/ultra_honk.simple.cpp | 78 +++++++++++++++---- 1 file changed, 63 insertions(+), 15 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp index fcee8dd6a9a..2df6d2445ce 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp @@ -1,21 +1,69 @@ -#include "barretenberg/benchmark/honk_bench/benchmark_utilities.hpp" -#include "barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp" -#include "barretenberg/ultra_honk/ultra_composer.hpp" +#include "barretenberg/numeric/uint256/uint256.hpp" +#include +#include +#include +#include -using namespace benchmark; -using namespace proof_system; +// Function for heavy math computation +static numeric::uint256_t heavyMathOperation(size_t n) +{ + numeric::uint256_t result = 1; + for (size_t i = 1; i <= n; ++i) { + result *= i; + // Additional computation layer + for (size_t j = 0; j <= n; ++j) { + result += j; + } + } + return result; +} + +static std::mutex mutex; + +// Thread function +static void threadFunction(int threadId, size_t n) +{ + // Start timing + auto start = std::chrono::high_resolution_clock::now(); + + auto result = heavyMathOperation(n); + + // End timing + auto end = std::chrono::high_resolution_clock::now(); + // Calculate elapsed time + auto duration = std::chrono::duration_cast(end - start); + + mutex.lock(); + std::cout << "Thread " << threadId << " result: " << result << std::endl; + std::cout << "Elapsed time: " << duration.count() << " ms" << std::endl; + mutex.unlock(); +} int main() { - barretenberg::srs::init_crs_factory("../srs_db/ignition"); - - honk::UltraComposer composer; - size_t log2_of_gates = 20; - auto prover = bench_utils::get_prover( - composer, &bench_utils::generate_basic_arithmetic_circuit, log2_of_gates); - for (int i = 0; i < 10; i++) { - // Construct proof - auto proof = prover.construct_proof(); + // Start timing + auto start = std::chrono::high_resolution_clock::now(); + const int numThreads = 128; + + // Creating threads + std::vector threads; + threads.reserve(numThreads); + for (int i = 0; i < numThreads; ++i) { + threads.emplace_back(threadFunction, i, 100000 + i); + } + + // Joining threads + for (auto& th : threads) { + th.join(); } + // End timing + auto end = std::chrono::high_resolution_clock::now(); + // Calculate elapsed time + auto duration = std::chrono::duration_cast(end - start); + + mutex.lock(); + std::cout << "Total time: " << duration.count() << " ms" << std::endl; + mutex.unlock(); + return 0; -} \ No newline at end of file +} From 4f653d367b79f29c4f481d6f85bddf0214d997af Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 20:17:02 +0000 Subject: [PATCH 24/47] temporary simple docker sanity test --- .../src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp index 2df6d2445ce..fa1a1395fe5 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp @@ -64,6 +64,5 @@ int main() mutex.lock(); std::cout << "Total time: " << duration.count() << " ms" << std::endl; mutex.unlock(); - return 0; } From 2a31a935ec4aed8e2652e3c9fcd23b4190f777f4 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 5 Dec 2023 22:23:24 +0000 Subject: [PATCH 25/47] timing --- .../dockerfiles/Dockerfile.x86_64-linux-clang | 2 +- .../cpp/scripts/ci/ultra_honk_bench.sh | 2 +- .../honk_bench/ultra_honk.simple.cpp | 24 ++++++++++--------- .../honk_bench/ultra_honk_rounds.bench.cpp | 10 ++++---- .../benchmark/pippenger_bench/main.cpp | 10 ++++++-- .../common/parallel_for_mutex_pool.cpp | 13 +++++++++- .../library/grand_product_library.hpp | 5 ++-- 7 files changed, 43 insertions(+), 23 deletions(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 3af4d7e90f4..0152d671330 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -14,7 +14,7 @@ COPY . . # Build bb binary and targets needed for benchmarking. # Everything else is built as part linux-clang-assert. # Benchmark targets want to run without asserts, so get built alongside bb. -RUN cmake --preset default && cmake --build --preset default --target bb --target ultra_honk_simple_bench --target grumpkin_srs_gen +RUN cmake --preset default && cmake --build --preset default --target ultra_plonk_rounds_bench --target ultra_honk_rounds_bench --target bb --target ultra_honk_bench --target ultra_plonk_bench --target grumpkin_srs_gen --target widget_bench --target relations_bench FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index 24ce90181f0..453213c7666 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -8,4 +8,4 @@ cd ../../srs_db ./download_ignition.sh 1 cd ../build ./bin/grumpkin_srs_gen 1048576 -time ./bin/ultra_honk_simple_bench \ No newline at end of file +time ./bin/ultra_honk_rounds_bench \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp index fa1a1395fe5..8372e996ddc 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp @@ -1,3 +1,4 @@ +#include "barretenberg/common/thread.hpp" #include "barretenberg/numeric/uint256/uint256.hpp" #include #include @@ -21,7 +22,7 @@ static numeric::uint256_t heavyMathOperation(size_t n) static std::mutex mutex; // Thread function -static void threadFunction(int threadId, size_t n) +static void threadFunction(size_t threadId, size_t n) { // Start timing auto start = std::chrono::high_resolution_clock::now(); @@ -45,17 +46,18 @@ int main() auto start = std::chrono::high_resolution_clock::now(); const int numThreads = 128; - // Creating threads - std::vector threads; - threads.reserve(numThreads); - for (int i = 0; i < numThreads; ++i) { - threads.emplace_back(threadFunction, i, 100000 + i); - } + // // Creating threads + // std::vector threads; + // threads.reserve(numThreads); + // for (int i = 0; i < numThreads; ++i) { + // threads.emplace_back(threadFunction, i, 100000 + i); + // } + parallel_for(numThreads, [&](size_t i) { threadFunction(i, 100000 + i); }); - // Joining threads - for (auto& th : threads) { - th.join(); - } + // // Joining threads + // for (auto& th : threads) { + // th.join(); + // } // End timing auto end = std::chrono::high_resolution_clock::now(); // Calculate elapsed time diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp index 46642345ef4..1b9d8b72904 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp @@ -62,9 +62,9 @@ BBERG_PROFILE static void test_round(State& state, size_t index) noexcept // Fast rounds take a long time to benchmark because of how we compute statistical significance. // Limit to one iteration so we don't spend a lot of time redoing full proofs just to measure this part. -ROUND_BENCHMARK(PREAMBLE)->Iterations(1); -ROUND_BENCHMARK(WIRE_COMMITMENTS)->Iterations(1); -ROUND_BENCHMARK(SORTED_LIST_ACCUMULATOR)->Iterations(1); +// ROUND_BENCHMARK(PREAMBLE)->Iterations(1); +// ROUND_BENCHMARK(WIRE_COMMITMENTS)->Iterations(1); +// ROUND_BENCHMARK(SORTED_LIST_ACCUMULATOR)->Iterations(1); ROUND_BENCHMARK(GRAND_PRODUCT_COMPUTATION)->Iterations(1); -ROUND_BENCHMARK(RELATION_CHECK); -ROUND_BENCHMARK(ZEROMORPH); +// ROUND_BENCHMARK(RELATION_CHECK); +// ROUND_BENCHMARK(ZEROMORPH); diff --git a/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp b/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp index 3bcd6b920a1..85024ba6605 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/pippenger_bench/main.cpp @@ -3,6 +3,10 @@ #include "barretenberg/ecc/scalar_multiplication/scalar_multiplication.hpp" #include "barretenberg/polynomials/polynomial_arithmetic.hpp" #include "barretenberg/srs/factories/file_crs_factory.hpp" + +#include "barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp" +#include "barretenberg/ultra_honk/ultra_composer.hpp" + #include #include @@ -42,8 +46,6 @@ constexpr size_t NUM_POINTS = 1 << 16; std::vector scalars; static barretenberg::evaluation_domain small_domain; static barretenberg::evaluation_domain large_domain; -auto reference_string = - std::make_shared>(NUM_POINTS, "../srs_db/ignition"); const auto init = []() { small_domain = barretenberg::evaluation_domain(NUM_POINTS); @@ -63,6 +65,9 @@ const auto init = []() { }; // constexpr double add_to_mixed_add_complexity = 1.36; +auto reference_string = + std::make_shared>(NUM_POINTS, "../srs_db/ignition"); + int pippenger() { scalar_multiplication::pippenger_runtime_state state(NUM_POINTS); @@ -98,6 +103,7 @@ int coset_fft_regular() int main() { + barretenberg::srs::init_crs_factory("../srs_db/ignition"); std::cout << "initializing" << std::endl; init(); std::cout << "executing normal fft" << std::endl; diff --git a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp index d3a1afac509..54d01673aa9 100644 --- a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp +++ b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp @@ -1,6 +1,7 @@ #include "log.hpp" #include "thread.hpp" #include +#include // Include chrono for timing #include #include #include @@ -124,6 +125,16 @@ void parallel_for_mutex_pool(size_t num_iterations, const std::function(end_time - start_time).count(); // Calculate duration + + // Log the time taken for this iteration + info("Iteration ", i, " took ", duration, " microseconds."); + }); // info("done"); } diff --git a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp index e1c2ac20115..622a7bb7c1b 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp @@ -57,12 +57,13 @@ void compute_grand_product(const size_t circuit_size, // Allocate numerator/denominator polynomials that will serve as scratch space // TODO(zac) we can re-use the permutation polynomial as the numerator polynomial. Reduces readability - Polynomial numerator = Polynomial{ circuit_size }; - Polynomial denominator = Polynomial{ circuit_size }; + Polynomial numerator{ circuit_size }; + Polynomial denominator{ circuit_size }; // Step (1) // Populate `numerator` and `denominator` with the algebra described by Relation const size_t num_threads = circuit_size >= get_num_cpus_pow2() ? get_num_cpus_pow2() : 1; + std::cout << "THREADS " << num_threads << std::endl; const size_t block_size = circuit_size / num_threads; auto full_polynomial_pointers = full_polynomials.get_all(); parallel_for(num_threads, [&](size_t thread_idx) { From 0bc1011fde48d1371bb13619b3737c28c85a7d8c Mon Sep 17 00:00:00 2001 From: ludamad Date: Wed, 6 Dec 2023 17:15:31 +0000 Subject: [PATCH 26/47] Temp instrumenting --- .../common/parallel_for_mutex_pool.cpp | 20 +++++++++---------- .../library/grand_product_library.hpp | 9 +++++---- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp index 54d01673aa9..2aebb3b5dff 100644 --- a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp +++ b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp @@ -122,19 +122,19 @@ void ThreadPool::worker_loop(size_t /*unused*/) */ void parallel_for_mutex_pool(size_t num_iterations, const std::function& func) { + static int porcupine = 0; static ThreadPool pool(get_num_cpus() - 1); // info("starting job with iterations: ", num_iterations); - pool.start_tasks(num_iterations, [&](size_t i) { - auto start_time = std::chrono::high_resolution_clock::now(); // Start timing - func(i); + auto start_time = std::chrono::high_resolution_clock::now(); // Start timing - auto end_time = std::chrono::high_resolution_clock::now(); // End timing - auto duration = - std::chrono::duration_cast(end_time - start_time).count(); // Calculate duration - - // Log the time taken for this iteration - info("Iteration ", i, " took ", duration, " microseconds."); - }); + pool.start_tasks(num_iterations, func); // info("done"); + + auto end_time = std::chrono::high_resolution_clock::now(); // End timing + auto duration = + std::chrono::duration_cast(end_time - start_time).count(); // Calculate duration + + // Log the time taken for this iteration + info("Iteration ", porcupine++, " took ", duration, " microseconds.\n"); } diff --git a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp index 622a7bb7c1b..fd96cd816e5 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp @@ -70,10 +70,11 @@ void compute_grand_product(const size_t circuit_size, const size_t start = thread_idx * block_size; const size_t end = (thread_idx + 1) * block_size; for (size_t i = start; i < end; ++i) { - typename Flavor::AllValues evaluations; - auto evaluations_pointer = evaluations.get_all(); - for (size_t k = 0; k < Flavor::NUM_ALL_ENTITIES; ++k) { - evaluations_pointer[k] = full_polynomial_pointers[k].size() > i ? full_polynomial_pointers[k][i] : 0; + typename Flavor::AllValues evaluations{}; + size_t k = 0; + for (auto& eval : evaluations.get_all()) { + eval = full_polynomial_pointers[k].size() > i ? full_polynomial_pointers[k][i] : 0; + k++; } numerator[i] = GrandProdRelation::template compute_grand_product_numerator( evaluations, relation_parameters); From 9db75aeede278b376cd55de45249c15fccf6046f Mon Sep 17 00:00:00 2001 From: ludamad Date: Fri, 15 Dec 2023 19:43:21 +0000 Subject: [PATCH 27/47] get_all work --- .../proof_system/library/grand_product_library.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp index ae990391090..abfffa6b40f 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp @@ -70,9 +70,10 @@ void compute_grand_product(const size_t circuit_size, parallel_for(num_threads, [&](size_t thread_idx) { const size_t start = thread_idx * block_size; const size_t end = (thread_idx + 1) * block_size; + typename Flavor::AllValues evaluations; + auto evaluations_view = evaluations.get_all(); for (size_t i = start; i < end; ++i) { - typename Flavor::AllValues evaluations; - for (auto [eval, full_poly] : zip_view(evaluations.get_all(), full_polynomials_view)) { + for (auto [eval, full_poly] : zip_view(evaluations_view, full_polynomials_view)) { eval = full_poly.size() > i ? full_poly[i] : 0; } numerator[i] = GrandProdRelation::template compute_grand_product_numerator( From 8b7b4ae9fffc7fcea84ee8c0fe563a2dcdfcb51b Mon Sep 17 00:00:00 2001 From: ludamad Date: Fri, 5 Jan 2024 21:56:10 +0000 Subject: [PATCH 28/47] Docker interactive --- .../dockerfiles/Dockerfile.x86_64-linux-clang | 2 +- .../dockerfiles/interactive/Dockerfile.alpine | 20 ++++++++++++++++ .../dockerfiles/interactive/Dockerfile.ubuntu | 24 +++++++++++++++++++ .../cpp/scripts/ci/ultra_honk_bench.sh | 2 +- .../cpp/scripts/docker_interactive.sh | 16 +++++++++++++ .../common/parallel_for_mutex_pool.cpp | 17 +++++++------ .../barretenberg/sumcheck/sumcheck_round.hpp | 3 ++- barretenberg/cpp/srs_db/download_grumpkin.sh | 2 +- 8 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 barretenberg/cpp/dockerfiles/interactive/Dockerfile.alpine create mode 100644 barretenberg/cpp/dockerfiles/interactive/Dockerfile.ubuntu create mode 100755 barretenberg/cpp/scripts/docker_interactive.sh diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 0152d671330..eddfdfd2b71 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -22,5 +22,5 @@ RUN apk update && apk add curl bash libstdc++ COPY . . COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin +#COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin RUN HARDWARE_CONCURRENCY=128 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh \ No newline at end of file diff --git a/barretenberg/cpp/dockerfiles/interactive/Dockerfile.alpine b/barretenberg/cpp/dockerfiles/interactive/Dockerfile.alpine new file mode 100644 index 00000000000..23ce19a9dc9 --- /dev/null +++ b/barretenberg/cpp/dockerfiles/interactive/Dockerfile.alpine @@ -0,0 +1,20 @@ +# Use Alpine 3.18 as the base image +FROM alpine:3.18 + +# Install necessary packages +RUN apk update && apk add \ + bash \ + build-base \ + clang16 \ + cmake \ + ninja \ + git \ + curl \ + perl \ + libstdc++ + +# Set the working directory in the container +WORKDIR /usr/src/barretenberg/cpp + +# Set bash as the default command to keep the container running interactively +CMD ["/bin/bash"] diff --git a/barretenberg/cpp/dockerfiles/interactive/Dockerfile.ubuntu b/barretenberg/cpp/dockerfiles/interactive/Dockerfile.ubuntu new file mode 100644 index 00000000000..ac58660df46 --- /dev/null +++ b/barretenberg/cpp/dockerfiles/interactive/Dockerfile.ubuntu @@ -0,0 +1,24 @@ +FROM ubuntu:lunar + +RUN apt update && apt install -y \ + build-essential \ + curl \ + git \ + cmake \ + lsb-release \ + wget \ + software-properties-common \ + gnupg \ + ninja-build \ + npm \ +\ + libssl-dev \ + jq \ + bash \ + libstdc++6 + +WORKDIR /usr/src/barretenberg/cpp + +RUN wget https://apt.llvm.org/llvm.sh && chmod +x llvm.sh && ./llvm.sh 16 + +CMD ["/bin/bash"] diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index 453213c7666..0c1d0a8d954 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -6,6 +6,6 @@ set -eu cd "$(dirname $0)" cd ../../srs_db ./download_ignition.sh 1 +./download_grumpkin.sh cd ../build -./bin/grumpkin_srs_gen 1048576 time ./bin/ultra_honk_rounds_bench \ No newline at end of file diff --git a/barretenberg/cpp/scripts/docker_interactive.sh b/barretenberg/cpp/scripts/docker_interactive.sh new file mode 100755 index 00000000000..2a38b1530cd --- /dev/null +++ b/barretenberg/cpp/scripts/docker_interactive.sh @@ -0,0 +1,16 @@ +# Script to enter a docker shell. +# This comes in two flavors, ubuntu and alpine. +# This mounts the current folder into the image, allowing for in-docker development. +# You then need to run cmake commands fresh to build. +# Ideally you can combine with a fresh clone of the repo to keep it persistently around, or move around build dirs as needed. +# This is useful for debugging issues like bb being slow on alpine or running into errors on a specific version of gcc. +# usage: ./docker_interactive.sh ubuntu or ./docker_interactive.sh alpine + +# Enter script directory. +set -eu +cd $(dirname $0) +# allows for 'alpine' or 'ubuntu' +ENVIRONMENT_KIND="${1:-alpine}" +DOCKERFILE="../dockerfiles/interactive/Dockerfile.$ENVIRONMENT_KIND" +docker build -t "env-$ENVIRONMENT_KIND" -f "$DOCKERFILE" . +docker run -it --mount type=bind,source=$(pwd)/..,target=/usr/src/barretenberg/cpp "env-$ENVIRONMENT_KIND" \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp index 2aebb3b5dff..7b804cb8e94 100644 --- a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp +++ b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp @@ -122,19 +122,22 @@ void ThreadPool::worker_loop(size_t /*unused*/) */ void parallel_for_mutex_pool(size_t num_iterations, const std::function& func) { - static int porcupine = 0; + // static int porcupine = 0; static ThreadPool pool(get_num_cpus() - 1); // info("starting job with iterations: ", num_iterations); - auto start_time = std::chrono::high_resolution_clock::now(); // Start timing + // auto start_time = std::chrono::high_resolution_clock::now(); // Start timing pool.start_tasks(num_iterations, func); // info("done"); - auto end_time = std::chrono::high_resolution_clock::now(); // End timing - auto duration = - std::chrono::duration_cast(end_time - start_time).count(); // Calculate duration + // auto end_time = std::chrono::high_resolution_clock::now(); // End timing + // auto duration = + // std::chrono::duration_cast(end_time - start_time).count(); // Calculate duration - // Log the time taken for this iteration - info("Iteration ", porcupine++, " took ", duration, " microseconds.\n"); + // // Log the time taken for this iteration + // if (porcupine == 113) { + // abort(); + // } + // info("Iteration ", porcupine++, " took ", duration, " microseconds.\n"); } diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp index 2a52cd665f7..145521dca69 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp @@ -141,7 +141,8 @@ template class SumcheckProverRound { // For each edge_idx = 2i, we need to multiply the whole contribution by zeta^{2^{2i}} // This means that each univariate for each relation needs an extra multiplication. for (size_t edge_idx = start; edge_idx < end; edge_idx += 2) { - extend_edges(extended_edges[thread_idx], polynomials, edge_idx); + (void)polynomials; + // extend_edges(extended_edges[thread_idx], polynomials, edge_idx); // Update the pow polynomial's contribution c_l ⋅ ζ_{l+1}ⁱ for the next edge. FF pow_challenge = pow_challenges[edge_idx >> 1]; diff --git a/barretenberg/cpp/srs_db/download_grumpkin.sh b/barretenberg/cpp/srs_db/download_grumpkin.sh index c2eefc6c56c..fb59a1ec806 100755 --- a/barretenberg/cpp/srs_db/download_grumpkin.sh +++ b/barretenberg/cpp/srs_db/download_grumpkin.sh @@ -1,6 +1,6 @@ #!/bin/sh # TODO(https://github.com/AztecProtocol/barretenberg/issues/813) We don't *actually* download grumpkin yet. -# this just generates grumpkin points and puts in a place where run_acir_tests.sh expects it. +# this just generates grumpkin points and links in a place where run_acir_tests.sh expects it. # The above issue tracks the final pieces here. set -eu From b394a25a08a5c9bb7474e29290957b3a703bc717 Mon Sep 17 00:00:00 2001 From: ludamad Date: Fri, 5 Jan 2024 22:15:29 +0000 Subject: [PATCH 29/47] chore: reverts --- .../benchmark/honk_bench/CMakeLists.txt | 9 +-- .../honk_bench/ultra_honk.simple.cpp | 70 ------------------- .../honk_bench/ultra_honk_rounds.bench.cpp | 10 +-- .../common/parallel_for_mutex_pool.cpp | 14 ---- .../library/grand_product_library.hpp | 1 - .../barretenberg/sumcheck/sumcheck_round.hpp | 3 +- build-system/scripts/upload_logs_to_s3 | 2 +- scripts/ci/assemble_e2e_benchmark.sh | 4 +- 8 files changed, 10 insertions(+), 103 deletions(-) delete mode 100644 barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt index 154ac00faec..1de8756be42 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt @@ -1,8 +1,6 @@ # Each source represents a separate benchmark suite set(BENCHMARK_SOURCES standard_plonk.bench.cpp - goblin.bench.cpp - eccvm.bench.cpp ultra_honk.bench.cpp ultra_honk_rounds.bench.cpp ultra_plonk.bench.cpp @@ -12,11 +10,9 @@ set(BENCHMARK_SOURCES # Required libraries for benchmark suites set(LINKED_LIBRARIES ultra_honk - eccvm stdlib_sha256 stdlib_keccak stdlib_merkle_tree - stdlib_recursion benchmark::benchmark ) @@ -26,7 +22,4 @@ foreach(BENCHMARK_SOURCE ${BENCHMARK_SOURCES}) add_executable(${BENCHMARK_NAME}_bench main.bench.cpp ${BENCHMARK_SOURCE} benchmark_utilities.hpp) target_link_libraries(${BENCHMARK_NAME}_bench ${LINKED_LIBRARIES}) add_custom_target(run_${BENCHMARK_NAME} COMMAND ${BENCHMARK_NAME} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}) -endforeach() - -add_executable(ultra_honk_simple_bench ultra_honk.simple.cpp benchmark_utilities.hpp) -target_link_libraries(ultra_honk_simple_bench ${LINKED_LIBRARIES}) +endforeach() \ No newline at end of file diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp deleted file mode 100644 index 8372e996ddc..00000000000 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk.simple.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include "barretenberg/common/thread.hpp" -#include "barretenberg/numeric/uint256/uint256.hpp" -#include -#include -#include -#include - -// Function for heavy math computation -static numeric::uint256_t heavyMathOperation(size_t n) -{ - numeric::uint256_t result = 1; - for (size_t i = 1; i <= n; ++i) { - result *= i; - // Additional computation layer - for (size_t j = 0; j <= n; ++j) { - result += j; - } - } - return result; -} - -static std::mutex mutex; - -// Thread function -static void threadFunction(size_t threadId, size_t n) -{ - // Start timing - auto start = std::chrono::high_resolution_clock::now(); - - auto result = heavyMathOperation(n); - - // End timing - auto end = std::chrono::high_resolution_clock::now(); - // Calculate elapsed time - auto duration = std::chrono::duration_cast(end - start); - - mutex.lock(); - std::cout << "Thread " << threadId << " result: " << result << std::endl; - std::cout << "Elapsed time: " << duration.count() << " ms" << std::endl; - mutex.unlock(); -} - -int main() -{ - // Start timing - auto start = std::chrono::high_resolution_clock::now(); - const int numThreads = 128; - - // // Creating threads - // std::vector threads; - // threads.reserve(numThreads); - // for (int i = 0; i < numThreads; ++i) { - // threads.emplace_back(threadFunction, i, 100000 + i); - // } - parallel_for(numThreads, [&](size_t i) { threadFunction(i, 100000 + i); }); - - // // Joining threads - // for (auto& th : threads) { - // th.join(); - // } - // End timing - auto end = std::chrono::high_resolution_clock::now(); - // Calculate elapsed time - auto duration = std::chrono::duration_cast(end - start); - - mutex.lock(); - std::cout << "Total time: " << duration.count() << " ms" << std::endl; - mutex.unlock(); - return 0; -} diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp index e6a4fad8046..a406c1a8591 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/ultra_honk_rounds.bench.cpp @@ -62,9 +62,9 @@ BBERG_PROFILE static void test_round(State& state, size_t index) noexcept // Fast rounds take a long time to benchmark because of how we compute statistical significance. // Limit to one iteration so we don't spend a lot of time redoing full proofs just to measure this part. -// ROUND_BENCHMARK(PREAMBLE)->Iterations(1); -// ROUND_BENCHMARK(WIRE_COMMITMENTS)->Iterations(1); -// ROUND_BENCHMARK(SORTED_LIST_ACCUMULATOR)->Iterations(1); +ROUND_BENCHMARK(PREAMBLE)->Iterations(1); +ROUND_BENCHMARK(WIRE_COMMITMENTS)->Iterations(1); +ROUND_BENCHMARK(SORTED_LIST_ACCUMULATOR)->Iterations(1); ROUND_BENCHMARK(GRAND_PRODUCT_COMPUTATION)->Iterations(1); -// ROUND_BENCHMARK(RELATION_CHECK); -// ROUND_BENCHMARK(ZEROMORPH); +ROUND_BENCHMARK(RELATION_CHECK); +ROUND_BENCHMARK(ZEROMORPH); diff --git a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp index 7b804cb8e94..d3a1afac509 100644 --- a/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp +++ b/barretenberg/cpp/src/barretenberg/common/parallel_for_mutex_pool.cpp @@ -1,7 +1,6 @@ #include "log.hpp" #include "thread.hpp" #include -#include // Include chrono for timing #include #include #include @@ -122,22 +121,9 @@ void ThreadPool::worker_loop(size_t /*unused*/) */ void parallel_for_mutex_pool(size_t num_iterations, const std::function& func) { - // static int porcupine = 0; static ThreadPool pool(get_num_cpus() - 1); // info("starting job with iterations: ", num_iterations); - // auto start_time = std::chrono::high_resolution_clock::now(); // Start timing - pool.start_tasks(num_iterations, func); // info("done"); - - // auto end_time = std::chrono::high_resolution_clock::now(); // End timing - // auto duration = - // std::chrono::duration_cast(end_time - start_time).count(); // Calculate duration - - // // Log the time taken for this iteration - // if (porcupine == 113) { - // abort(); - // } - // info("Iteration ", porcupine++, " took ", duration, " microseconds.\n"); } diff --git a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp index abfffa6b40f..0f8b46dbcf3 100644 --- a/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp +++ b/barretenberg/cpp/src/barretenberg/proof_system/library/grand_product_library.hpp @@ -64,7 +64,6 @@ void compute_grand_product(const size_t circuit_size, // Step (1) // Populate `numerator` and `denominator` with the algebra described by Relation const size_t num_threads = circuit_size >= get_num_cpus_pow2() ? get_num_cpus_pow2() : 1; - std::cout << "THREADS " << num_threads << std::endl; const size_t block_size = circuit_size / num_threads; auto full_polynomials_view = full_polynomials.get_all(); parallel_for(num_threads, [&](size_t thread_idx) { diff --git a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp index 145521dca69..2a52cd665f7 100644 --- a/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp +++ b/barretenberg/cpp/src/barretenberg/sumcheck/sumcheck_round.hpp @@ -141,8 +141,7 @@ template class SumcheckProverRound { // For each edge_idx = 2i, we need to multiply the whole contribution by zeta^{2^{2i}} // This means that each univariate for each relation needs an extra multiplication. for (size_t edge_idx = start; edge_idx < end; edge_idx += 2) { - (void)polynomials; - // extend_edges(extended_edges[thread_idx], polynomials, edge_idx); + extend_edges(extended_edges[thread_idx], polynomials, edge_idx); // Update the pow polynomial's contribution c_l ⋅ ζ_{l+1}ⁱ for the next edge. FF pow_challenge = pow_challenges[edge_idx >> 1]; diff --git a/build-system/scripts/upload_logs_to_s3 b/build-system/scripts/upload_logs_to_s3 index 25c7fe2e50a..3188a80ec0f 100755 --- a/build-system/scripts/upload_logs_to_s3 +++ b/build-system/scripts/upload_logs_to_s3 @@ -17,7 +17,7 @@ if [ ! -d "$LOG_FOLDER" ] || [ -z "$(ls -A "$LOG_FOLDER")" ]; then exit 0 fi -# Duplicated in scripts/ci/assemble_e2e_benchmark.sh +# Paths used in scripts/ci/assemble_e2e_benchmark.sh if [ "${BRANCH:-}" = "master" ]; then TARGET_FOLDER="logs-v1/master/$COMMIT_HASH/" elif [ -n "${PULL_REQUEST:-}" ]; then diff --git a/scripts/ci/assemble_e2e_benchmark.sh b/scripts/ci/assemble_e2e_benchmark.sh index 4a7b1bbe015..811bef01e6f 100755 --- a/scripts/ci/assemble_e2e_benchmark.sh +++ b/scripts/ci/assemble_e2e_benchmark.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Grabs the log files uploaded in yarn-project/end-to-end/scripts/upload_logs_to_s3.sh +# Grabs the log files uploaded in build-system/scripts/upload_logs_to_s3 # that contain representative benchmarks, extracts whatever metrics are interesting, # and assembles a single file that shows the current state of the repository. @@ -14,7 +14,7 @@ BASE_COMMIT_HASH="" BENCHMARK_FILE_JSON="${BENCH_FOLDER}/benchmark.json" BASE_BENCHMARK_FILE_JSON="${BENCH_FOLDER}/base-benchmark.json" -# Adapted from yarn-project/end-to-end/scripts/upload_logs_to_s3.sh +# Paths from build-system/scripts/upload_logs_to_s3 if [ "${CIRCLE_BRANCH:-}" = "master" ]; then LOG_SOURCE_FOLDER="logs-v1/master/$COMMIT_HASH" BENCHMARK_TARGET_FILE="benchmarks-v1/master/$COMMIT_HASH.json" From 817aa136d65c5d10ca4e0c1362f5f7800d6de7d6 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 17:43:27 +0000 Subject: [PATCH 30/47] Benchmark progress --- .circleci/config.yml | 9 +++++++-- .../cpp/scripts/ci/ultra_honk_bench.sh | 4 +++- .../cpp/scripts/ci/upload_benchmarks_to_s3.sh | 19 +++++++++++++++++++ .../ci/upload_doxygen_to_s3.sh} | 0 4 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh rename barretenberg/cpp/{docs/deploy_doxygen.sh => scripts/ci/upload_doxygen_to_s3.sh} (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2a4bb4cd598..f653092f7f0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -205,7 +205,7 @@ jobs: - run: name: "Deploy barretenberg docs" command: | - barretenberg/cpp/docs/deploy_doxygen.sh + barretenberg/cpp/scripts/upload_doxygen_to_s3.sh barretenberg-stdlib-tests: docker: @@ -248,9 +248,13 @@ jobs: - *checkout - *setup_env - run: - name: "Test" + name: "Benchmark" command: | cond_spot_run_container barretenberg-x86_64-linux-clang 32 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh + - run: + name: "Upload" + command: | + barretenberg/cpp/scripts/upload_benchmarks_to_s3.sh barretenberg-honk-tests: docker: @@ -1274,6 +1278,7 @@ workflows: - bench-process-history: *e2e_test - bench-summary: requires: + - barretenberg-ultra-honk-bench - bench-publish-rollup - bench-process-history <<: *defaults diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index 0c1d0a8d954..198a47914fe 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -8,4 +8,6 @@ cd ../../srs_db ./download_ignition.sh 1 ./download_grumpkin.sh cd ../build -time ./bin/ultra_honk_rounds_bench \ No newline at end of file +time ./bin/ultra_honk_rounds_bench --benchmark_format=json > ultra_honk_rounds_bench.json +echo "Testing if we have created valid JSON:" +cat ultra_honk_rounds_bench.json | jq empty \ No newline at end of file diff --git a/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh new file mode 100644 index 00000000000..09799d61cb2 --- /dev/null +++ b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh @@ -0,0 +1,19 @@ +# Uploads to S3 a recent barretenberg benchmark run. +#!/usr/bin/env bash +[ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace +set -eu + +extract_repo barretenberg-ultra-honk-bench /usr/src extracted-repo + +BUCKET_NAME="aztec-ci-artifacts" +COMMIT_HASH="${COMMIT_HASH:-$(git rev-parse HEAD)}" + +if [ "${BRANCH:-}" = "master" ]; then + TARGET_FOLDER="barretenberg-bench-v1/master/$COMMIT_HASH/" +elif [ -n "${PULL_REQUEST:-}" ]; then + TARGET_FOLDER="barretenberg-bench-v1/pulls/${PULL_REQUEST##*/}" +else + echo Skipping upload since no target folder was defined + +echo "Uploading to s3://$BUCKET_NAME/$TARGET_FOLDER" +aws s3 cp extracted-repo/src/barretenberg/cpp/docs/build "s3://$BUCKET_NAME/$TARGET_FOLDER" --recursive \ No newline at end of file diff --git a/barretenberg/cpp/docs/deploy_doxygen.sh b/barretenberg/cpp/scripts/ci/upload_doxygen_to_s3.sh similarity index 100% rename from barretenberg/cpp/docs/deploy_doxygen.sh rename to barretenberg/cpp/scripts/ci/upload_doxygen_to_s3.sh From 3e511e6007c486f246b5127fd660eb01d877120b Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 20:08:28 +0000 Subject: [PATCH 31/47] fix docs deploy --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f653092f7f0..2e28fd3dfba 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -205,7 +205,7 @@ jobs: - run: name: "Deploy barretenberg docs" command: | - barretenberg/cpp/scripts/upload_doxygen_to_s3.sh + barretenberg/cpp/scripts/ci/upload_doxygen_to_s3.sh barretenberg-stdlib-tests: docker: From 4b5e70781658dbebbdc302c81f7c0479606572ac Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 20:11:40 +0000 Subject: [PATCH 32/47] Revert partial changes to barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang --- .../dockerfiles/Dockerfile.x86_64-linux-clang | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index eddfdfd2b71..7c99c5e289d 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -2,13 +2,13 @@ FROM alpine:3.18 AS builder RUN apk update \ && apk upgrade \ && apk add --no-cache \ - build-base \ - clang16 \ - cmake \ - ninja \ - git \ - curl \ - perl + build-base \ + clang16 \ + cmake \ + ninja \ + git \ + curl \ + perl WORKDIR /usr/src/barretenberg/cpp COPY . . # Build bb binary and targets needed for benchmarking. @@ -18,9 +18,8 @@ RUN cmake --preset default && cmake --build --preset default --target ultra_plon FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp -RUN apk update && apk add curl bash libstdc++ COPY . . - -COPY --from=builder /usr/src/barretenberg/cpp/srs_db /usr/src/barretenberg/cpp/srs_db -#COPY --from=builder /usr/src/barretenberg/cpp/build/bin /usr/src/barretenberg/cpp/build/bin -RUN HARDWARE_CONCURRENCY=128 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh \ No newline at end of file +COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb +# Copy libs for consuming projects. +COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a +COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libenv.a /usr/src/barretenberg/cpp/build/lib/libenv.a From 9eae745a477842eedc96f8a0cba3ac0923837524 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 20:13:30 +0000 Subject: [PATCH 33/47] Revert --- .../cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt index 1de8756be42..8984bc7b0ff 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/benchmark/honk_bench/CMakeLists.txt @@ -1,6 +1,8 @@ # Each source represents a separate benchmark suite set(BENCHMARK_SOURCES standard_plonk.bench.cpp + goblin.bench.cpp + eccvm.bench.cpp ultra_honk.bench.cpp ultra_honk_rounds.bench.cpp ultra_plonk.bench.cpp @@ -10,9 +12,11 @@ set(BENCHMARK_SOURCES # Required libraries for benchmark suites set(LINKED_LIBRARIES ultra_honk + eccvm stdlib_sha256 stdlib_keccak stdlib_merkle_tree + stdlib_recursion benchmark::benchmark ) From 7f1ef0725ea6dd10f42abec4a0bc4ce24f3a9d88 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 20:19:30 +0000 Subject: [PATCH 34/47] diff --- barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh index 09799d61cb2..18aad33a7a5 100644 --- a/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh +++ b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh @@ -16,4 +16,4 @@ else echo Skipping upload since no target folder was defined echo "Uploading to s3://$BUCKET_NAME/$TARGET_FOLDER" -aws s3 cp extracted-repo/src/barretenberg/cpp/docs/build "s3://$BUCKET_NAME/$TARGET_FOLDER" --recursive \ No newline at end of file +aws s3 cp extracted-repo/src/barretenberg/cpp/build/ultra_honk_rounds_bench.json "s3://$BUCKET_NAME/$TARGET_FOLDER/ultra_honk_rounds_bench.json" \ No newline at end of file From 45b7fb7a5c6eb1901f7d6f59842d52c5e1d05144 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 20:44:16 +0000 Subject: [PATCH 35/47] Copy ci scripts into docker container --- .circleci/config.yml | 2 +- barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2e28fd3dfba..0b4e41c7dcf 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -250,7 +250,7 @@ jobs: - run: name: "Benchmark" command: | - cond_spot_run_container barretenberg-x86_64-linux-clang 32 /usr/src/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh + cond_spot_run_container barretenberg-x86_64-linux-clang 32 ./scripts/ci/ultra_honk_bench.sh - run: name: "Upload" command: | diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 7c99c5e289d..633bf5f5bae 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -19,6 +19,7 @@ RUN cmake --preset default && cmake --build --preset default --target ultra_plon FROM alpine:3.18 WORKDIR /usr/src/barretenberg/cpp COPY . . +COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb # Copy libs for consuming projects. COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a From e47075ceed9c81415b0609608e3d60bd58465a57 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 20:58:44 +0000 Subject: [PATCH 36/47] Need curl --- barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 1 + 1 file changed, 1 insertion(+) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 633bf5f5bae..accb985fb8f 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -17,6 +17,7 @@ COPY . . RUN cmake --preset default && cmake --build --preset default --target ultra_plonk_rounds_bench --target ultra_honk_rounds_bench --target bb --target ultra_honk_bench --target ultra_plonk_bench --target grumpkin_srs_gen --target widget_bench --target relations_bench FROM alpine:3.18 +RUN apk update && apk add curl libstdc++ WORKDIR /usr/src/barretenberg/cpp COPY . . COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci From af6526b24c5a497ee95cd0bdd94e6d54351730a2 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 21:11:18 +0000 Subject: [PATCH 37/47] copy grumpkin srs gen --- barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 1 + 1 file changed, 1 insertion(+) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index accb985fb8f..a93eabd9ba7 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -22,6 +22,7 @@ WORKDIR /usr/src/barretenberg/cpp COPY . . COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb +COPY --from=builder /usr/src/barretenberg/cpp/build/bin/grumpkin_srs_gen /usr/src/barretenberg/cpp/build/bin/grumpkin_srs_gen # Copy libs for consuming projects. COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libenv.a /usr/src/barretenberg/cpp/build/lib/libenv.a From e0eb0f0b941504685488c8aac77581ae37640b0b Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 21:23:38 +0000 Subject: [PATCH 38/47] Expose binaries properly --- barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index a93eabd9ba7..4c681e376f6 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -14,7 +14,8 @@ COPY . . # Build bb binary and targets needed for benchmarking. # Everything else is built as part linux-clang-assert. # Benchmark targets want to run without asserts, so get built alongside bb. -RUN cmake --preset default && cmake --build --preset default --target ultra_plonk_rounds_bench --target ultra_honk_rounds_bench --target bb --target ultra_honk_bench --target ultra_plonk_bench --target grumpkin_srs_gen --target widget_bench --target relations_bench +RUN cmake --preset default +RUN cmake --build --preset default --target ultra_honk_rounds_bench --target bb --target grumpkin_srs_gen FROM alpine:3.18 RUN apk update && apk add curl libstdc++ @@ -22,6 +23,7 @@ WORKDIR /usr/src/barretenberg/cpp COPY . . COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci COPY --from=builder /usr/src/barretenberg/cpp/build/bin/bb /usr/src/barretenberg/cpp/build/bin/bb +COPY --from=builder /usr/src/barretenberg/cpp/build/bin/ultra_honk_rounds_bench /usr/src/barretenberg/cpp/build/bin/ultra_honk_rounds_bench COPY --from=builder /usr/src/barretenberg/cpp/build/bin/grumpkin_srs_gen /usr/src/barretenberg/cpp/build/bin/grumpkin_srs_gen # Copy libs for consuming projects. COPY --from=builder /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a /usr/src/barretenberg/cpp/build/lib/libbarretenberg.a From 5736db58227a74079da05584788481ab09693d1d Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 21:32:01 +0000 Subject: [PATCH 39/47] Expose jq --- barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index 4c681e376f6..bbb6c951c39 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -18,7 +18,7 @@ RUN cmake --preset default RUN cmake --build --preset default --target ultra_honk_rounds_bench --target bb --target grumpkin_srs_gen FROM alpine:3.18 -RUN apk update && apk add curl libstdc++ +RUN apk update && apk add curl libstdc++ jq WORKDIR /usr/src/barretenberg/cpp COPY . . COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci From a30d3eb0d11148df19bfeb8254fd82c41c3655af Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 21:45:46 +0000 Subject: [PATCH 40/47] Benchmark shebang fix? --- barretenberg/cpp/scripts/ci/ultra_honk_bench.sh | 4 ++-- barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh | 0 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index 198a47914fe..2d07d4f6f72 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu @@ -10,4 +10,4 @@ cd ../../srs_db cd ../build time ./bin/ultra_honk_rounds_bench --benchmark_format=json > ultra_honk_rounds_bench.json echo "Testing if we have created valid JSON:" -cat ultra_honk_rounds_bench.json | jq empty \ No newline at end of file +cat ultra_honk_rounds_bench.json | tee /dev/tty | jq empty \ No newline at end of file diff --git a/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh old mode 100644 new mode 100755 From 24df8e05007e2aed2a120bc1e7c24279173cce54 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 22:01:38 +0000 Subject: [PATCH 41/47] Tinkering, stinkering --- barretenberg/cpp/scripts/ci/ultra_honk_bench.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh index 2d07d4f6f72..be590cb1ec8 100755 --- a/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh +++ b/barretenberg/cpp/scripts/ci/ultra_honk_bench.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu From 9bc28fc65b2668fc02770551c635a3d67d67c514 Mon Sep 17 00:00:00 2001 From: ludamad Date: Tue, 9 Jan 2024 22:57:47 +0000 Subject: [PATCH 42/47] fix: script path [ci debug] --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0b4e41c7dcf..4090d80c080 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -254,7 +254,7 @@ jobs: - run: name: "Upload" command: | - barretenberg/cpp/scripts/upload_benchmarks_to_s3.sh + barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh barretenberg-honk-tests: docker: From addf73d190f1edeccf24b327da9644b806aa4ecb Mon Sep 17 00:00:00 2001 From: ludamad Date: Wed, 10 Jan 2024 00:18:55 +0000 Subject: [PATCH 43/47] fix: benchmark-docs uploading --- .circleci/config.yml | 10 +++++----- barretenberg/cpp/dockerfiles/Dockerfile.bench | 4 ++++ .../cpp/dockerfiles/Dockerfile.x86_64-linux-clang | 1 - barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh | 4 ++-- build_manifest.yml | 6 ++++++ 5 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 barretenberg/cpp/dockerfiles/Dockerfile.bench diff --git a/.circleci/config.yml b/.circleci/config.yml index 4090d80c080..e47b9362e64 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -240,7 +240,7 @@ jobs: name: "Test" command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/bb-tests.sh - barretenberg-ultra-honk-bench: + barretenberg-bench: docker: - image: aztecprotocol/alpine-build-image resource_class: small @@ -249,8 +249,8 @@ jobs: - *setup_env - run: name: "Benchmark" - command: | - cond_spot_run_container barretenberg-x86_64-linux-clang 32 ./scripts/ci/ultra_honk_bench.sh + command: cond_spot_run_build barretenberg-bench 32 + # cond_spot_run_container barretenberg-x86_64-linux-clang 32 ./scripts/ci/ultra_honk_bench.sh - run: name: "Upload" command: | @@ -1113,7 +1113,7 @@ workflows: - barretenberg-x86_64-linux-clang-fuzzing: *defaults - barretenberg-wasm-linux-clang: *defaults - barretenberg-x86_64-linux-clang-sol: *defaults - - barretenberg-ultra-honk-bench: + - barretenberg-bench: requires: - barretenberg-x86_64-linux-clang <<: *defaults @@ -1278,7 +1278,7 @@ workflows: - bench-process-history: *e2e_test - bench-summary: requires: - - barretenberg-ultra-honk-bench + - barretenberg-bench - bench-publish-rollup - bench-process-history <<: *defaults diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.bench b/barretenberg/cpp/dockerfiles/Dockerfile.bench new file mode 100644 index 00000000000..0535d2fb3a9 --- /dev/null +++ b/barretenberg/cpp/dockerfiles/Dockerfile.bench @@ -0,0 +1,4 @@ +FROM 278380418400.dkr.ecr.eu-west-2.amazonaws.com/barretenberg-x86_64-linux-clang +WORKDIR /usr/src/barretenberg/cpp +RUN apk update && apk add curl libstdc++ jq +RUN ./scripts/ci/ultra_honk_bench.sh diff --git a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang index bbb6c951c39..fe984e74e35 100644 --- a/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang +++ b/barretenberg/cpp/dockerfiles/Dockerfile.x86_64-linux-clang @@ -18,7 +18,6 @@ RUN cmake --preset default RUN cmake --build --preset default --target ultra_honk_rounds_bench --target bb --target grumpkin_srs_gen FROM alpine:3.18 -RUN apk update && apk add curl libstdc++ jq WORKDIR /usr/src/barretenberg/cpp COPY . . COPY --from=builder /usr/src/barretenberg/cpp/scripts/ci /usr/src/barretenberg/cpp/scripts/ci diff --git a/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh index 18aad33a7a5..dc5d890704b 100755 --- a/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh +++ b/barretenberg/cpp/scripts/ci/upload_benchmarks_to_s3.sh @@ -3,7 +3,7 @@ [ -n "${BUILD_SYSTEM_DEBUG:-}" ] && set -x # conditionally trace set -eu -extract_repo barretenberg-ultra-honk-bench /usr/src extracted-repo +extract_repo barretenberg-bench /usr/src extracted-repo BUCKET_NAME="aztec-ci-artifacts" COMMIT_HASH="${COMMIT_HASH:-$(git rev-parse HEAD)}" @@ -14,6 +14,6 @@ elif [ -n "${PULL_REQUEST:-}" ]; then TARGET_FOLDER="barretenberg-bench-v1/pulls/${PULL_REQUEST##*/}" else echo Skipping upload since no target folder was defined - +fi echo "Uploading to s3://$BUCKET_NAME/$TARGET_FOLDER" aws s3 cp extracted-repo/src/barretenberg/cpp/build/ultra_honk_rounds_bench.json "s3://$BUCKET_NAME/$TARGET_FOLDER/ultra_honk_rounds_bench.json" \ No newline at end of file diff --git a/build_manifest.yml b/build_manifest.yml index be3cf243273..8924d81aa80 100644 --- a/build_manifest.yml +++ b/build_manifest.yml @@ -104,6 +104,12 @@ barretenberg-acir-tests-bb.js: - bb.js - noir-compile-acir-tests +barretenberg-bench: + buildDir: barretenberg/cpp + dockerfile: dockerfiles/Dockerfile.bench + dependencies: + - barretenberg-x86_64-linux-clang + barretenberg-docs: buildDir: barretenberg/cpp dockerfile: docs/Dockerfile From 8d75cb6acd11cd05e4bf01e5a1effcb65817f7ec Mon Sep 17 00:00:00 2001 From: ludamad Date: Wed, 10 Jan 2024 19:08:34 +0000 Subject: [PATCH 44/47] Try different image [ci debug] --- .circleci/config.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index ef4366b968e..47d379b7972 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -241,8 +241,10 @@ jobs: command: cond_spot_run_test barretenberg-x86_64-linux-clang-assert 32 ./scripts/bb-tests.sh barretenberg-bench: - docker: - - image: aztecprotocol/alpine-build-image + machine: + # NOTE: we usually use alpine build image when making spot images, but + # we are not able to upload to S3 with it + image: ubuntu-2204:2023.07.2 resource_class: small steps: - *checkout @@ -250,7 +252,6 @@ jobs: - run: name: "Benchmark" command: cond_spot_run_build barretenberg-bench 32 - # cond_spot_run_container barretenberg-x86_64-linux-clang 32 ./scripts/ci/ultra_honk_bench.sh - run: name: "Upload" command: | From 14b7eef22abe14a8fc8276d7055f167bb6cf0ced Mon Sep 17 00:00:00 2001 From: ludamad Date: Wed, 10 Jan 2024 19:13:35 +0000 Subject: [PATCH 45/47] Try different image [ci debug] --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 47d379b7972..4698b6cf32a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -245,7 +245,7 @@ jobs: # NOTE: we usually use alpine build image when making spot images, but # we are not able to upload to S3 with it image: ubuntu-2204:2023.07.2 - resource_class: small + resource_class: medium steps: - *checkout - *setup_env From 5d144165e7695a54e69a1c5a6fa25570e1538386 Mon Sep 17 00:00:00 2001 From: ludamad Date: Wed, 10 Jan 2024 14:28:06 -0500 Subject: [PATCH 46/47] Update config.yml --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4698b6cf32a..f356ac7425d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1292,7 +1292,6 @@ workflows: - bench-process-history: *e2e_test - bench-summary: requires: - - barretenberg-bench - bench-publish-rollup - bench-process-history <<: *defaults From 188984b3e51b3f21065809734a92df096aac377a Mon Sep 17 00:00:00 2001 From: ludamad Date: Wed, 10 Jan 2024 19:53:38 +0000 Subject: [PATCH 47/47] [ci rebuild barretenberg-bench]