Skip to content

Commit 7d0d5b8

Browse files
committed
feat: apply runtime distribution to cpu work
1 parent 33c91b6 commit 7d0d5b8

1 file changed

Lines changed: 40 additions & 21 deletions

File tree

wfcommons/wfbench/bench.py

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,18 @@ def create_benchmark_from_synthetic_workflow(
116116
f"{self.workflow.name.lower()}-{self.num_tasks}").with_suffix(".json")
117117

118118
cores, lock = self._creating_lock_files(lock_files_folder)
119-
self._set_argument_parameters(percent_cpu, cpu_work, gpu_work, time, mem, lock_files_folder, cores, lock, clear_files=False)
120-
121119
for task in self.workflow.tasks.values():
120+
self._set_argument_parameters(
121+
task,
122+
percent_cpu,
123+
cpu_work * task.runtime, # scale cpu work to task runtime to achieve a runtime distribution
124+
gpu_work,
125+
time,
126+
mem,
127+
lock_files_folder,
128+
cores,
129+
lock
130+
)
122131
if mem:
123132
task.memory = mem
124133

@@ -234,7 +243,19 @@ def create_benchmark(self,
234243
f"{self.workflow.name.lower()}-{self.num_tasks}").with_suffix(".json")
235244

236245
cores, lock = self._creating_lock_files(lock_files_folder)
237-
self._set_argument_parameters(percent_cpu, cpu_work, gpu_work, time, mem, lock_files_folder, cores, lock)
246+
for task in self.tasks.values():
247+
self._set_argument_parameters(
248+
task,
249+
percent_cpu,
250+
cpu_work,
251+
gpu_work,
252+
time,
253+
mem,
254+
lock_files_folder,
255+
cores,
256+
lock
257+
)
258+
task.files = []
238259

239260
self._create_data_footprint(data, save_dir)
240261

@@ -264,38 +285,36 @@ def _creating_lock_files(self, lock_files_folder: Optional[pathlib.Path]) -> Tup
264285
return None, None
265286

266287
def _set_argument_parameters(self,
288+
task: Task,
267289
percent_cpu: Union[float, Dict[str, float]],
268290
cpu_work: Union[int, Dict[str, int]],
269291
gpu_work: Union[int, Dict[str, int]],
270292
time: Optional[int],
271293
mem: Optional[float],
272294
lock_files_folder: Optional[pathlib.Path],
273295
cores: Optional[pathlib.Path],
274-
lock: Optional[pathlib.Path],
275-
clear_files: bool = True) -> None:
296+
lock: Optional[pathlib.Path]) -> None:
276297
"""
277298
Setting the parameters for the arguments section of the JSON
278299
"""
279-
for task in self.workflow.tasks.values():
280-
params = []
300+
params = []
281301

282-
cpu_params = self._generate_task_cpu_params(task, percent_cpu, cpu_work, lock_files_folder, cores, lock)
283-
params.extend(cpu_params)
284-
gpu_params = self._generate_task_gpu_params(task, gpu_work)
285-
params.extend(gpu_params)
302+
cpu_params = self._generate_task_cpu_params(task, percent_cpu, cpu_work, lock_files_folder, cores, lock)
303+
params.extend(cpu_params)
304+
gpu_params = self._generate_task_gpu_params(task, gpu_work)
305+
params.extend(gpu_params)
286306

287-
if mem:
288-
params.extend([f"--mem {mem}"])
307+
if mem:
308+
params.extend([f"--mem {mem}"])
309+
310+
if time:
311+
params.extend([f"--time {time}"])
289312

290-
if time:
291-
params.extend([f"--time {time}"])
313+
task.runtime = 0
292314

293-
task.runtime = 0
294-
if clear_files:
295-
task.files = []
296-
task.program = "wfbench.py"
297-
task.args = [task.name]
298-
task.args.extend(params)
315+
task.program = "wfbench.py"
316+
task.args = [task.name]
317+
task.args.extend(params)
299318

300319
def _generate_task_cpu_params(self,
301320
task: Task,

0 commit comments

Comments
 (0)