From 8d1b316765587c5eb2cd5262e61220a9fa8e24a8 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk <21087696+oleksandr-pavlyk@users.noreply.github.com> Date: Tue, 5 May 2026 07:44:25 -0500 Subject: [PATCH] Require at least 5 samples to begin estimating noise level --- nvbench/detail/stdrel_criterion.cxx | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/nvbench/detail/stdrel_criterion.cxx b/nvbench/detail/stdrel_criterion.cxx index f03409f..6fc42b3 100644 --- a/nvbench/detail/stdrel_criterion.cxx +++ b/nvbench/detail/stdrel_criterion.cxx @@ -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); + } } }