diff --git a/kernel_tuner/runners/simulation.py b/kernel_tuner/runners/simulation.py index 22c7c667c..4668e8ef6 100644 --- a/kernel_tuner/runners/simulation.py +++ b/kernel_tuner/runners/simulation.py @@ -6,6 +6,7 @@ from kernel_tuner import util from kernel_tuner.runners.runner import Runner + _SimulationDevice = namedtuple("_SimulationDevice", ["max_threads", "env", "quiet"]) @@ -90,6 +91,11 @@ def run(self, parameter_space, tuning_options): if tuning_options.cache and x_int in tuning_options.cache: result = tuning_options.cache[x_int].copy() + # only compute metrics on configs that have not errored + if tuning_options.metrics and not isinstance(result.get(tuning_options.objective), util.ErrorConfig): + result = util.process_metrics(result, tuning_options.metrics) + + # Simulate behavior of sequential runner that when a configuration is # served from the cache by the sequential runner, the compile_time, # verification_time, and benchmark_time are set to 0.