diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index b9d173df..c333252e 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -234,6 +234,27 @@ jobs: --disable-progress-bar \ --disable-logger \ workspace setup --dry-run + + - name: Dry run gpcnet/mpi-only on nosite-x86_64 with allocation modifier + run: | + ./bin/benchpark setup gpcnet/mpi-only nosite-x86_64 workspace/ + . workspace/setup.sh + ramble \ + --workspace-dir workspace/gpcnet/mpi-only/nosite-x86_64/workspace \ + --disable-progress-bar \ + --disable-logger \ + workspace setup --dry-run + + - name: Dry run gpcnet/mpi-only on dynamic Tioga with allocation modifier + run: | + ./bin/benchpark system init --dest=tioga-system-gpcnet tioga rocm=551 compiler=cce ~gtl + ./bin/benchpark setup gpcnet/mpi-only-gpcnet ./tioga-system workspace/ + . workspace/setup.sh + ramble \ + --workspace-dir workspace/gpcnet/mpi-only-gpcnet/Tioga-d34a754/workspace \ + --disable-progress-bar \ + --disable-logger \ + workspace setup --dry-run - name: Dry run phloem/mpi-only on nosite-x86_64 with allocation modifier run: | diff --git a/experiments/gpcnet/mpi-only/ramble.yaml b/experiments/gpcnet/mpi-only/ramble.yaml new file mode 100644 index 00000000..13333323 --- /dev/null +++ b/experiments/gpcnet/mpi-only/ramble.yaml @@ -0,0 +1,54 @@ +# Copyright 2023 Lawrence Livermore National Security, LLC and other +# Benchpark Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: Apache-2.0 + +ramble: + include: + - ./configs/software.yaml + - ./configs/variables.yaml + - ./configs/modifier.yaml + config: + deprecated: true + spack_flags: + install: '--add --keep-stage' + concretize: '-U -f' + + modifiers: + - name: allocation + + applications: + gpcnet: + workloads: + network_test: + variables: + #only running on half of available cores per node because of mpi error on ruby when running with more than half + n_ranks: '{n_nodes}*{sys_cores_per_node}//2' + experiments: + gpcnet_network_test_strong_{n_nodes}: + variants: + package_manager: spack + variables: + #must be run on at least 2 nodes + n_nodes: ['2','4'] + network_load_test: + variables: + n_ranks: '{n_nodes}*{sys_cores_per_node}//2' + experiments: + gpcnet_network_load_test_strong_{n_nodes}: + variants: + package_manager: spack + variables: + #must be run on at least 10 nodes + n_nodes: '10' + software: + packages: + gpcnet: + pkg_spec: gpcnet@master +mpi + compiler: default-compiler + environments: + gpcnet: + packages: + - default-mpi + - gpcnet + - '{modifier_package_name}' diff --git a/repo/gpcnet/application.py b/repo/gpcnet/application.py new file mode 100644 index 00000000..09f8e002 --- /dev/null +++ b/repo/gpcnet/application.py @@ -0,0 +1,24 @@ +# Copyright 2023 Lawrence Livermore National Security, LLC and other +# Benchpark Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: Apache-2.0 + +import sys + +from ramble.appkit import * + + +class Gpcnet(ExecutableApplication): + """GPCNet benchmark""" + name = "GPCNet" + + executable('p1', 'network_test', use_mpi=True) + executable('p2', 'network_load_test', use_mpi=True) + workload('network_test', executables=['p1']) + workload('network_load_test', executables=['p2']) + + figure_of_merit('TBD', + log_file='{experiment_run_dir}/{experiment_name}.out', + fom_regex=r'.*', + group_name='fom', units='MiB/sec') + success_criteria('pass', mode='string', match=r'.*', file='{experiment_run_dir}/{experiment_name}.out') diff --git a/repo/gpcnet/package.py b/repo/gpcnet/package.py new file mode 100644 index 00000000..62267da9 --- /dev/null +++ b/repo/gpcnet/package.py @@ -0,0 +1,41 @@ +# Copyright 2023 Lawrence Livermore National Security, LLC and other +# Benchpark Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: Apache-2.0 + +from spack.package import * + +class Gpcnet(MakefilePackage): + + + tags = ["proxy-app"] + + homepage = "https://codesign.llnl.gov/quicksilver.php" + url = "https://github.com/netbench/GPCNET/archive/refs/tags/1.2.tar.gz" + git = "https://github.com/netbench/GPCNET" + + maintainers("knox10") + + version("master", branch="master") + + variant("mpi", default=False, description="Build with MPI support") + + depends_on("mpi", when="+mpi") + + @property + def build_targets(self): + targets = ["all"] + return targets + + def edit(self, spec, prefix): + makefile = FileFilter("Makefile") + makefile.filter('CC = cc', "CC = {0}".format(spec["mpi"].mpicc)) + + + def install(self, spec, prefix): + mkdir(prefix.bin) + mkdir(prefix.doc) + install("network_test", prefix.bin) + install("network_load_test", prefix.bin) + install("LICENSE", prefix.doc) + install("README.md", prefix.doc)