Skip to content

Commit c53f8c8

Browse files
committed
Fix issues with default stopping params.
1 parent 249a74f commit c53f8c8

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

nvbench/detail/measure_cold.cu

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ void measure_cold_base::generate_summaries()
401401
get_param(max_noise, "max-noise");
402402

403403
std::optional<nvbench::float64_t> min_time;
404-
get_param(max_noise, "min-time");
404+
get_param(min_time, "min-time");
405405

406406
if (max_noise && cuda_noise > *max_noise)
407407
{

nvbench/detail/measure_cpu_only.cxx

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -210,19 +210,30 @@ void measure_cpu_only_base::generate_summaries()
210210

211211
if (m_max_time_exceeded)
212212
{
213-
const auto timeout = m_walltime_timer.get_duration();
214-
const auto max_noise = m_criterion_params.get_float64("max-noise");
215-
const auto min_time = m_criterion_params.get_float64("min-time");
213+
const auto timeout = m_walltime_timer.get_duration();
216214

217-
if (cpu_noise > max_noise)
215+
auto get_param = [this](std::optional<nvbench::float64_t> &param, const std::string &name) {
216+
if (m_criterion_params.has_value(name))
217+
{
218+
param = m_criterion_params.get_float64(name);
219+
}
220+
};
221+
222+
std::optional<nvbench::float64_t> max_noise;
223+
get_param(max_noise, "max-noise");
224+
225+
std::optional<nvbench::float64_t> min_time;
226+
get_param(min_time, "min-time");
227+
228+
if (max_noise && cpu_noise > *max_noise)
218229
{
219230
printer.log(nvbench::log_level::warn,
220231
fmt::format("Current measurement timed out ({:0.2f}s) "
221232
"while over noise threshold ({:0.2f}% > "
222233
"{:0.2f}%)",
223234
timeout,
224235
cpu_noise * 100,
225-
max_noise * 100));
236+
*max_noise * 100));
226237
}
227238
if (m_total_samples < m_min_samples)
228239
{
@@ -233,15 +244,15 @@ void measure_cpu_only_base::generate_summaries()
233244
m_total_samples,
234245
m_min_samples));
235246
}
236-
if (m_total_cpu_time < min_time)
247+
if (min_time && m_total_cpu_time < *min_time)
237248
{
238249
printer.log(nvbench::log_level::warn,
239250
fmt::format("Current measurement timed out ({:0.2f}s) "
240251
"before accumulating min_time ({:0.2f}s < "
241252
"{:0.2f}s)",
242253
timeout,
243254
m_total_cpu_time,
244-
min_time));
255+
*min_time));
245256
}
246257
}
247258

nvbench/state.cuh

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,11 @@ struct state
174174
/// Only applies to `stdrel` stopping criterion. @{
175175
[[nodiscard]] nvbench::float64_t get_min_time() const
176176
{
177-
return m_criterion_params.get_float64("min-time");
177+
if (m_criterion_params.has_value("min-time"))
178+
{
179+
return m_criterion_params.get_float64("min-time");
180+
}
181+
return 0.;
178182
}
179183
void set_min_time(nvbench::float64_t min_time)
180184
{
@@ -188,7 +192,11 @@ struct state
188192
/// Only applies to `stdrel` stopping criterion. @{
189193
[[nodiscard]] nvbench::float64_t get_max_noise() const
190194
{
191-
return m_criterion_params.get_float64("max-noise");
195+
if (m_criterion_params.has_value("max-noise"))
196+
{
197+
return m_criterion_params.get_float64("max-noise");
198+
}
199+
return 1.;
192200
}
193201
void set_max_noise(nvbench::float64_t max_noise)
194202
{

0 commit comments

Comments
 (0)