diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e22e4ccaa..6522a5809 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,13 +23,13 @@ jobs: license: ${{ steps.filter.outputs.license }} steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # @v2 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # @v2 if: ${{ github.event_name == 'push' }} with: fetch-depth: 0 # For pull requests it's not necessary to checkout the code - - uses: dorny/paths-filter@ebc4d7e9ebcb0b1eb21480bb8f43113e996ac77a + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 id: filter with: filters: | @@ -48,6 +48,7 @@ jobs: - '.github/**' - 'bin/**' - 'configs/**' + - 'checkout-versions.yaml' - 'experiments/**' - 'repo/**' license: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d0fb445f2..98ba3c468 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -7,10 +7,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - name: Setup Python - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d with: python-version: '3.11' cache: 'pip' @@ -18,15 +18,20 @@ jobs: - name: Setup GitHub Pages id: pages - uses: actions/configure-pages@1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d + uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b - name: Install Sphinx and Theme via Pip run: | pip install -r .github/workflows/requirements/docs.txt + # create a dummy workspace to get a working ramble + bin/benchpark setup saxpy/openmp nosite-x86_64 /tmp/workspace + # this is gross and we should better setup ramble for people or make it a Spack package + pip install -r /tmp/workspace/ramble/requirements.txt - name: Build with sphinx run: | - sphinx-build docs/ _build + cd docs + make html WORKSPACE_PATH=/tmp/workspace - name: Check for Typos using Codespell run: | @@ -36,7 +41,7 @@ jobs: uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa if: github.ref == 'refs/heads/develop' with: - path: ./_build + path: ./docs/_build/html deploy: needs: build @@ -54,4 +59,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@decdde0ac072f6dcbe43649d82d9c635fff5b4e4 + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e diff --git a/.github/workflows/license.yml b/.github/workflows/license.yml index a43d7ae4f..6330ac93d 100644 --- a/.github/workflows/license.yml +++ b/.github/workflows/license.yml @@ -6,10 +6,10 @@ jobs: verify-license: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - name: Set up Python 3.11 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d with: python-version: '3.11' cache: 'pip' diff --git a/.github/workflows/requirements/docs.txt b/.github/workflows/requirements/docs.txt index 6078a7a31..1a85cd4eb 100644 --- a/.github/workflows/requirements/docs.txt +++ b/.github/workflows/requirements/docs.txt @@ -2,3 +2,21 @@ sphinx==7.2.6 sphinx-rtd-theme==2.0.0 codespell==2.2.6 +pandas==2.2.1 +pyyaml==6.0.1 +sphinxcontrib-programoutput==0.17 +# The remaining requirements are from Ramble +pytest +flake8 +google-cloud-storage # for gcs fetch test +google-api-core # for gcs fetch error .exceptions +coverage +pre-commit +graphlib-backport;python_version<"3.9" +urllib3==1.26.18;python_version<="3.6" +protobuf;python_version>"3.6" +protobuf==3.19.4;python_version<="3.6" +pyarrow==3.0.0;python_version<="3.6" +google-cloud-bigquery +tqdm +deprecation diff --git a/.github/workflows/requirements/style.txt b/.github/workflows/requirements/style.txt index 8d5934c31..de8aea164 100644 --- a/.github/workflows/requirements/style.txt +++ b/.github/workflows/requirements/style.txt @@ -1,4 +1,4 @@ -black==24.2.0 +black==24.3.0 flake8==7.0.0 isort==5.13.2 codespell==2.2.6 diff --git a/.github/workflows/run.yml b/.github/workflows/run.yml index acda18e73..0be114140 100644 --- a/.github/workflows/run.yml +++ b/.github/workflows/run.yml @@ -11,7 +11,11 @@ jobs: sudo apt-get remove -y gcc-13 - name: Checkout Benchpark - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 + + - name: Add needed Python libs + run: | + pip install -r ./requirements.txt - name: Build Saxpy Workspace run: | @@ -22,7 +26,7 @@ jobs: . workspace/setup.sh spack mirror add ci-buildcache oci://ghcr.io/llnl/benchpark-binary-cache - spack config add "packages:all:target:[nosite-x86_64_v3]" + spack config add "packages:all:target:[x86_64_v3]" env | grep SPACK >> "$GITHUB_ENV" env | grep RAMBLE >> "$GITHUB_ENV" @@ -42,12 +46,12 @@ jobs: working-directory: ./workspace/saxpy/openmp/nosite-x86_64/workspace/ run: | ramble \ - -c variables:n_nodes:1 \ - -c variables:n_ranks:1 \ --workspace-dir . \ --disable-progress-bar \ --disable-logger \ - on + on \ + --executor '{execute_experiment}' \ + --where '{n_nodes} == 1' - name: Analyze Saxpy Results working-directory: ./workspace/saxpy/openmp/nosite-x86_64/workspace/ diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index a4543f2fc..ed17ef2a1 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -6,10 +6,10 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 - name: Set up Python 3.11 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d with: python-version: '3.11' cache: 'pip' diff --git a/README.rst b/README.rst index fb2559999..bb9b4a50f 100644 --- a/README.rst +++ b/README.rst @@ -1,7 +1,17 @@ -================================================== -Benchpark -================================================== - +.. raw:: html + +
+

+ + + + Benchpark + +

+
+ +Overview +-------- You can find detailed documentation at `software.llnl.gov/benchpark `_. Benchpark can also be found on `GitHub `_. @@ -12,19 +22,19 @@ reproducible, working specifications for the following: 1. **System specifications** -- location of system compilers and system MPI -- system scheduler and launcher +* location of system compilers and system MPI +* system scheduler and launcher 2. **Benchmark specifications** -- source repo and version -- build (Spack) configuration -- run (Ramble) configuration +* source repo and version +* build (Spack) configuration +* run (Ramble) configuration 3. **Experiment specifications** -- programming models to use for benchmarks on a given system type -- valid experiments for benchmarks on a given system (scientific parameter studies, performance parameter studies, etc.) +* programming models to use for benchmarks on a given system type +* valid experiments for benchmarks on a given system (scientific parameter studies, performance parameter studies, etc.) Dependencies ------------ diff --git a/bin/benchpark b/bin/benchpark index 395ae0a4e..a5359a2e9 100755 --- a/bin/benchpark +++ b/bin/benchpark @@ -6,12 +6,14 @@ # SPDX-License-Identifier: Apache-2.0 import argparse +from contextlib import contextmanager import os import pathlib import shlex import shutil import subprocess import sys +import yaml DEBUG = False @@ -37,6 +39,7 @@ def main(): actions = {} benchpark_list(subparsers, actions) benchpark_setup(subparsers, actions) + benchpark_tags(subparsers, actions) args = parser.parse_args() no_args = True if len(sys.argv) == 1 else False @@ -60,7 +63,6 @@ def main(): def get_version(): benchpark_version = __version__ - return benchpark_version @@ -87,6 +89,15 @@ def benchpark_benchmarks(): return benchmarks +def benchpark_experiments(): + source_dir = source_location() + experiments = [] + experiments_dir = source_dir / "experiments" + for x in os.listdir(experiments_dir): + experiments.append(f"{x}") + return experiments + + def benchpark_systems(): source_dir = source_location() systems = [] @@ -95,6 +106,28 @@ def benchpark_systems(): return systems +def benchpark_get_tags(): + f = source_location() / "tags.yaml" + tags = [] + + with open(f, "r") as stream: + try: + data = yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) + + for k0, v0 in data.items(): + if k0 == "benchpark-tags": + for k, v in v0.items(): + if isinstance(v, list): + for i in v: + tags.append(i) + else: + print("ERROR file does not contain benchpark-tags") + + return tags + + def benchpark_list_handler(args): source_dir = source_location() sublist = args.sublist @@ -135,6 +168,17 @@ def benchpark_check_benchmark(arg_str): return found +def benchpark_check_experiment(arg_str): + experiments = benchpark_experiments() + found = arg_str in experiments + if not found: + out_str = f'Invalid benchmark/experiment "{arg_str}" - must choose one of: ' + for experiment in experiments: + out_str += f"\n\t{experiment}" + raise ValueError(out_str) + return found + + def benchpark_check_system(arg_str): systems = benchpark_systems() found = arg_str in systems @@ -146,6 +190,17 @@ def benchpark_check_system(arg_str): return found +def benchpark_check_tag(arg_str): + tags = benchpark_get_tags() + found = arg_str in tags + if not found: + out_str = f'Invalid tag "{arg_str}" - must choose one of: ' + for tag in tags: + out_str += f"\n\t{tag}" + raise ValueError(out_str) + return found + + def benchpark_setup(subparsers, actions_dict): create_parser = subparsers.add_parser( "setup", help="Set up an experiment and prepare it to build/run" @@ -173,22 +228,52 @@ def benchpark_setup(subparsers, actions_dict): def run_command(command_str, env=None): - subprocess.run( + proc = subprocess.Popen( shlex.split(command_str), env=env, - check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, ) + stdout, stderr = proc.communicate() + if proc.returncode != 0: + raise RuntimeError( + f"Failed command: {command_str}\nOutput: {stdout}\nError: {stderr}" + ) + + return (stdout, stderr) + + +def benchpark_tags(subparsers, actions_dict): + create_parser = subparsers.add_parser("tags", help="Tags in Benchpark experiments") + create_parser.add_argument( + "experiments_root", + type=str, + help="The experiments_root you specified during Benchpark setup.", + ) + create_parser.add_argument( + "-a", + "--application", + action="store", + help="The application for which to find Benchpark tags", + ) + create_parser.add_argument( + "-t", + "--tag", + action="store", + help="The tag for which to search in Benchpark experiments", + ) + actions_dict["tags"] = benchpark_tags_handler # Note: it would be nice to vendor spack.llnl.util.link_tree, but that # involves pulling in most of llnl/util/ and spack/util/ -def symlink_tree(src, dst): +def symlink_tree(src, dst, include_fn=None): """Like ``cp -R`` but instead of files, create symlinks""" src = os.path.abspath(src) dst = os.path.abspath(dst) + # By default, we include all filenames + include_fn = include_fn or (lambda f: True) for x in [src, dst]: if not os.path.isdir(x): raise ValueError(f"Not a directory: {x}") @@ -197,11 +282,30 @@ def symlink_tree(src, dst): dst_dir = pathlib.Path(dst) / relative_src_dir dst_dir.mkdir(parents=True, exist_ok=True) for x in files: + if not include_fn(x): + continue dst_symlink = dst_dir / x src_file = os.path.join(src_subdir, x) os.symlink(src_file, dst_symlink) +@contextmanager +def working_dir(location): + initial_dir = os.getcwd() + try: + os.chdir(location) + yield + finally: + os.chdir(initial_dir) + + +def git_clone_commit(url, commit, destination): + run_command(f"git clone -c feature.manyFiles=true {url} {destination}") + + with working_dir(destination): + run_command(f"git checkout {commit}") + + def benchpark_setup_handler(args): """ experiments_root/ @@ -248,17 +352,37 @@ def benchpark_setup_handler(args): ramble_workspace_dir = workspace_dir / "workspace" ramble_configs_dir = ramble_workspace_dir / "configs" + ramble_logs_dir = ramble_workspace_dir / "logs" + ramble_spack_experiment_configs_dir = ( + ramble_configs_dir / "auxiliary_software_files" + ) print(f"Setting up configs for Ramble workspace {ramble_configs_dir}") configs_src_dir = source_dir / "configs" / str(system) experiment_src_dir = source_dir / "experiments" / benchmark modifier_config_dir = source_dir / "modifiers" / modifier / "configs" - ramble_configs_dir.mkdir(parents=True) - symlink_tree(configs_src_dir, ramble_configs_dir) - symlink_tree(experiment_src_dir, ramble_configs_dir) - symlink_tree(modifier_config_dir, ramble_configs_dir) + ramble_logs_dir.mkdir(parents=True) + ramble_spack_experiment_configs_dir.mkdir(parents=True) + + def include_fn(fname): + # Only include .yaml and .tpl files + # Always exclude files that start with "." + if fname.startswith("."): + return False + if fname.endswith(".yaml") or fname.endswith(".tpl"): + return True + return False + + symlink_tree(configs_src_dir, ramble_configs_dir, include_fn) + symlink_tree(experiment_src_dir, ramble_configs_dir, include_fn) + symlink_tree(modifier_config_dir, ramble_configs_dir, include_fn) + symlink_tree( + source_dir / "configs" / "common", + ramble_spack_experiment_configs_dir, + include_fn, + ) spack_location = experiments_root / "spack" ramble_location = experiments_root / "ramble" @@ -269,12 +393,16 @@ def benchpark_setup_handler(args): initializer_script = experiments_root / "setup.sh" + checkout_versions_location = source_dir / "checkout-versions.yaml" + with open(checkout_versions_location, "r") as yaml_file: + data = yaml.safe_load(yaml_file) + ramble_commit = data["versions"]["ramble"] + spack_commit = data["versions"]["spack"] + if not spack_location.exists(): print(f"Cloning spack into {spack_location}") - run_command( - "git clone --depth=1 -c feature.manyFiles=true " - "https://github.com/spack/spack.git " - f"{spack_location}" + git_clone_commit( + "https://github.com/spack/spack.git", spack_commit, spack_location ) env = {"SPACK_DISABLE_LOCAL_CONFIG": "1"} @@ -286,10 +414,10 @@ def benchpark_setup_handler(args): if not ramble_location.exists(): print(f"Cloning ramble into {ramble_location}") - run_command( - "git clone --depth=1 -c feature.manyFiles=true " - "https://github.com/GoogleCloudPlatform/ramble.git " - f"{ramble_location}" + git_clone_commit( + "https://github.com/GoogleCloudPlatform/ramble.git", + ramble_commit, + ramble_location, ) run_command(f"{ramble_exe} repo add --scope=site {source_dir}/repo") @@ -330,5 +458,54 @@ Further steps are needed to build the experiments (ramble -P -D {ramble_workspac print(instructions) +def helper_experiments_tags(ramble_exe, experiments): + # find all tags in Ramble applications (both in Ramble built-in and in Benchpark/repo) + (tags_stdout, tags_stderr) = run_command(f"{ramble_exe} attributes --tags --all") + ramble_applications_tags = {} + lines = tags_stdout.splitlines() + + for line in lines: + key_value = line.split(":") + ramble_applications_tags[key_value[0]] = key_value[1].strip().split(",") + + benchpark_experiments_tags = {} + for exp in experiments: + benchpark_experiments_tags[exp] = ramble_applications_tags[exp] + return benchpark_experiments_tags + + +def benchpark_tags_handler(args): + """ + Filter ramble tags by benchpark experiments + """ + source_dir = source_location() + experiments_root = pathlib.Path(os.path.abspath(args.experiments_root)) + ramble_location = experiments_root / "ramble" + ramble_exe = ramble_location / "bin" / "ramble" + experiments = benchpark_experiments() + + if args.tag: + if benchpark_check_tag(args.tag): + # find all applications in Ramble that have a given tag (both in Ramble built-in and in Benchpark/repo) + (tag_stdout, tag_stderr) = run_command(f"{ramble_exe} list -t {args.tag}") + lines = tag_stdout.splitlines() + + for line in lines: + if line in experiments: + print(line) + + elif args.application: + if benchpark_check_experiment(args.application): + benchpark_experiments_tags = helper_experiments_tags( + ramble_exe, experiments + ) + print(benchpark_experiments_tags[args.application]) + else: + benchpark_experiments_tags = helper_experiments_tags(ramble_exe, experiments) + print("All tags that exist in Benchpark experiments:") + for k, v in benchpark_experiments_tags.items(): + print(k) + + if __name__ == "__main__": main() diff --git a/experiments/lbann/rocm/execute_experiment.tpl b/checkout-versions.yaml old mode 100755 new mode 100644 similarity index 62% rename from experiments/lbann/rocm/execute_experiment.tpl rename to checkout-versions.yaml index 1e2ea813e..2d7d07ce6 --- a/experiments/lbann/rocm/execute_experiment.tpl +++ b/checkout-versions.yaml @@ -3,11 +3,6 @@ # # SPDX-License-Identifier: Apache-2.0 -#!/bin/bash -{batch_nodes} -{batch_ranks} -{batch_timeout} - -cd {experiment_run_dir} - -{command} +versions: + ramble: bb664f142b2cbdb2b2ea39e70a8535c9f27c1179 + spack: 31de670bd26beca979ebd75dcb0ce90c535a78c4 diff --git a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/compilers.yaml b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/compilers.yaml index 25129f761..3b3f364cf 100644 --- a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/compilers.yaml +++ b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/compilers.yaml @@ -4,25 +4,6 @@ # SPDX-License-Identifier: Apache-2.0 compilers: -- compiler: - spec: fj@4.10.0 - modules: [] - paths: - cc: /opt/FJSVxtclanga/tcsds-1.2.38/bin/fcc - cxx: /opt/FJSVxtclanga/tcsds-1.2.38/bin/FCC - f77: /opt/FJSVxtclanga/tcsds-1.2.38/bin/frt - fc: /opt/FJSVxtclanga/tcsds-1.2.38/bin/frt - flags: {} - operating_system: rhel8 - target: aarch64 - environment: - set: - fcc_ENV: -Nclang - FCC_ENV: -Nclang - prepend_path: - PATH: /opt/FJSVxtclanga/tcsds-1.2.38/bin - LD_LIBRARY_PATH: /opt/FJSVxtclanga/tcsds-1.2.38/lib64 - extra_rpaths: [] - compiler: spec: fj@4.8.1 modules: [] @@ -43,83 +24,27 @@ compilers: LD_LIBRARY_PATH: /opt/FJSVxtclanga/tcsds-1.2.36/lib64 extra_rpaths: [] - compiler: - spec: fj@4.8.0 - modules: [] - paths: - cc: /opt/FJSVxtclanga/tcsds-1.2.35/bin/fcc - cxx: /opt/FJSVxtclanga/tcsds-1.2.35/bin/FCC - f77: /opt/FJSVxtclanga/tcsds-1.2.35/bin/frt - fc: /opt/FJSVxtclanga/tcsds-1.2.35/bin/frt - flags: {} - operating_system: rhel8 - target: aarch64 - environment: - set: - fcc_ENV: -Nclang - FCC_ENV: -Nclang - prepend_path: - PATH: /opt/FJSVxtclanga/tcsds-1.2.35/bin - LD_LIBRARY_PATH: /opt/FJSVxtclanga/tcsds-1.2.35/lib64 - extra_rpaths: [] -- compiler: - spec: fj@4.7.0 - modules: [] + spec: clang@15.0.3 paths: - cc: /opt/FJSVxtclanga/tcsds-1.2.34/bin/fcc - cxx: /opt/FJSVxtclanga/tcsds-1.2.34/bin/FCC - f77: /opt/FJSVxtclanga/tcsds-1.2.34/bin/frt - fc: /opt/FJSVxtclanga/tcsds-1.2.34/bin/frt - flags: {} - operating_system: rhel8 - target: aarch64 + cc: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/clang + cxx: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/clang++ + f77: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/flang + fc: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/flang + flags: + cflags: {"-msve-vector-bits=scalable"} + cxxflags: {"-msve-vector-bits=scalable"} + ldflags: {"-fuse-ld=lld -lelf -ldl"} environment: set: - fcc_ENV: -Nclang - FCC_ENV: -Nclang - prepend_path: - PATH: /opt/FJSVxtclanga/tcsds-1.2.34/bin - LD_LIBRARY_PATH: /opt/FJSVxtclanga/tcsds-1.2.34/lib64 - extra_rpaths: [] -- compiler: - paths: - cc: /usr/bin/gcc - cxx: /usr/bin/g++ - f77: /usr/bin/gfortran - fc: /usr/bin/gfortran + OMPI_CC: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/clang + OMPI_CXX: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/clang++ + OMPI_FC: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/flang + OMPI_F77: /vol0004/apps/oss/llvm-v15.0.3/compute_node/bin/flang + append_path: + LD_LIBRARY_PATH: /opt/FJSVxtclanga/tcsds-1.2.36/lib64 operating_system: rhel8 target: aarch64 modules: [] - environment: - unset: [] - extra_rpaths: [] - flags: {} - spec: gcc@8.5.0 -- compiler: - paths: - cc: /usr/bin/gcc - cxx: /usr/bin/g++ - f77: /usr/bin/gfortran - fc: /usr/bin/gfortran - operating_system: rhel8 - target: x86_64 - modules: [] - environment: - unset: [] - extra_rpaths: [] - flags: {} - spec: gcc@8.4.1 -- compiler: - spec: gcc@12.2.0 - paths: - cc: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-skylake_avx512/gcc-8.4.1/gcc-12.2.0-bjidm56oz6mejysl3wvjr3mbn7sqk3ec/bin/gcc - cxx: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-skylake_avx512/gcc-8.4.1/gcc-12.2.0-bjidm56oz6mejysl3wvjr3mbn7sqk3ec/bin//g++ - f77: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-skylake_avx512/gcc-8.4.1/gcc-12.2.0-bjidm56oz6mejysl3wvjr3mbn7sqk3ec/bin/gfortran - fc: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-skylake_avx512/gcc-8.4.1/gcc-12.2.0-bjidm56oz6mejysl3wvjr3mbn7sqk3ec/bin/gfortran - flags: {} - operating_system: rhel8 - target: x86_64 - modules: [] - environment: {} extra_rpaths: [] - compiler: spec: gcc@12.2.0 @@ -128,9 +53,19 @@ compilers: cxx: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/g++ f77: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/gfortran fc: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/gfortran - flags: {} + flags: + ldflags: {"-lelf -ldl"} + environment: + set: + OMPI_CC: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/gcc + OMPI_CXX: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/g++ + OMPI_FC: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/gfortran + OMPI_F77: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/gcc-8.5.0/gcc-12.2.0-sxcx7kmt3qiktffgzzvrj2wmup3g32bc/bin/gfortran + OPAL_PREFIX: /vol0004/apps/oss/mpigcc/fjmpi-gcc12 + append_path: + LD_LIBRARY_PATH: /opt/FJSVxtclanga/tcsds-1.2.36/lib64 operating_system: rhel8 target: aarch64 modules: [] - environment: {} extra_rpaths: [] + diff --git a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/packages.yaml b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/packages.yaml index 591b98ebc..8bb9a74ef 100644 --- a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/packages.yaml +++ b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/auxiliary_software_files/packages.yaml @@ -5,458 +5,206 @@ packages: all: - compiler: [fj, gcc] + compiler: [fj, clang, gcc] providers: mpi: [fujitsu-mpi, openmpi, mpich] blas: [fujitsu-ssl2, openblas] lapack: [fujitsu-ssl2, openblas] scalapack: [fujitsu-ssl2, netlib-scalapack] - fftw-api: [fujitsu-fftw, fftw, rist-fftw] + fftw-api: [fujitsu-ssl2, fftw, rist-fftw] permissions: write: group htslib: version: [1.12] python: externals: - - spec: "python@3.10.8%fj +ssl arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/fj-4.8.1/python-3.10.8-7q66snjvhvy7im57hncbgpirmddrb5sk - - spec: "python@3.10.8%fj +ssl+tkinter arch=linux-rhel8-a64fx" + - spec: "python@3.10.8%fj@4.8.1 +ssl+tkinter arch=linux-rhel8-a64fx" prefix: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-a64fx/fj-4.8.1/python-3.10.8-5q3ncyl2my7oomopsmukduqo36u6pnkg - - spec: "python@3.10.8%gcc +ssl arch=linux-rhel8-cascadelake" - prefix: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-cascadelake/gcc-12.2.0/python-3.10.8-yt6afcnywa36aebxovs3ldscknyzlva3 - - spec: "python@3.10.8%gcc +ssl+tkinter arch=linux-rhel8-cascadelake" - prefix: /vol0004/apps/oss/spack-v0.19/opt/spack/linux-rhel8-cascadelake/gcc-12.2.0/python-3.10.8-a5u7ucknpzdipu2dd3d7hf2ybkdyprly openssh: permissions: write: user fujitsu-mpi: - version: [head, 4.8.1, 4.8.0, 4.7.0] externals: - - spec: "fujitsu-mpi@head%fj arch=linux-rhel8-a64fx" - prefix: /opt/FJSVxtclanga/tcsds-mpi-latest - - spec: "fujitsu-mpi@4.8.1%fj arch=linux-rhel8-a64fx" + - spec: "fujitsu-mpi@4.8.1%fj@4.8.1 arch=linux-rhel8-a64fx" prefix: /opt/FJSVxtclanga/tcsds-mpi-1.2.36 - - spec: "fujitsu-mpi@4.8.0%fj arch=linux-rhel8-a64fx" - prefix: /opt/FJSVxtclanga/tcsds-mpi-1.2.35 - - spec: "fujitsu-mpi@4.7.0%fj arch=linux-rhel8-a64fx" - prefix: /opt/FJSVxtclanga/tcsds-1.2.34 - - spec: "fujitsu-mpi@head%gcc@12.2.0 arch=linux-rhel8-a64fx" + - spec: "fujitsu-mpi@4.8.1%clang@15.0.3 arch=linux-rhel8-a64fx" + prefix: /opt/FJSVxtclanga/tcsds-mpi-1.2.36 + - spec: "fujitsu-mpi@4.8.1%gcc@12.2.0 arch=linux-rhel8-a64fx" prefix: /vol0004/apps/oss/mpigcc/fjmpi-gcc12 - - spec: "fujitsu-mpi@head%gcc@10.4.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/oss/mpigcc/fjmpi-gcc10 - - spec: "fujitsu-mpi@head%gcc@8.5.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/oss/mpigcc/fjmpi-gcc8 buildable: False fujitsu-ssl2: - version: [head, 4.8.1, 4.8.0, 4.7.0] externals: - - spec: "fujitsu-ssl2@head%fj arch=linux-rhel8-a64fx" - prefix: /opt/FJSVxtclanga/tcsds-ssl2-latest - - spec: "fujitsu-ssl2@4.8.1%fj arch=linux-rhel8-a64fx" + - spec: "fujitsu-ssl2@4.8.1%fj@4.8.1 arch=linux-rhel8-a64fx" + prefix: /opt/FJSVxtclanga/tcsds-ssl2-1.2.36 + - spec: "fujitsu-ssl2@4.8.1%clang@15.0.3 arch=linux-rhel8-a64fx" + prefix: /opt/FJSVxtclanga/tcsds-ssl2-1.2.36 + - spec: "fujitsu-ssl2@4.8.1%gcc@12.2.0 arch=linux-rhel8-a64fx" prefix: /opt/FJSVxtclanga/tcsds-ssl2-1.2.36 - - spec: "fujitsu-ssl2@4.8.0%fj arch=linux-rhel8-a64fx" - prefix: /opt/FJSVxtclanga/tcsds-ssl2-1.2.35 - - spec: "fujitsu-ssl2@4.7.0%fj arch=linux-rhel8-a64fx" - prefix: /opt/FJSVxtclanga/tcsds-1.2.34 - buildable: False - rist-fftw: - externals: - - spec: "rist-fftw@3.3.9-272-g63d6bd70 arch=linux-rhel8-a64fx" - prefix: /vol0004/share/rist/fftw/gcc-10.3.0/3.3.9-272-g63d6bd70 - buildable: False - ntchem: - externals: - - spec: "ntchem@13.0.0%fj@4.8.1 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/ntchem/aarch64/NTChem2013/13.0.0/tcsds-1.2.36/release_mpiomp - - spec: "ntchem@12.2.0%fj arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/ntchem/aarch64/NTChem2013/12.2.0/tcsds-1.2.34/release_mpiomp - buildable: False - abinitmp: - externals: - - spec: "abinitmp@1-22%fj@4.8.1 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/SPACK-Feb2023-ABINIT-MP-VER1-REV22 - - spec: "abinitmp@2-4%fj@4.8.1 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/SPACK-Feb2023-ABINIT-MP-VER2-REV4 - - spec: "abinitmp@2-8%fj@4.8.1 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/SPACK-Jan2024-ABINIT-MP-VER2-REV8 - buildable: False - fds: - externals: - - spec: "fds@6.7.7%fj@4.8.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/FDS/fds-FDS6.7.7/Build/mpi_fugaku - - spec: "fds@6.7.9%fj@4.8.1 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/FDS/fds-FDS6.7.9/Build/mpi_fugaku - buildable: False - ffvhc-ace: - externals: - - spec: "ffvhc-ace@0.1%fj@4.8.1 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/FFVHC-ACE/0.1/bin - buildable: False - quantum-espresso: - externals: - - spec: "quantum-espresso@6.5%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-6.5/bin - - spec: "quantum-espresso@6.6%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-6.6/bin - - spec: "quantum-espresso@6.7%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-6.7/bin - - spec: "quantum-espresso@6.8%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-6.8/bin - - spec: "quantum-espresso@7.0%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-7.0/bin - - spec: "quantum-espresso@7.1%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-7.1/bin - - spec: "quantum-espresso@7.2%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-7.2/bin - - spec: "quantum-espresso@7.3%fj@4.10.0 arch=linux-rhel8-a64fx" - prefix: /vol0004/apps/opt/qe-7.3/bin buildable: False autoconf: externals: - spec: "autoconf@2.69 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "autoconf@2.69 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "autoconf@2.69 arch=linux-rhel8-skylake_avx512" - prefix: /usr automake: externals: - spec: "automake@1.16.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "automake@1.16.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "automake@1.16.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr binutils: externals: - spec: "binutils@2.30 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "binutils@2.30 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "binutils@2.30 arch=linux-rhel8-skylake_avx512" - prefix: /usr bzip2: externals: - spec: "bzip2@1.0.6 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "bzip2@1.0.6 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "bzip2@1.0.6 arch=linux-rhel8-skylake_avx512" - prefix: /usr curl: externals: - spec: "curl@7.61.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "curl@7.61.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "curl@7.61.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr dbus: externals: - spec: "dbus@1.12.8 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "dbus@1.12.8 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "dbus@1.12.8 arch=linux-rhel8-skylake_avx512" - prefix: /usr elfutils: externals: - - spec: "elfutils@0.186 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "elfutils@0.182 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "elfutils@0.182 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "elfutils@0.182 arch=linux-rhel8-skylake_avx512" + - spec: "elfutils@0.188 arch=linux-rhel8-a64fx" prefix: /usr expat: externals: - spec: "expat@2.2.5 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "expat@2.2.5 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "expat@2.2.5 arch=linux-rhel8-skylake_avx512" - prefix: /usr findutils: externals: - spec: "findutils@4.6.0 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "findutils@4.6.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "findutils@4.6.0 arch=linux-rhel8-skylake_avx512" - prefix: /usr fontconfig: externals: - spec: "fontconfig@2.13.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "fontconfig@2.13.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "fontconfig@2.13.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr freetype: externals: - spec: "freetype@2.9.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "freetype@2.9.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "freetype@2.9.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr gmake: externals: - spec: "gmake@4.2.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "gmake@4.2.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "gmake@4.2.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr gdbm: externals: - spec: "gdbm@1.18 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "gdbm@1.18 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "gdbm@1.18 arch=linux-rhel8-skylake_avx512" - prefix: /usr gettext: externals: - spec: "gettext@0.19.8.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "gettext@0.19.8.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "gettext@0.19.8.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr gmp: externals: - spec: "gmp@6.1.2 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "gmp@6.1.2 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "gmp@6.1.2 arch=linux-rhel8-skylake_avx512" - prefix: /usr gnutls: externals: - spec: "gnutls@3.6.16 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "gnutls@3.6.14 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "gnutls@3.6.14 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "gnutls@3.6.14 arch=linux-rhel8-skylake_avx512" - prefix: /usr hwloc: externals: - spec: "hwloc@2.2.0 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "hwloc@2.2.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "hwloc@2.2.0 arch=linux-rhel8-skylake_avx512" - prefix: /usr jansson: externals: - spec: "jansson@2.14 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "jansson@2.11 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "jansson@2.11 arch=linux-rhel8-skylake_avx512" - prefix: /usr libaio: externals: - spec: "libaio@0.3.112 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libaio@0.3.112 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libaio@0.3.112 arch=linux-rhel8-skylake_avx512" - prefix: /usr libcap: externals: - spec: "libcap@2.48 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libcap@2.26 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libcap@2.26 arch=linux-rhel8-skylake_avx512" - prefix: /usr libdrm: externals: - - spec: "libdrm@2.4.108 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "libdrm@2.4.103 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "libdrm@2.4.103 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libdrm@2.4.103 arch=linux-rhel8-skylake_avx512" + - spec: "libdrm@2.4.114 arch=linux-rhel8-a64fx" prefix: /usr libedit: externals: - spec: "libedit@3.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libedit@3.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libedit@3.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr libevent: externals: - spec: "libevent@2.1.8 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libevent@2.1.8 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libevent@2.1.8 arch=linux-rhel8-skylake_avx512" - prefix: /usr libfabric: externals: - spec: "libfabric@1.14.0 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libfabric@1.11.2 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libfabric@1.11.2 arch=linux-rhel8-skylake_avx512" - prefix: /usr libffi: externals: - spec: "libffi@3.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libffi@3.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libffi@3.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr libglvnd: externals: - spec: "libglvnd@1.3.4 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libglvnd@1.3.2 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libglvnd@1.3.2 arch=linux-rhel8-skylake_avx512" - prefix: /usr - libibumad: - externals: - - spec: "libibumad@37.2 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "libibumad@32.0 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "libibumad@54mlnx1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libibumad@54mlnx1 arch=linux-rhel8-skylake_avx512" - prefix: /usr libpciaccess: externals: - spec: "libpciaccess@0.14 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libpciaccess@0.14 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libpciaccess@0.14 arch=linux-rhel8-skylake_avx512" - prefix: /usr libpng: externals: - spec: "libpng@1.6.34 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libpng@1.6.34 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libpng@1.6.34 arch=linux-rhel8-skylake_avx512" - prefix: /usr libtasn1: externals: - spec: "libtasn1@4.13 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libtasn1@4.13 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libtasn1@4.13 arch=linux-rhel8-skylake_avx512" - prefix: /usr libtirpc: externals: - spec: "libtirpc@1.1.4 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libtirpc@1.1.4 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libtirpc@1.1.4 arch=linux-rhel8-skylake_avx512" - prefix: /usr libtool: externals: - spec: "libtool@2.4.6 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libtool@2.4.6 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libtool@2.4.6 arch=linux-rhel8-skylake_avx512" - prefix: /usr libuuid: externals: - spec: "libuuid@2.32.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libuuid@2.32.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libuuid@2.32.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr libxcb: externals: - spec: "libxcb@1.13.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libxcb@1.13.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libxcb@1.13.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr libxkbcommon: externals: - spec: "libxkbcommon@0.9.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libxkbcommon@0.9.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libxkbcommon@0.9.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr libxml2: externals: - spec: "libxml2@2.9.7 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "libxml2@2.9.7 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "libxml2@2.9.7 arch=linux-rhel8-skylake_avx512" - prefix: /usr lz4: externals: - spec: "lz4@1.8.3 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "lz4@1.8.3 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "lz4@1.8.3 arch=linux-rhel8-skylake_avx512" - prefix: /usr m4: externals: - spec: "m4@1.4.18 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "m4@1.4.18 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "m4@1.4.18 arch=linux-rhel8-skylake_avx512" - prefix: /usr ncurses: externals: - spec: "ncurses@6.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "ncurses@6.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "ncurses@6.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr nettle: externals: - spec: "nettle@3.4.1 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "nettle@3.4.1 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "nettle@3.4.1 arch=linux-rhel8-skylake_avx512" - prefix: /usr nspr: externals: - - spec: "nspr@4.32.0 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "nspr@4.25.0 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "nspr@4.25.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "nspr@4.25.0 arch=linux-rhel8-skylake_avx512" + - spec: "nspr@4.34.0 arch=linux-rhel8-a64fx" prefix: /usr numactl: externals: - spec: "numactl@2.0.12 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "numactl@2.0.12 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "numactl@2.0.12 arch=linux-rhel8-skylake_avx512" - prefix: /usr opengl: buildable: False externals: @@ -467,114 +215,51 @@ packages: externals: - spec: "openssl@1.1.1k arch=linux-rhel8-a64fx" prefix: /usr - - spec: "openssl@1.1.1g arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "openssl@1.1.1k arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "openssl@1.1.1k arch=linux-rhel8-skylake_avx512" - prefix: /usr papi: externals: - spec: "papi@5.6.0 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "papi@5.6.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "papi@5.6.0 arch=linux-rhel8-skylake_avx512" - prefix: /usr pcre: externals: - spec: "pcre@8.42 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "pcre@8.42 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "pcre@8.42 arch=linux-rhel8-skylake_avx512" - prefix: /usr perl: externals: - spec: "perl@5.26.3 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "perl@5.26.3 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "perl@5.26.3 arch=linux-rhel8-skylake_avx512" - prefix: /usr pkgconf: externals: - spec: "pkgconf@1.4.2 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "pkgconf@1.4.2 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "pkgconf@1.4.2 arch=linux-rhel8-skylake_avx512" - prefix: /usr popt: externals: - spec: "popt@1.18 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "popt@1.18 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "popt@1.18 arch=linux-rhel8-skylake_avx512" - prefix: /usr readline: externals: - spec: "readline@7.0 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "readline@7.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "readline@7.0 arch=linux-rhel8-skylake_avx512" - prefix: /usr sqlite: externals: - spec: "sqlite@3.26.0 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "sqlite@3.26.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "sqlite@3.26.0 arch=linux-rhel8-skylake_avx512" - prefix: /usr tcl: externals: - spec: "tcl@8.6.8 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "tcl@8.6.8 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "tcl@8.6.8 arch=linux-rhel8-skylake_avx512" - prefix: /usr - ucx: - externals: - - spec: "ucx@1.11.2 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "ucx@1.9.0 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "ucx@1.11.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "ucx@1.11.0 arch=linux-rhel8-skylake_avx512" - prefix: /usr valgrind: externals: - - spec: "valgrind@3.18.1 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "valgrind@3.16.0 arch=linux-rhel8-a64fx" - prefix: /usr - - spec: "valgrind@3.16.0 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "valgrind@3.16.0 arch=linux-rhel8-skylake_avx512" + - spec: "valgrind@3.19.0 arch=linux-rhel8-a64fx" prefix: /usr xz: externals: - spec: "xz@5.2.4 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "xz@5.2.4 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "xz@5.2.4 arch=linux-rhel8-skylake_avx512" - prefix: /usr zlib: externals: - spec: "zlib@1.2.11 arch=linux-rhel8-a64fx" prefix: /usr - - spec: "zlib@1.2.11 arch=linux-rhel8-cascadelake" - prefix: /usr - - spec: "zlib@1.2.11 arch=linux-rhel8-skylake_avx512" - prefix: /usr buildable: False - # pmlib: had problems with spack. so far binary packages only. 2023/3/20 mikami pmlib: externals: - spec: "pmlib@9.0-clang-precise arch=linux-rhel8-a64fx" diff --git a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/spack.yaml b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/spack.yaml index 81facd979..49212d2d8 100644 --- a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/spack.yaml +++ b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/spack.yaml @@ -6,20 +6,31 @@ spack: packages: default-compiler: - spack_spec: fj@{default_fj_version} - default-mpi: - spack_spec: fujitsu-mpi@{default_fj_version}%fj arch=linux-rhel8-a64fx - compiler-gcc: + #spack_spec: fj@{default_fj_version} + #spack_spec: clang@{default_llvm_version} spack_spec: gcc@{default_gnu_version} + default-mpi: + spack_spec: fujitsu-mpi@{default_fj_version} arch=linux-rhel8-a64fx compiler-fujitsu: spack_spec: fj@{default_fj_version} + compiler-clang: + spack_spec: clang@{default_llvm_version} + compiler-gcc: + spack_spec: gcc@{default_gnu_version} blas: - spack_spec: fujitsu-ssl2@head%fj arch=linux-rhel8-a64fx + spack_spec: fujitsu-ssl2@{default_fj_version} arch=linux-rhel8-a64fx lapack: - spack_spec: fujitsu-ssl2@head%fj arch=linux-rhel8-a64fx - mpi-gcc: - spack_spec: fujitsu-mpi@head%gcc@{default_gnu_version} arch=linux-rhel8-a64fx + spack_spec: fujitsu-ssl2@{default_fj_version} arch=linux-rhel8-a64fx + fftw: + spack_spec: fujitsu-ssl2@{default_fj_version} arch=linux-rhel8-a64fx mpi-fujitsu: - spack_spec: fujitsu-mpi@{default_fj_version}%fj arch=linux-rhel8-a64fx + spack_spec: fujitsu-mpi@{default_fj_version} arch=linux-rhel8-a64fx + mpi-clang: + spack_spec: fujitsu-mpi@{default_fj_version} arch=linux-rhel8-a64fx + mpi-gcc: + spack_spec: fujitsu-mpi@{default_fj_version} arch=linux-rhel8-a64fx gmake: spack_spec: gmake@4.2.1 arch=linux-rhel8-a64fx + cmake: + spack_spec: cmake@3.20.2 arch=linux-rhel8-a64fx + diff --git a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/variables.yaml b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/variables.yaml index b4db683c2..abb7ba2f0 100644 --- a/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/variables.yaml +++ b/configs/RCCS-Fugaku-Fujitsu-A64FX-TofuD/variables.yaml @@ -11,4 +11,6 @@ variables: batch_ranks: '#PJM --mpi proc={n_ranks}' batch_timeout: '#PJM -L "elapse={batch_time}:00" -x PJM_LLIO_GFSCACHE="/vol0001:/vol0002:/vol0003:/vol0004:/vol0005:/vol0006"' default_fj_version: '4.8.1' + default_llvm_version: '15.0.3' default_gnu_version: '12.2.0' + diff --git a/experiments/lbann/cuda/execute_experiment.tpl b/configs/common/spack_includes.yaml old mode 100755 new mode 100644 similarity index 67% rename from experiments/lbann/cuda/execute_experiment.tpl rename to configs/common/spack_includes.yaml index 1e2ea813e..62cc2ea5a --- a/experiments/lbann/cuda/execute_experiment.tpl +++ b/configs/common/spack_includes.yaml @@ -3,11 +3,7 @@ # # SPDX-License-Identifier: Apache-2.0 -#!/bin/bash -{batch_nodes} -{batch_ranks} -{batch_timeout} - -cd {experiment_run_dir} - -{command} +packages: + blt: + require: + - one_of: ["%gcc", "%clang"] diff --git a/docs/1-getting-started.rst b/docs/1-getting-started.rst index 9b26b4dca..b736cc6f4 100644 --- a/docs/1-getting-started.rst +++ b/docs/1-getting-started.rst @@ -12,6 +12,14 @@ Git is needed to clone Benchpark, and Python 3.8+ is needed to run Benchpark:: git clone git@github.com:LLNL/benchpark.git cd benchpark +Once Benchpark is available on your system, its python dependencies can be +installed using the ``requirements.txt`` file included in the root directory of +Benchpark. + +To install this, you can use:: + + pip install -r requirements.txt + Now you are ready to look at the benchmarks and systems available in Benchpark, as described in :doc:`2-benchpark-list`. diff --git a/docs/2-benchpark-list.rst b/docs/2-benchpark-list.rst index 90cb5f6a4..29f03f084 100644 --- a/docs/2-benchpark-list.rst +++ b/docs/2-benchpark-list.rst @@ -3,14 +3,43 @@ SPDX-License-Identifier: Apache-2.0 -============== -Benchpark List -============== +================ +Search Benchpark +================ -To list all benchmarks and systems available in Benchpark:: +The user can search for available system and experiment specifications in Benchpark. + +.. list-table:: Searching for specifications in Benchpark + :widths: 25 25 50 + :header-rows: 1 + + * - Command + - Description + - Listing in the docs + * - benchpark list + - Lists all benchmarks and systems specified in Benchpark + - + * - benchpark list systems + - Lists all system specified in Benchpark + - :doc:`available-system-specs` + * - benchmark list benchmarks + - Lists all benchmarks specified in Benchpark + - + * - benchpark list systems + - Lists all system specified in Benchpark + - :doc:`available-system-specs` + * - benchpark tags workspace + - Lists all tags specified in Benchpark + - + * - benchpark tags -a application workspace + - Lists all tags specified for a given application in Benchpark + - + * - benchpark tags -t tag workspace + - Lists all experiments in Benchpark with a given tag + - - cd bin - benchpark list Once you have decided on a ``system`` you will use, and the ``benchmark/ProgrammingModel`` to run, you can proceed to :doc:`4-benchpark-setup`. + +For a complete list of options, see the help menu in :doc:`benchpark-help`. diff --git a/docs/Makefile b/docs/Makefile index 5f3bbf02d..75eff50de 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -7,6 +7,7 @@ SPHINXOPTS ?= SPHINXBUILD ?= sphinx-build SOURCEDIR = . BUILDDIR = _build +WORKSPACE_PATH ?= # Put it first so that "make" without argument is like "make help". help: @@ -15,7 +16,10 @@ help: systemconfigs: ./generate-sys-defs-list.py -.PHONY: help sysconfigs Makefile +tags: + ./generate-benchmark-list.py $(WORKSPACE_PATH) + +.PHONY: help systemconfigs tags Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css index 8aa6c288f..3040dcdeb 100644 --- a/docs/_static/css/custom.css +++ b/docs/_static/css/custom.css @@ -1,3 +1,87 @@ +a { + color: #6a984e +} + +a:hover { + color: #7fa866 +} + +a:visited { + color: #9b59b6 +} + .wy-nav-content { max-width: 1200px !important; } + +.wy-side-nav-search, .wy-nav-top { + background: #7fa866 +} + +.wy-nav .wy-menu-vertical header { + color: #7fa866 +} + +.wy-menu-vertical a { + color:#d9d9d9 +} + +.wy-nav .wy-menu-vertical a:hover { + background-color: #7fa866 +} + +.wy-menu-vertical header, .wy-menu-vertical p.caption { + color: #a1ca7b +} + +.wy-nav-top { + background: #7fa866 +} + +.rst-content .wy-alert-neutral.admonition-todo a, .rst-content .wy-alert-neutral.admonition a, .rst-content .wy-alert-neutral.attention a, .rst-content .wy-alert-neutral.caution a, .rst-content .wy-alert-neutral.danger a, .rst-content .wy-alert-neutral.error a, .rst-content .wy-alert-neutral.hint a, .rst-content .wy-alert-neutral.important a, .rst-content .wy-alert-neutral.note a, .rst-content .wy-alert-neutral.seealso a, .rst-content .wy-alert-neutral.tip a, .rst-content .wy-alert-neutral.warning a, .wy-alert.wy-alert-neutral a { + color: #7fa866 +} + +.wy-tray-container li.wy-tray-item-info { + background: #7fa866 +} + +.btn-info { + background-color: #7fa866 !important +} + +.btn-link { + color: #7fa866; +} + +.wy-dropdown-menu > dd > a:hover { + background: #7fa866 +} + +.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover { + background: #7fa866 +} + +.wy-inline-validate.wy-inline-validate-info .wy-input-context { + color: #7fa866 +} + +.wy-text-info { + color:#7fa866 !important +} + +.wy-side-nav-search { + background-color: #7fa866 +} + +.wy-side-nav-search input[type=text] { + border-color: #7fa866 +} + +.wy-side-nav-search img { + background-color: #7fa866 +} + +html.writer-html4 .rst-content dl:not(.docutils) > dt, html.writer-html5 .rst-content dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.citation):not(.glossary):not(.simple) > dt { + color: #7fa866 +} diff --git a/docs/_static/images/benchpark-dark.svg b/docs/_static/images/benchpark-dark.svg new file mode 100644 index 000000000..6c3035007 --- /dev/null +++ b/docs/_static/images/benchpark-dark.svg @@ -0,0 +1,326 @@ + + + +Benchpark diff --git a/docs/_static/images/benchpark-icon-background.svg b/docs/_static/images/benchpark-icon-background.svg new file mode 100644 index 000000000..6e9977134 --- /dev/null +++ b/docs/_static/images/benchpark-icon-background.svg @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_static/images/benchpark-icon.svg b/docs/_static/images/benchpark-icon.svg new file mode 100644 index 000000000..459e49949 --- /dev/null +++ b/docs/_static/images/benchpark-icon.svg @@ -0,0 +1,329 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/_static/images/benchpark-light.svg b/docs/_static/images/benchpark-light.svg new file mode 100644 index 000000000..c1111f72c --- /dev/null +++ b/docs/_static/images/benchpark-light.svg @@ -0,0 +1,457 @@ + + + +Benchpark diff --git a/docs/available-system-specs.rst b/docs/available-system-specs.rst index 131025eae..bf483911a 100644 --- a/docs/available-system-specs.rst +++ b/docs/available-system-specs.rst @@ -13,6 +13,6 @@ use as the ``system`` parameter in Benchpark setup. See :doc:`4-benchpark-setup` for more details. .. csv-table:: Current system definitions in Benchpark. - :file: tables/current-system-definitions.csv + :file: current-system-definitions.csv :header-rows: 1 :align: left diff --git a/docs/benchmark-list.rst b/docs/benchmark-list.rst new file mode 100644 index 000000000..5ab06ab25 --- /dev/null +++ b/docs/benchmark-list.rst @@ -0,0 +1,13 @@ +.. 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 + +============== +Benchmark List +============== + +.. csv-table:: Current Benchpark tags by benchmark and tag groups. + :file: benchmark-list.csv + :header-rows: 1 + :align: left diff --git a/docs/benchpark-help.rst b/docs/benchpark-help.rst new file mode 100644 index 000000000..344beede4 --- /dev/null +++ b/docs/benchpark-help.rst @@ -0,0 +1,14 @@ +.. 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 + +=================== +Benchpark Help Menu +=================== + +Benchpark help menu:: + + $ benchpark --help + +.. program-output:: ../bin/benchpark --help diff --git a/docs/conf.py b/docs/conf.py index 5f7555c7a..5267a063e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -15,6 +15,13 @@ ] ) +subprocess.call( + [ + "make", + "tags", + ] +) + project = "Benchpark" copyright = "2023, LLNS LLC" author = "Olga Pearce, Alec Scott, Peter Scheibel, Greg Becker, Riyaz Haque, and Nathan Hanford" @@ -24,6 +31,7 @@ extensions = [ "sphinx_rtd_theme", + "sphinxcontrib.programoutput", ] exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", ".spack-env"] @@ -34,3 +42,5 @@ html_theme = "sphinx_rtd_theme" html_static_path = ["_static"] html_css_files = ["css/custom.css"] +html_logo = "_static/images/benchpark-dark.svg" +html_theme_options = {"logo_only": True} diff --git a/docs/generate-benchmark-list.py b/docs/generate-benchmark-list.py new file mode 100755 index 000000000..391604a68 --- /dev/null +++ b/docs/generate-benchmark-list.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python3 + +import pandas as pd +import yaml +import os +import sys +import subprocess + + +def construct_tag_groups(tag_groups, tag_dicts, dictionary): + # everything is a dict + for k, v in dictionary.items(): + if isinstance(v, list): + tag_groups.append(k) + tag_dicts[k] = v + else: + print("ERROR in construct_tag_groups") + + +def benchpark_benchmarks(benchmarks): + experiments_dir = "../experiments" + for x in os.listdir(experiments_dir): + benchmarks.append(f"{x}") + return benchmarks + + +def main(workspace): + benchmarks = list() + benchpark_benchmarks(benchmarks) + + f = "../tags.yaml" + with open(f, "r") as stream: + try: + data = yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) + + tag_groups = [] + tag_dicts = {} + for k, v in data.items(): + if k == "benchpark-tags": + construct_tag_groups(tag_groups, tag_dicts, v) + else: + print("ERROR in top level construct_tag_groups") + + main = dict() + + tags_taggroups = {} + for bmark in benchmarks: + tags_taggroups[bmark] = {} + for k, v in tag_dicts.items(): + tags_taggroups[bmark][k] = [] + + for bmark in benchmarks: + # call benchpark tags -a bmark workspace + cmd = ["../bin/benchpark", "tags", "-a", bmark, workspace] + byte_data = subprocess.run(cmd, capture_output=True) + tags = str(byte_data.stdout, "utf-8") + tags = ( + tags.replace("[", "") + .replace("]", "") + .replace("'", "") + .replace(" ", "") + .replace("\n", "") + .split(",") + ) + for t in tags: + for k, v in tag_dicts.items(): + if t in v: + print("appending", t, "at key", k) + tags_taggroups[bmark][k].append(t) + main[bmark] = tags_taggroups[bmark] + + df = pd.DataFrame(main) + df.to_csv("benchmark-list.csv") + + ################# + # Tables + # columns: benchmarks (i.e., amg2023) + # rows: tag groups (i.e., application domain). Each cell should hopefully have a tag - and some might have multiple + + +if __name__ == "__main__": + try: + workspace = sys.argv[1] + except IndexError: + print("Usage: " + os.path.basename(__file__) + " ") + sys.exit(1) + + main(workspace) diff --git a/docs/generate-sys-defs-list.py b/docs/generate-sys-defs-list.py index f96cce0c4..028affacc 100755 --- a/docs/generate-sys-defs-list.py +++ b/docs/generate-sys-defs-list.py @@ -68,7 +68,7 @@ def main(): df_tpose.set_index([""], inplace=True) # Write out current system definitions to CSV format - df_tpose.to_csv("tables/current-system-definitions.csv") + df_tpose.to_csv("current-system-definitions.csv") if __name__ == "__main__": diff --git a/docs/index.rst b/docs/index.rst index 8c4bf657f..605b44009 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -21,9 +21,12 @@ .. toctree:: :maxdepth: 1 - :caption: Available Specifications + :caption: Catalogue + catalogue-of-benchmarks available-system-specs + benchmark-list + benchpark-help .. toctree:: :maxdepth: 1 diff --git a/docs/tables/current-system-definitions.csv b/docs/tables/current-system-definitions.csv deleted file mode 100644 index 38c574238..000000000 --- a/docs/tables/current-system-definitions.csv +++ /dev/null @@ -1,20 +0,0 @@ -,Sierra,AWS_PCluster_Hpc7a-zen4-EFA,HPECray-zen3-MI250X-Slingshot,Magma,Piz Daint,Fugaku,Pascal,Eiger,LUMI,Tioga,x86_64 -**site**,LLNL,,,LLNL,CSCS,RIKEN Center for Computational Science,LLNL,CSCS,CSC,LLNL, -**system**,IBM-power9-V100-Infiniband,AWS_PCluster_Hpc7a-zen4-EFA,HPECray-zen3-MI250X-Slingshot,Penguin-icelake-OmniPath,HPECray-haswell-P100-Infiniband,Fujitsu-A64FX-TofuD,Penguin-broadwell-P100-OmniPath,HPECray-zen2-Slingshot,HPECray-zen3-MI250X-Slingshot,HPECray-zen3-MI250X-Slingshot,x86_64 -**integrator.vendor**,IBM,AWS,HPECray,PenguinComputing,HPECray,Fujitsu,Penguin,HPECray,HPECray,HPECray, -**integrator.name**,AC922,ParallelCluster3.7.2-Hpc7a,EX235a,RelionCluster,,FX1000,,,EX235a,EX235a, -**processor.vendor**,IBM,AMD,AMD,Intel,Intel,Fujitsu,Intel,AMD,AMD,AMD, -**processor.name**,POWER9,EPYC-Zen4,EPYC-Zen3,XeonPlatinum924248C,Xeon-E5-2650v3,A64FX,Xeon_E5-2695_v4,EPYC-7742,EPYC-Zen3,EPYC-Zen3, -**processor.ISA**,ppc64le,x86_64,x86_64,x86_64,x86_64,Armv8.2-A-SVE,x86_64,x86_64,x86_64,x86_64,x86_64 -**processor.uArch**,power9,zen4,zen3,icelake,haswell,aarch64,broadwell,zen2,zen3,zen3, -**accelerator.vendor**,NVIDIA,,AMD,,NVIDIA,,NVIDIA,,AMD,AMD, -**accelerator.name**,V100,,MI250X,,P100,,P100,,MI250X,MI250X, -**accelerator.ISA**,PTX,,GCN,,PTX,,PTX,,GCN,GCN, -**accelerator.uArch**,sm_70,,gfx90a,,sm_60,,sm_56,,gfx90a,gfx90a, -**interconnect.vendor**,Mellanox,AWS,HPECray,Intel,HPECray,Fujitsu,Cornelis,HPECray,HPECray,HPECray, -**interconnect.name**,EDR-Infiniband,EFA,Slingshot11,OmniPath,Aries,TofuInterconnectD,OmniPath,Slingshot,Slingshot11,Slingshot11, -**system-tested.site**,LLNL,AWS,LLNL,LLNL,CSCS,R-CCS,LLNL,CSCS,CSC,LLNL, -**system-tested.name**,lassen,,tioga,magma,daint,Fugaku,pascal,daint,LUMI,tioga, -**system-tested.installation-year**,2018,,2022,2019,2017,2020,2018,2017,2023,2022, -**system-tested.description**,`top500 `_,`aws/hpc7a `_,`top500 `_,`top500 `_,`top500 `_,`top500 `_,,`top500 `_,`top500 `_,`top500 `_, -**top500-system-instances**,Sierra (LLNL),,"Frontier (ORNL), LUMI (CSC), Tioga (LLNL)",Magma (LLNL),Piz Daint (CSCS),Fugaku (R-CCS),,,"Frontier (ORNL), LUMI (CSC), Tioga (LLNL)","Frontier (ORNL), LUMI (CSC), Tioga (LLNL)", diff --git a/experiments/lbann/cuda/ramble.yaml b/experiments/lbann/cuda/ramble.yaml deleted file mode 100644 index 027481554..000000000 --- a/experiments/lbann/cuda/ramble.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# 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/spack.yaml - - ./configs/variables.yaml - - config: - deprecated: true - spack_flags: - install: '--add --keep-stage' - concretize: '-U -f' - - applications: - lbann: - workloads: - problem1: - env_vars: - set: - OMP_NUM_THREADS: '{omp_num_threads}' - variables: - n_ranks: '{processes_per_node} * {n_nodes}' - p: 2 - px: '{p}' - py: '{p}' - pz: '{p}' - n: ['55', '110'] - nx: '{n}' - ny: '{n}' - nz: '{n}' - processes_per_node: ['8', '4'] - n_nodes: ['1', '2'] - threads_per_node_core: ['8', '10', '13'] #TODO: Specify n_threads according to available n_nodes and n_ranks - omp_num_threads: '{threads_per_node_core} * {n_nodes}' - experiments: - lbann_omp_problem1_{n_nodes}_{omp_num_threads}_{px}_{py}_{pz}_{nx}_{ny}_{nz}: - variables: - env_name: amg2023-omp - matrices: - - size_threads: - - n # TODO: Filter matrix - - threads_per_node_core # TODO: Filter matrix - spack: - concretized: true - packages: - lbann-cuda: - spack_spec: lbann@develop +mpi+cuda - compiler: default-compiler - environments: - amg2023-omp: - packages: - - default-mpi - - lbann-cuda diff --git a/experiments/raja-perf/cuda/ramble.yaml b/experiments/raja-perf/cuda/ramble.yaml index c66eddfb0..070d4f1c1 100644 --- a/experiments/raja-perf/cuda/ramble.yaml +++ b/experiments/raja-perf/cuda/ramble.yaml @@ -26,15 +26,11 @@ ramble: spack: concretized: true packages: - blt: - spack_spec: 'blt@0.5.2:' - compiler: compiler-gcc raja-perf: spack_spec: raja-perf@develop +cuda~openmp+mpi cuda_arch=={cuda_arch} ^cuda@{default_cuda_version} compiler: default-compiler environments: raja-perf: packages: - - blt - default-mpi - raja-perf diff --git a/experiments/raja-perf/openmp/ramble.yaml b/experiments/raja-perf/openmp/ramble.yaml index 648952a40..7e734d177 100644 --- a/experiments/raja-perf/openmp/ramble.yaml +++ b/experiments/raja-perf/openmp/ramble.yaml @@ -32,15 +32,11 @@ ramble: spack: concretized: true packages: - blt: - spack_spec: 'blt@0.5.2:' - compiler: compiler-gcc raja-perf: spack_spec: raja-perf@develop +openmp +mpi ^cmake@3.23.1 compiler: default-compiler environments: raja-perf: packages: - - blt - default-mpi - raja-perf diff --git a/experiments/raja-perf/rocm/ramble.yaml b/experiments/raja-perf/rocm/ramble.yaml index 925003c92..ac43c0899 100644 --- a/experiments/raja-perf/rocm/ramble.yaml +++ b/experiments/raja-perf/rocm/ramble.yaml @@ -27,15 +27,11 @@ ramble: spack: concretized: true packages: - blt: - spack_spec: 'blt@0.5.2:' - compiler: compiler-gcc raja-perf: spack_spec: raja-perf@develop +rocm~openmp amdgpu_target={rocm_arch} compiler: default-compiler environments: raja-perf: packages: - - blt - default-mpi - raja-perf diff --git a/experiments/stream/openmp/execute_experiment.tpl b/experiments/streamc/openmp/execute_experiment.tpl similarity index 100% rename from experiments/stream/openmp/execute_experiment.tpl rename to experiments/streamc/openmp/execute_experiment.tpl diff --git a/experiments/stream/openmp/ramble.yaml b/experiments/streamc/openmp/ramble.yaml similarity index 100% rename from experiments/stream/openmp/ramble.yaml rename to experiments/streamc/openmp/ramble.yaml diff --git a/pyproject.toml b/pyproject.toml index f787664d9..bc919dd96 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,5 +31,5 @@ skip_gitignore = true color_output = true [tool.codespell] -skip = './_build,./docs/_static' +skip = './docs/_build,./docs/_static' ignore-words-list = 'fom' diff --git a/repo/amg2023/application.py b/repo/amg2023/application.py index 0c8cc3d80..442df30e9 100644 --- a/repo/amg2023/application.py +++ b/repo/amg2023/application.py @@ -12,7 +12,12 @@ class Amg2023(SpackApplication): """AMG2023 benchmark""" name = "amg2023" - tags = ["amg2023"] + tags = ['asc','engineering','hypre','solver','sparse-linear-algebra', + 'large-scale','multi-node','single-node','sub-node', + 'high-branching','high-memory-bandwidth','large-memory-footprint', + 'regular-memory-access','irregular-memory-access','mixed-precision', + 'mpi','network-latency-bound','network-collectives','block-structured-grid', + 'c','cuda','hip','openmp'] executable('p1', 'amg' + ' -P {px} {py} {pz}' + diff --git a/repo/lbann/application.py b/repo/lbann/application.py deleted file mode 100644 index 4d87357bc..000000000 --- a/repo/lbann/application.py +++ /dev/null @@ -1,57 +0,0 @@ -# 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 LBANN(SpackApplication): - """LBANN benchmark""" - name = "lbann" - - tags = ["lbann"] - - executable('p1', 'lbann' + - ' -P {px} {py} {pz}' + - ' -n {nx} {ny} {nz}' + - ' -problem 1' + - ' -keepT', use_mpi=True) - - executable('p2', 'lbann' + - ' -P {px} {py} {pz}' + - ' -n {nx} {ny} {nz}' + - ' -problem 2' + - ' -keepT', use_mpi=True) - - workload('problem1', executables=['p1']) - workload('problem2', executables=['p2']) - - workload_variable('px', default='2', - description='px', - workloads=['problem1', 'problem2']) - workload_variable('py', default='2', - description='py', - workloads=['problem1', 'problem2']) - workload_variable('pz', default='2', - description='pz', - workloads=['problem1', 'problem2']) - workload_variable('nx', default='220', - description='nx', - workloads=['problem1', 'problem2']) - workload_variable('ny', default='220', - description='ny', - workloads=['problem1', 'problem2']) - workload_variable('nz', default='220', - description='nz', - workloads=['problem1', 'problem2']) - - figure_of_merit('Figure of Merit (FOM)', log_file='{experiment_run_dir}/{experiment_name}.out', fom_regex=r'Figure of Merit \(FOM\):\s+(?P[0-9]+\.[0-9]*(e^[0-9]*)?)', group_name='fom', units='') - - #TODO: Fix the FOM success_criteria(...) - success_criteria('pass', mode='string', match=r'Figure of Merit \(FOM\)', file='{experiment_run_dir}/{experiment_name}.out') - - def evaluate_success(self): - return True diff --git a/repo/raja-perf/application.py b/repo/raja-perf/application.py index 6d028a275..682d355d0 100644 --- a/repo/raja-perf/application.py +++ b/repo/raja-perf/application.py @@ -12,7 +12,11 @@ class RajaPerf(SpackApplication): """RAJA Performance suite""" name = "raja-perf" - tags = ["raja-perf"] + tags = ['asc','single-node','sub-node','structured-grid', + 'atomics','simd','vectorization','register-pressure', + 'high-memory-bandwidth','regular-memory-access', + 'mpi','network-point-to-point','network-latency-bound', + 'c++','raja','cuda','hip','openmp','sycl'] executable('run', 'raja-perf.exe', use_mpi=True) diff --git a/repo/saxpy/application.py b/repo/saxpy/application.py index 0fd12db01..14385b391 100644 --- a/repo/saxpy/application.py +++ b/repo/saxpy/application.py @@ -12,7 +12,9 @@ class Saxpy(SpackApplication): """saxpy benchmark""" name = "saxpy" - tags = ["saxpy"] + tags = ['single-node','high-memory-bandwidth', + 'regular-memory-access', + 'c++','cuda','hip','openmp'] executable('p', 'saxpy -n {n}', use_mpi=True) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..5a20fb83f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,16 @@ +pyyaml +# The remaining requirements are from Ramble +pytest +flake8 +google-cloud-storage # for gcs fetch test +google-api-core # for gcs fetch error .exceptions +coverage +pre-commit +graphlib-backport;python_version<"3.9" +urllib3==1.26.18;python_version<="3.6" +protobuf;python_version>"3.6" +protobuf==3.19.4;python_version<="3.6" +pyarrow==3.0.0;python_version<="3.6" +google-cloud-bigquery +tqdm +deprecation diff --git a/tags.yaml b/tags.yaml new file mode 100644 index 000000000..423d71bae --- /dev/null +++ b/tags.yaml @@ -0,0 +1,109 @@ +# 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 + +benchpark-tags: + application-domain: + - asc # Advanced Simulation and Computing + - astrophysics + - cfd # computational fluid dynamics + - chemistry + - climate + - dft # density functional theory + - engineering + - fusion + - material-science + - molecular-dynamics + benchmark-scale: + - large-scale + - multi-node + - single-node + - sub-node + communication: + - mpi + - nccl + - nvsmem + - rccl + - shmem + - upc + communication-performance-characteristics: + - network-bandwidth-bound + - network-bisection-bandwidth-bound + - network-collectives + - network-latency-bound + - network-point-to-point + compute-performance-characteristics: + - atomics + - high-branching + - high-fp + - i-o + - mixed-precision + - register-pressure + - simd + - vectorization + math-libraries: + - blas + - cublas + - hypre + - lapack + - mfem + - rocblas + - rocsolver + memory-access-characteristics: + - high-memory-bandwidth + - irregular-memory-access + - large-memory-footprint + - regular-memory-access + mesh-representation: + - amr + - block-structured-grid + - meshfree + - structured-grid + - unstructured-grid + method-type: + - ai # AI, ML, DL + - ale # arbitrary lagrangian-eulerian + - dense-linear-algebra + - deterministic + - direct-solve + - eulerian + - explicit-differentiation + - explicit-timestepping + - finite-element + - fft # fast fourier transform + - full-assembly + - high-order + - hydrodynamics + - implicit-differentiation + - implicit-timestepping + - lagrangian + - low-order + - montecarlo + - nbody + - ode # ordinary differential equations + - partial-assembly + - particles + - solver + - sph # smoothed particle hydrodynamics + - sparse-linear-algebra + - spatial-discretization + - task-parallelism + - time-dependent + - transport + programming-language: + - c + - c++ + - fortran + - julia + - python + - rust + programming-model: + - charm++ + - cuda + - hip + - kokkos + - oneapi + - openmp + - raja + - sycl