Require at least 5 samples to begin estimating noise level

This commit is contained in:
Oleksandr Pavlyk
2026-05-05 07:44:25 -05:00
parent e53a1a2654
commit 8d1b316765

View File

@@ -41,16 +41,20 @@ void stdrel_criterion::do_add_measurement(nvbench::float64_t measurement)
m_total_cuda_time += measurement;
m_cuda_times.push_back(measurement);
// Compute convergence statistics using CUDA timings:
const auto [cuda_first_quartile, cuda_median, cuda_third_quartile] =
nvbench::detail::statistics::compute_percentiles(m_cuda_times.cbegin(),
m_cuda_times.cend(),
{25, 50, 75});
const auto cuda_noise = (cuda_third_quartile - cuda_first_quartile) / cuda_median;
if (std::isfinite(cuda_noise))
// require at least 5 samples for meaningful noise estimate
if (m_total_samples > 4)
{
m_noise_tracker.push_back(cuda_noise);
// Compute convergence statistics using CUDA timings:
const auto [cuda_first_quartile, cuda_median, cuda_third_quartile] =
nvbench::detail::statistics::compute_percentiles(m_cuda_times.cbegin(),
m_cuda_times.cend(),
{25, 50, 75});
const auto cuda_noise = (cuda_third_quartile - cuda_first_quartile) / cuda_median;
if (std::isfinite(cuda_noise))
{
m_noise_tracker.push_back(cuda_noise);
}
}
}