Skip to content

Commit 4e46459

Browse files
committed
Generate a unique filename for generated experiment files to avoid collisions in parallel runs
1 parent d36adb5 commit 4e46459

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

kernel_tuner/backends/hypertuner.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def compile(self, kernel_instance):
111111

112112
name = kernel_instance.name if len(kernel_instance.name) > 0 else kernel_instance.kernel_source.kernel_name
113113
experiments_filepath = generate_experiment_file(name, path, searchspace_strategies, applications, gpus,
114-
override=override, overwrite_existing_file=True)
114+
override=override, generate_unique_file=True, overwrite_existing_file=True)
115115
return str(experiments_filepath)
116116

117117
def start_event(self):
@@ -134,6 +134,9 @@ def run_kernel(self, func, gpu_args=None, threads=None, grid=None, stream=None):
134134
# run the methodology to get a fitness score for this configuration
135135
scores = get_strategy_scores(str(experiments_filepath))
136136
self.last_score = scores[list(scores.keys())[0]]['score']
137+
138+
# remove the experiments file
139+
experiments_filepath.unlink()
137140

138141
def memset(self, allocation, value, size):
139142
return super().memset(allocation, value, size)

kernel_tuner/hyper.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,12 @@ def put_if_not_present(target_dict, key, value):
7575
kwargs['verify'] = None
7676
arguments = [target_strategy]
7777

78+
# IMPORTANT when running this script in parallel, always make sure the below name is unique among your runs!
79+
# e.g. when parallalizing over the hypertuning of multiple strategies, use the strategy name
80+
name = f"hyperparamtuning_{target_strategy.lower()}"
81+
7882
# execute the hyperparameter tuning
79-
result, env = kernel_tuner.tune_kernel('hyperparamtuning', None, [], arguments, hyper_params, *args, lang='Hypertuner',
83+
result, env = kernel_tuner.tune_kernel(name, None, [], arguments, hyper_params, *args, lang='Hypertuner',
8084
objective='score', objective_higher_is_better=True, iterations=iterations, **kwargs)
8185

8286
# remove the temporary cachefile and return only unique results in order

0 commit comments

Comments
 (0)