Skip to content

Commit a09c0f6

Browse files
authored
[libc] Add Minimum Time and Iterations, Reduce Epsilon (#100838)
This PR adds minimums (50 iterations, 500 us, and epsilon of 0.0001) to ensure that all benchmarks run at least a set number of times before outputting a final measurement.
1 parent 47aea61 commit a09c0f6

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

libc/benchmarks/gpu/LibcGpuBenchmark.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ BenchmarkResult benchmark(const BenchmarkOptions &options,
205205
if (samples >= options.max_samples || iterations >= options.max_iterations)
206206
break;
207207
if (total_time >= options.min_duration && samples >= options.min_samples &&
208+
total_iterations >= options.min_iterations &&
208209
change_ratio < options.epsilon)
209210
break;
210211

libc/benchmarks/gpu/LibcGpuBenchmark.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,13 @@ namespace benchmarks {
1717

1818
struct BenchmarkOptions {
1919
uint32_t initial_iterations = 1;
20+
uint32_t min_iterations = 50;
2021
uint32_t max_iterations = 10000000;
2122
uint32_t min_samples = 4;
2223
uint32_t max_samples = 1000;
23-
int64_t min_duration = 0; // in nanoseconds (ns)
24+
int64_t min_duration = 500 * 1000; // 500 * 1000 nanoseconds = 500 us
2425
int64_t max_duration = 1000 * 1000 * 1000; // 1e9 nanoseconds = 1 second
25-
double epsilon = 0.01;
26+
double epsilon = 0.0001;
2627
double scaling_factor = 1.4;
2728
};
2829

0 commit comments

Comments
 (0)