From 9f8edab25a151a0d04ccdd1ff2492b3b51396ccc Mon Sep 17 00:00:00 2001 From: codygunton Date: Mon, 22 Jan 2024 21:21:14 +0000 Subject: [PATCH 1/4] Benchmark commit function --- .../src/barretenberg/benchmark/CMakeLists.txt | 1 + .../benchmark/commit_bench/CMakeLists.txt | 18 +++++++++ .../benchmark/commit_bench/commit.bench.cpp | 38 +++++++++++++++++++ .../benchmark/commit_bench/main.bench.cpp | 3 ++ .../barretenberg/polynomials/polynomial.hpp | 9 +++++ 5 files changed, 69 insertions(+) create mode 100644 barretenberg/cpp/src/barretenberg/benchmark/commit_bench/CMakeLists.txt create mode 100644 barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp create mode 100644 barretenberg/cpp/src/barretenberg/benchmark/commit_bench/main.bench.cpp diff --git a/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt index 285f2bb5937b..e86e72df09d4 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt +++ b/barretenberg/cpp/src/barretenberg/benchmark/CMakeLists.txt @@ -1,3 +1,4 @@ +add_subdirectory(commit_bench) add_subdirectory(decrypt_bench) add_subdirectory(ipa_bench) add_subdirectory(pippenger_bench) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/CMakeLists.txt new file mode 100644 index 000000000000..3bca58463b1e --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/CMakeLists.txt @@ -0,0 +1,18 @@ +# Each source represents a separate benchmark suite +set(BENCHMARK_SOURCES + commit.bench.cpp +) + +# Required libraries for benchmark suites +set(LINKED_LIBRARIES + commitment_schemes + benchmark::benchmark +) + +# Add executable and custom target for each suite, e.g. ultra_honk_bench +foreach(BENCHMARK_SOURCE ${BENCHMARK_SOURCES}) + get_filename_component(BENCHMARK_NAME ${BENCHMARK_SOURCE} NAME_WE) # extract name without extension + add_executable(${BENCHMARK_NAME}_bench main.bench.cpp ${BENCHMARK_SOURCE}) + 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 diff --git a/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp new file mode 100644 index 000000000000..4610a77cbbc5 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp @@ -0,0 +1,38 @@ + +#include "barretenberg/commitment_schemes/commitment_key.hpp" +#include + +namespace bb { + +template +std::shared_ptr> create_commitment_key(const size_t num_points) +{ + std::string srs_path; + if constexpr (std::same_as) { + srs_path = "../srs_db/ignition"; + } else { + static_assert(std::same_as); + srs_path = "../srs_db/grumpkin"; + } + std::shared_ptr> crs_factory( + new bb::srs::factories::FileCrsFactory(srs_path, num_points)); + return std::make_shared>(num_points, crs_factory); +} + +constexpr size_t MAX_LOG_NUM_POINTS = 24; +constexpr size_t MAX_NUM_POINTS = 1 << 24; + +auto key = create_commitment_key(MAX_NUM_POINTS); + +template void bench_commit(::benchmark::State& state) +{ + const size_t num_points = 1 << state.range(0); + const auto polynomial = Polynomial(num_points); + for (auto _ : state) { + benchmark::DoNotOptimize(key->commit(polynomial)); + } +} + +BENCHMARK(bench_commit)->DenseRange(10, MAX_LOG_NUM_POINTS)->Unit(benchmark::kMillisecond); + +} // namespace bb diff --git a/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/main.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/main.bench.cpp new file mode 100644 index 000000000000..71fefa047228 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/main.bench.cpp @@ -0,0 +1,3 @@ +#include + +BENCHMARK_MAIN(); diff --git a/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp index 70e080bdfa4f..70db844c69da 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp @@ -231,6 +231,15 @@ template class Polynomial { std::size_t size() const { return size_; } std::size_t capacity() const { return size_ + MAXIMUM_COEFFICIENT_SHIFT; } + static Polynomial random(const size_t num_coeffs) + { + Polynomial p(num_coeffs); + for (size_t i = 0; i < num_coeffs; ++i) { + p[i] = Fr::random_element(); + } + return p; + } + private: // allocate a fresh memory pointer for backing memory // DOES NOT initialize memory From 544738d5e4e909f077b35444e25b15d54fbfc3d6 Mon Sep 17 00:00:00 2001 From: codygunton Date: Mon, 22 Jan 2024 21:33:39 +0000 Subject: [PATCH 2/4] Use std::generate --- barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp index 70db844c69da..cc78064ce1cc 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp @@ -234,9 +234,7 @@ template class Polynomial { static Polynomial random(const size_t num_coeffs) { Polynomial p(num_coeffs); - for (size_t i = 0; i < num_coeffs; ++i) { - p[i] = Fr::random_element(); - } + std::generate_n(p.begin(), num_coeffs, [&]() { return Fr::random_element(); }); return p; } From 87694187801026c0769c8b74feb030b2a3368cc4 Mon Sep 17 00:00:00 2001 From: codygunton Date: Mon, 22 Jan 2024 21:36:46 +0000 Subject: [PATCH 3/4] No capture needed --- barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp index cc78064ce1cc..305585773e4e 100644 --- a/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp +++ b/barretenberg/cpp/src/barretenberg/polynomials/polynomial.hpp @@ -234,7 +234,7 @@ template class Polynomial { static Polynomial random(const size_t num_coeffs) { Polynomial p(num_coeffs); - std::generate_n(p.begin(), num_coeffs, [&]() { return Fr::random_element(); }); + std::generate_n(p.begin(), num_coeffs, []() { return Fr::random_element(); }); return p; } From 8b0a84a7902a8bf27c4e08401ff27d6d608c5f8f Mon Sep 17 00:00:00 2001 From: codygunton Date: Mon, 22 Jan 2024 21:57:53 +0000 Subject: [PATCH 4/4] Respond to review --- .../src/barretenberg/benchmark/commit_bench/commit.bench.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp index 4610a77cbbc5..769901042855 100644 --- a/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp +++ b/barretenberg/cpp/src/barretenberg/benchmark/commit_bench/commit.bench.cpp @@ -20,7 +20,7 @@ std::shared_ptr> create_commitment_key(const siz } constexpr size_t MAX_LOG_NUM_POINTS = 24; -constexpr size_t MAX_NUM_POINTS = 1 << 24; +constexpr size_t MAX_NUM_POINTS = 1 << MAX_LOG_NUM_POINTS; auto key = create_commitment_key(MAX_NUM_POINTS);