added the --arch-regexp option to allow the user to restrict benchmarks on some architectures

As an example, this allowed me to run the benchmark on alambix50 only for testing purposes.

work related to [https://bugzilla.ipr.univ-rennes.fr/show_bug.cgi?id=3372]
This commit is contained in:
Guillaume Raffy 2024-10-08 17:27:05 +02:00
parent c534d7e135
commit 5d59650e84
2 changed files with 22 additions and 4 deletions

View File

@ -236,7 +236,7 @@ def launch_job_for_host_group(hibridon_version: GitCommitTag, host_group_id: Hos
subprocess.run(qsub_command, cwd=this_bench_dir, check=True, shell=True)
def launch_perf_jobs(hibridon_version: GitCommitTag, results_dir: Path):
def launch_perf_jobs(hibridon_version: GitCommitTag, results_dir: Path, arch_regexp: str):
"""
hibridon_version: the version of hibridon to test, in the form of a valid commit number eg 'a3bed1c3ccfbca572003020d3e3d3b1ff3934fad'
results_dir: where the results of the benchmark are stored (eg $GLOBAL_WORK_DIR/graffy/benchmarks/hibench)
@ -247,7 +247,7 @@ def launch_perf_jobs(hibridon_version: GitCommitTag, results_dir: Path):
'ifort'
]
host_groups = [
all_host_groups = [
'intel_xeon_x5550',
'intel_xeon_x5650',
'intel_xeon_e5-2660',
@ -261,6 +261,9 @@ def launch_perf_jobs(hibridon_version: GitCommitTag, results_dir: Path):
'intel_xeon_gold_6248r',
'amd_epyc_7282',
]
print(f'available host groups: {all_host_groups}')
host_groups = [host_group for host_group in all_host_groups if re.match(arch_regexp, host_group) is not None]
print(f'requested host groups: {host_groups}')
for compiler in compilers:
for host_group in host_groups:
@ -283,6 +286,7 @@ def main():
arg_parser = ArgumentParser(description='launches hibridon benchmark jobs on IPR\'s physix cluster', epilog='example:\n --commit-id a3bed1c3ccfbca572003020d3e3d3b1ff3934fad')
arg_parser.add_argument('--commit-id', type=str, required=True, help='the commit id of the version of code to benchmark')
arg_parser.add_argument('--results-dir', type=Path, required=True, help='the root directory of the tree where the results of the benchmarks are stored (eg $GLOBAL_WORK_DIR/graffy/benchmarks/hibench)')
arg_parser.add_argument('--arch-regexp', type=str, default='.*', help='the regular expression for the architectures the benchmark is allowed to run on (eg "intel_xeon_.*"). By defauls, all available architectures are allowed.')
args = arg_parser.parse_args()
hibridon_version = args.commit_id
@ -292,10 +296,12 @@ def main():
# code_version='dd0f413b85cf0f727a5a4e88b2b02d75a28b377f' # latest from branch graffy-issue51 as of 10/06/2022 00:30
results_dir = Path(args.results_dir)
arch_regexp = args.arch_regexp
if not path_is_reachable_by_compute_nodes(results_dir):
raise ValueError('the results path is expected to be on a disk that is accessible to all cluster nodes, and it doesn\'t seem to be the case for {results_dir}')
launch_perf_jobs(hibridon_version, results_dir)
launch_perf_jobs(hibridon_version, results_dir, arch_regexp)
main()

View File

@ -1,9 +1,21 @@
This example illustrates how `starbench` is used at IPR (Institut de Physique de Rennes) to measure the performance of [hibridon](https://github.com/hibridon/hibridon) on IPR's cluster (`physix`)
usage:
```sh
graffy@physix-frontal:/opt/ipr/cluster/work.global/graffy/starbench$ ./hibenchonphysix.py --commit-id 53894da48505892bfa05693a52312bacb12c70c9 --results-dir $GLOBAL_WORK_DIR/graffy/hibridon/benchmarks/starbench/hibench/2024-10-07-16:00:00
20241007-15:08:10 graffy@graffy-ws2:~/work/starbench/starbench.git$ rsync --exclude .git --exclude starbench.venv --exclude tmp --exclude usecases/ipr/hibench/results -va ./ graffy@alambix.ipr.univ-rennes.fr:/opt/ipr/cluster/work.global/graffy/starbench.git/
sending incremental file list
sent 1,416 bytes received 25 bytes 960.67 bytes/sec
total size is 140,225 speedup is 97.31
last command status : [0]
```
```sh
graffy@physix-frontal:/opt/ipr/cluster/work.global/graffy/starbench.git/usecases/ipr/hibench$ ./hibenchonphysix.py --commit-id 53894da48505892bfa05693a52312bacb12c70c9 --results-dir $GLOBAL_WORK_DIR/graffy/hibridon/benchmarks/starbench/hibench/$(date --iso=seconds) --arch-regexp 'intel_xeon_x5650'
```
`hibenchonphysix.py` script launches two `sge` jobs for each machine type in `physix` cluster: