Skip to content

Commit

Permalink
Implement a default all option for workloads
Browse files Browse the repository at this point in the history
  • Loading branch information
Riyaz Haque committed Dec 12, 2024
1 parent 10ba803 commit 3f7ce24
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 19 deletions.
1 change: 1 addition & 0 deletions experiments/osu-micro-benchmarks/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class OsuMicroBenchmarks(Experiment):
"osu_hello",
"osu_init",
),
multi=True,
description="workloads available",
)

Expand Down
43 changes: 24 additions & 19 deletions lib/benchpark/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ def __init__(self, spec):
self.name = self.spec.name

if "workload" in self.spec.variants:
self.workload = self.spec.variants["workload"][0]
self.workload = self.spec.variants["workload"]
else:
raise BenchparkError(f"No workload variant defined for package {self.name}")

Expand Down Expand Up @@ -172,30 +172,35 @@ def compute_applications_section_wrapper(self):

self.compute_applications_section()

expr_name_list = [self.name, self.workload]
expr_helper_list = []
for cls in self.helpers:
helper_prefix = cls.get_helper_name_prefix()
if helper_prefix:
expr_name_list.append(helper_prefix)
expr_name = "_".join(expr_name_list + self.expr_name)
expr_helper_list.append(helper_prefix)
expr_name_suffix = "_".join(expr_helper_list + self.expr_name)

expr_setup = {
"variants": {"package_manager": "spack"},
"variables": self.variables,
"zips": self.zips,
"matrix": self.matrix,
"exclude": (
{"where": self.excludes} if self.excludes else {}
),
}

workloads = {}
for workload in self.workload:
expr_name = f"{self.name}_{workload}_{expr_name_suffix}"
workloads[workload] = {
"experiments": {
expr_name: expr_setup,
}
}

return {
self.name: {
"workloads": {
self.workload: {
"experiments": {
expr_name: {
"variants": {"package_manager": "spack"},
"variables": self.variables,
"zips": self.zips,
"matrix": self.matrix,
"exclude": (
{"where": self.excludes} if self.excludes else {}
),
}
}
}
}
"workloads": workloads,
}
}

Expand Down
15 changes: 15 additions & 0 deletions lib/benchpark/spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import re
from typing import Iterable, Iterator, List, Match, Optional, Union

from benchpark.error import BenchparkError
import benchpark.paths
import benchpark.repo
import benchpark.runtime
Expand Down Expand Up @@ -295,6 +296,20 @@ def _concretize(self):
if not self.namespace:
self._namespace = self.object_class.namespace

variant_map = list(self.object_class.variants.values())[0]
if "workload" in variant_map.keys():
if "workload" not in self.variants:
if variant_map["workload"].default:
self.variants["workload"] = variant_map["workload"].default
if "all" in self.variants["workload"]:
if variant_map["workload"].multi:
del self.variants["workload"]
self.variants["workload"] = variant_map["workload"].values
else:
raise BenchparkError(f"The workload variant in must be multi-valued to use the 'all' option in package {self.name}")
else:
raise BenchparkError(f"Package {self.name} must define a workload variant")

# For variants that are set, set whatever they imply
variants_to_check = set(
(name, values) for name, values in self.variants.items()
Expand Down

0 comments on commit 3f7ce24

Please sign in to comment.