Skip to content

Commit c04195b

Browse files
committed
Min Estimator
- added Min-Estimator to benchmarks for use with multiple repetitions
1 parent 2cc22e8 commit c04195b

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

apps/benchmark.cpp

+11-7
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66

77
#include <algorithm>
88

9+
10+
auto min_estimator = [](const std::vector<double>& v) -> double {return *(std::min_element(std::begin(v), std::end(v)));};
11+
12+
913
static void BM_sim_X(benchmark::State& state) {
1014
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range(0));
1115
qc->emplace_back<qc::StandardOperation>(state.range(0), 0, qc::X);
@@ -15,7 +19,7 @@ static void BM_sim_X(benchmark::State& state) {
1519
}
1620
state.SetLabel("X");
1721
}
18-
BENCHMARK(BM_sim_X)->DenseRange(4, 25);
22+
BENCHMARK(BM_sim_X)->DenseRange(4, 25)->ComputeStatistics("min", min_estimator);
1923

2024
static void BM_sim_H(benchmark::State& state) {
2125
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range(0));
@@ -26,7 +30,7 @@ static void BM_sim_H(benchmark::State& state) {
2630
}
2731
state.SetLabel("H");
2832
}
29-
BENCHMARK(BM_sim_H)->DenseRange(4, 25);
33+
BENCHMARK(BM_sim_H)->DenseRange(4, 25)->ComputeStatistics("min", min_estimator);
3034

3135
static void BM_sim_T(benchmark::State& state) {
3236
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range(0));
@@ -37,7 +41,7 @@ static void BM_sim_T(benchmark::State& state) {
3741
}
3842
state.SetLabel("T");
3943
}
40-
BENCHMARK(BM_sim_T)->DenseRange(4, 25);
44+
BENCHMARK(BM_sim_T)->DenseRange(4, 25)->ComputeStatistics("min", min_estimator);
4145

4246
static void BM_sim_CNOT(benchmark::State& state) {
4347
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range(0));
@@ -48,7 +52,7 @@ static void BM_sim_CNOT(benchmark::State& state) {
4852
}
4953
state.SetLabel("CNOT");
5054
}
51-
BENCHMARK(BM_sim_CNOT)->DenseRange(4, 25);
55+
BENCHMARK(BM_sim_CNOT)->DenseRange(4, 25)->ComputeStatistics("min", min_estimator);
5256

5357
static void BM_sim_TOFFOLI(benchmark::State& state) {
5458
std::unique_ptr<qc::QuantumComputation> qc = std::make_unique<qc::QuantumComputation>(state.range(0));
@@ -60,7 +64,7 @@ static void BM_sim_TOFFOLI(benchmark::State& state) {
6064
}
6165
state.SetLabel("Toffoli");
6266
}
63-
BENCHMARK(BM_sim_TOFFOLI)->DenseRange(4, 25);
67+
BENCHMARK(BM_sim_TOFFOLI)->DenseRange(4, 25)->ComputeStatistics("min", min_estimator);
6468

6569
/**
6670
* The following is translated from the other benchmarks at Roger-luo/quantum-benchmarks and does the following:
@@ -112,7 +116,7 @@ static void BM_sim_QCBM(benchmark::State& state) {
112116
state.SetLabel("QCBM");
113117
}
114118

115-
BENCHMARK(BM_sim_QCBM)->DenseRange(4, 21); // on our compute server, the 22 qubit instance takes more than 48h
119+
BENCHMARK(BM_sim_QCBM)->DenseRange(4, 21)->ComputeStatistics("min", min_estimator); // on our compute server, the 22 qubit instance takes more than 48h
116120

117121
static void BM_extra_QCBM_optimized(benchmark::State& state) {
118122
const unsigned int n_qubits = state.range(0);
@@ -176,4 +180,4 @@ static void BM_extra_QCBM_optimized(benchmark::State& state) {
176180
state.SetLabel("QCBM preprocessed");
177181
}
178182

179-
BENCHMARK(BM_extra_QCBM_optimized)->DenseRange(4, 21);
183+
BENCHMARK(BM_extra_QCBM_optimized)->DenseRange(4, 21)->ComputeStatistics("min", min_estimator);

0 commit comments

Comments
 (0)