Skip to content

Commit 58d07d5

Browse files
committed
Change TuningBudget to take max instead of min in fraction spent
1 parent e6f5f3e commit 58d07d5

1 file changed

Lines changed: 20 additions & 14 deletions

File tree

kernel_tuner/util.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,12 @@ def check_argument_list(kernel_name, kernel_string, args):
191191

192192

193193
class Timer:
194+
"""Measures elapsed wall-clock time."""
194195
def __init__(self):
195196
self.reset()
196197

197198
def reset(self):
199+
"""Reset the timer to now."""
198200
self._start_ns = time.perf_counter_ns()
199201

200202
def get(self) -> float:
@@ -214,13 +216,15 @@ def __str__(self) -> str:
214216
elapsed = self.get()
215217

216218
if elapsed < 1:
217-
return f"{elapsed * 1e3:.2f} ms"
219+
result = f"{elapsed * 1e3:.2f} ms"
218220
elif elapsed < 60:
219-
return f"{elapsed:.3f} s"
221+
result = f"{elapsed:.3f} s"
220222
elif elapsed < 3600:
221-
return f"{elapsed / 60:.2f} min"
223+
result = f"{elapsed / 60:.2f} min"
222224
else:
223-
return f"{elapsed / 3600:.2f} h"
225+
result = f"{elapsed / 3600:.2f} h"
226+
227+
return result
224228

225229

226230
class TuningBudget:
@@ -282,15 +286,15 @@ def raise_exception_if_done(self):
282286
raise StopCriterionReached("time limit exceeded")
283287

284288
def get_fraction_consumed(self) -> float:
285-
if self.max_fevals is not None and self.time_limit is not None:
286-
time_spent = self.get_time_spent()
287-
return min(1.0, time_spent / self.time_limit, self.num_fevals / self.max_fevals)
288-
elif self.max_fevals is not None:
289-
return min(1.0, self.num_fevals / self.max_fevals)
290-
elif self.time_limit is not None:
291-
return min(1.0, self.get_time_spent() / self.time_limit)
292-
else:
293-
return 0.0
289+
result = 0.0
290+
291+
if self.max_fevals is not None:
292+
result = max(result, self.num_fevals / self.max_fevals)
293+
294+
if self.time_limit is not None:
295+
result = max(result, self.get_time_spent() / self.time_limit)
296+
297+
return min(1.0, result)
294298

295299

296300
def check_tune_params_list(tune_params, observers, simulation_mode=False):
@@ -1322,7 +1326,9 @@ def process_cache(cachefile, kernel_options, tuning_options, runner):
13221326
# if in simulation mode, use the device name from the cache file as the runner device name
13231327
if runner.simulation_mode:
13241328
device_name = cached_data["device_name"]
1325-
runner.dev.name = device_name # Is this always safe?
1329+
1330+
# Is this always safe?
1331+
runner.dev.name = device_name
13261332

13271333
# check if it is safe to continue tuning from this cache
13281334
if cached_data["device_name"] != device_name:

0 commit comments

Comments
 (0)