Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
relations.bench.cpp
Go to the documentation of this file.
1
#include "
barretenberg/eccvm/eccvm_flavor.hpp
"
2
#include "
barretenberg/flavor/mega_flavor.hpp
"
3
#include "
barretenberg/flavor/ultra_flavor.hpp
"
4
#include "
barretenberg/translator_vm/translator_flavor.hpp
"
5
#include <benchmark/benchmark.h>
6
7
namespace
{
8
auto
&
engine
=
bb::numeric::get_debug_randomness
();
9
}
10
11
namespace
bb::benchmark::relations
{
12
13
using
Fr
=
bb::fr
;
14
using
Fq
=
grumpkin::fr
;
15
16
// Generic helper for executing Relation::accumulate for the template specified input type
17
template
<
typename
Flavor,
typename
Relation,
typename
Input,
typename
Accumulator>
18
void
execute_relation
(::benchmark::State& state)
19
{
20
using
FF
=
typename
Flavor::FF
;
21
22
auto
params =
bb::RelationParameters<FF>::get_random
();
23
24
// Instantiate zero-initialized inputs and accumulator
25
Input input{};
26
Accumulator accumulator;
27
28
for
(
auto
_ : state) {
29
Relation::accumulate(accumulator, input, params, 1);
30
}
31
}
32
33
// Single execution of relation on values (FF), e.g. Sumcheck verifier work
34
template
<
typename
Flavor,
typename
Relation>
void
execute_relation_for_values
(::benchmark::State& state)
35
{
36
using
Input =
typename
Flavor::AllValues
;
37
using
Accumulator =
typename
Relation::SumcheckArrayOfValuesOverSubrelations
;
38
39
execute_relation<Flavor, Relation, Input, Accumulator>(state);
40
}
41
42
// Single execution of relation on Sumcheck univariates, i.e. Sumcheck/Decider prover work
43
template
<
typename
Flavor,
typename
Relation>
void
execute_relation_for_univariates
(::benchmark::State& state)
44
{
45
using
Input =
typename
Flavor::ExtendedEdges
;
46
using
Accumulator =
typename
Relation::SumcheckTupleOfUnivariatesOverSubrelations
;
47
48
execute_relation<Flavor, Relation, Input, Accumulator>(state);
49
}
50
51
// Ultra relations (Sumcheck prover work)
52
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
ArithmeticRelation<Fr>
>);
53
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
DeltaRangeConstraintRelation<Fr>
>);
54
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
EllipticRelation<Fr>
>);
55
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
MemoryRelation<Fr>
>);
56
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
NonNativeFieldRelation<Fr>
>);
57
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
LogDerivLookupRelation<Fr>
>);
58
BENCHMARK
(
execute_relation_for_univariates
<
UltraFlavor
,
UltraPermutationRelation<Fr>
>);
59
60
// Goblin-Ultra only relations (Sumcheck prover work)
61
BENCHMARK
(
execute_relation_for_univariates
<
MegaFlavor
,
EccOpQueueRelation<Fr>
>);
62
BENCHMARK
(
execute_relation_for_univariates
<
MegaFlavor
,
DatabusLookupRelation<Fr>
>);
63
BENCHMARK
(
execute_relation_for_univariates
<
MegaFlavor
,
Poseidon2ExternalRelation<Fr>
>);
64
BENCHMARK
(
execute_relation_for_univariates
<
MegaFlavor
,
Poseidon2InternalRelation<Fr>
>);
65
66
// Ultra relations (verifier work)
67
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
ArithmeticRelation<Fr>
>);
68
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
DeltaRangeConstraintRelation<Fr>
>);
69
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
EllipticRelation<Fr>
>);
70
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
MemoryRelation<Fr>
>);
71
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
NonNativeFieldRelation<Fr>
>);
72
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
LogDerivLookupRelation<Fr>
>);
73
BENCHMARK
(
execute_relation_for_values
<
UltraFlavor
,
UltraPermutationRelation<Fr>
>);
74
75
// Goblin-Ultra only relations (verifier work)
76
BENCHMARK
(
execute_relation_for_values
<
MegaFlavor
,
EccOpQueueRelation<Fr>
>);
77
BENCHMARK
(
execute_relation_for_values
<
MegaFlavor
,
DatabusLookupRelation<Fr>
>);
78
BENCHMARK
(
execute_relation_for_values
<
MegaFlavor
,
Poseidon2ExternalRelation<Fr>
>);
79
BENCHMARK
(
execute_relation_for_values
<
MegaFlavor
,
Poseidon2InternalRelation<Fr>
>);
80
81
// Translator VM
82
BENCHMARK
(
execute_relation_for_values
<
TranslatorFlavor
,
TranslatorDecompositionRelation<Fr>
>);
83
BENCHMARK
(
execute_relation_for_values
<
TranslatorFlavor
,
TranslatorOpcodeConstraintRelation<Fr>
>);
84
BENCHMARK
(
execute_relation_for_values
<
TranslatorFlavor
,
TranslatorAccumulatorTransferRelation<Fr>
>);
85
BENCHMARK
(
execute_relation_for_values
<
TranslatorFlavor
,
TranslatorDeltaRangeConstraintRelation<Fr>
>);
86
BENCHMARK
(
execute_relation_for_values
<
TranslatorFlavor
,
TranslatorNonNativeFieldRelation<Fr>
>);
87
BENCHMARK
(
execute_relation_for_values
<
TranslatorFlavor
,
TranslatorPermutationRelation<Fr>
>);
88
89
// ECCVM
90
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMLookupRelation<Fq>
>);
91
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMMSMRelation<Fq>
>);
92
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMPointTableRelation<Fq>
>);
93
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMSetRelation<Fq>
>);
94
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMTranscriptRelation<Fq>
>);
95
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMWnafRelation<Fq>
>);
96
BENCHMARK
(
execute_relation_for_values
<
ECCVMFlavor
,
ECCVMBoolsRelation<Fq>
>);
97
98
}
// namespace bb::benchmark::relations
99
100
BENCHMARK_MAIN
();
bb::ECCVMFlavor::AllValues
A field element for each entity of the flavor. These entities represent the prover polynomials evalua...
Definition
eccvm_flavor.hpp:438
bb::ECCVMFlavor
Definition
eccvm_flavor.hpp:35
bb::ECCVMFlavor::FF
typename Curve::ScalarField FF
Definition
eccvm_flavor.hpp:42
bb::ECCVMFlavor::ExtendedEdges
ProverUnivariates< MAX_PARTIAL_RELATION_LENGTH > ExtendedEdges
A container for univariates produced during the hot loop in sumcheck.
Definition
eccvm_flavor.hpp:452
bb::MegaFlavor
Definition
mega_flavor.hpp:33
bb::Relation
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
Definition
relation_types.hpp:96
bb::Relation::SumcheckArrayOfValuesOverSubrelations
ArrayOfValues< FF, RelationImpl::SUBRELATION_PARTIAL_LENGTHS > SumcheckArrayOfValuesOverSubrelations
Definition
relation_types.hpp:106
bb::Relation::SumcheckTupleOfUnivariatesOverSubrelations
TupleOfUnivariates< FF, RelationImpl::SUBRELATION_PARTIAL_LENGTHS > SumcheckTupleOfUnivariatesOverSubrelations
Definition
relation_types.hpp:104
bb::TranslatorFlavor
Definition
translator_flavor.hpp:30
bb::UltraFlavor
Definition
ultra_flavor.hpp:35
eccvm_flavor.hpp
engine
numeric::RNG & engine
Definition
eccvm_transcript.test.cpp:295
mega_flavor.hpp
bb::benchmark::relations
Definition
relations.bench.cpp:11
bb::benchmark::relations::BENCHMARK
BENCHMARK(execute_relation_for_univariates< UltraFlavor, ArithmeticRelation< Fr > >)
bb::benchmark::relations::execute_relation
void execute_relation(::benchmark::State &state)
Definition
relations.bench.cpp:18
bb::benchmark::relations::execute_relation_for_values
void execute_relation_for_values(::benchmark::State &state)
Definition
relations.bench.cpp:34
bb::benchmark::relations::execute_relation_for_univariates
void execute_relation_for_univariates(::benchmark::State &state)
Definition
relations.bench.cpp:43
bb::grumpkin::fr
bb::fq fr
Definition
grumpkin.hpp:18
bb::numeric::get_debug_randomness
RNG & get_debug_randomness(bool reset, std::uint_fast64_t seed)
Definition
engine.cpp:190
bb::fr
field< Bn254FrParams > fr
Definition
fr.hpp:174
BENCHMARK_MAIN
BENCHMARK_MAIN()
bb::RelationParameters::get_random
static RelationParameters get_random()
Definition
relation_parameters.hpp:63
bb::field< Bn254FrParams >
translator_flavor.hpp
ultra_flavor.hpp
src
barretenberg
benchmark
relations_bench
relations.bench.cpp
Generated by
1.9.8