Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
pippenger.bench.cpp
Go to the documentation of this file.
5
7#include <benchmark/benchmark.h>
8
10
11#include <chrono>
12#include <cstdlib>
13
14// #include <valgrind/callgrind.h>
15// CALLGRIND_START_INSTRUMENTATION;
16// CALLGRIND_STOP_INSTRUMENTATION;
17// CALLGRIND_DUMP_STATS;
18
19using namespace bb;
20using namespace benchmark;
21
22// constexpr size_t NUM_POINTS = 1 << 16;
23// std::vector<fr> scalars;
24// static bb::evaluation_domain small_domain;
25// static bb::evaluation_domain large_domain;
26
31namespace {
35class PippengerBench : public benchmark::Fixture {
36 public:
37 // Number of function circuits to accumulate (based on Zac's target numbers)
38 static constexpr size_t MAX_POINTS = 1 << 22;
40 std::vector<Fr> scalars;
41 // scalar_multiplication::pippenger_runtime_state<curve::BN254> runtime_state =
42 // scalar_multiplication::pippenger_runtime_state<curve::BN254>(1 << 22);
44
45 void SetUp([[maybe_unused]] const ::benchmark::State& state) override
46 {
48 srs = srs::get_crs_factory<Curve>()->get_crs(MAX_POINTS);
49
50 scalars.resize(MAX_POINTS);
51 for (auto& x : scalars) {
52 x = Fr::random_element(&engine);
53 }
54 }
55};
56
60BENCHMARK_DEFINE_F(PippengerBench, Full)(benchmark::State& state)
61{
62 std::span<const G1> points =
63 PippengerBench::srs->get_monomial_points().subspan(0, static_cast<size_t>(state.range(0)));
64 std::span<Fr> span(&PippengerBench::scalars[0], static_cast<size_t>(state.range(0)));
65 PolynomialSpan<Fr> scalars = PolynomialSpan<Fr>(0, span);
66
67 for (auto _ : state) {
69 (scalar_multiplication::pippenger_unsafe<Curve>(scalars, points));
70 }
71}
72
73#define ARGS RangeMultiplier(4)->Range(1 << 11, 1 << 21);
74
75BENCHMARK_REGISTER_F(PippengerBench, Full)->Unit(benchmark::kMillisecond)->ARGS;
76
77} // namespace
78
typename Group::element Element
Definition bn254.hpp:21
typename Group::affine_element AffineElement
Definition bn254.hpp:22
bb::fr ScalarField
Definition bn254.hpp:18
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Definition engine.cpp:190
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
Entry point for Barretenberg command-line interface.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
#define BB_REPORT_OP_COUNT_IN_BENCH(state)
BENCHMARK_MAIN()
Curve::Element Element
Curve::AffineElement G1
static field random_element(numeric::RNG *engine=nullptr) noexcept