Skip to content

Commit

Permalink
Merge branch 'develop' into test/amg-genericx86
Browse files Browse the repository at this point in the history
  • Loading branch information
pearce8 authored Dec 9, 2024
2 parents b1aa81c + e54c903 commit d333cd4
Show file tree
Hide file tree
Showing 22 changed files with 605 additions and 401 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/requirements/docs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sphinx-rtd-theme==3.0.2
codespell==2.3.0
pandas==2.2.3
pyyaml==6.0.2
sphinxcontrib-programoutput==0.17
sphinxcontrib-programoutput==0.18
# The remaining requirements are from Ramble
pytest
flake8
Expand Down
73 changes: 70 additions & 3 deletions .github/workflows/run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ jobs:
- name: Dry run kripke/rocm on dynamic Tioga with allocation modifier
run: |
./bin/benchpark system init --dest=tioga-system llnl-elcapitan rocm=551 compiler=cce ~gtl
./bin/benchpark system init --dest=tioga-system llnl-elcapitan rocm=5.5.1 compiler=cce ~gtl
./bin/benchpark setup kripke/rocm ./tioga-system workspace/
system_id=$(./bin/benchpark system id ./tioga-system)
. workspace/setup.sh
Expand All @@ -198,7 +198,7 @@ jobs:
- name: Dry run dynamic saxpy/rocm with dynamic Tioga
run: |
./bin/benchpark system init --dest=tioga-system2 llnl-elcapitan rocm=551 compiler=cce ~gtl
./bin/benchpark system init --dest=tioga-system2 llnl-elcapitan rocm=5.5.1 compiler=cce ~gtl
system_id=$(./bin/benchpark system id ./tioga-system2)
./bin/benchpark experiment init --dest=saxpy-rocm2 saxpy+rocm
./bin/benchpark setup ./saxpy-rocm2 ./tioga-system2 workspace/
Expand Down Expand Up @@ -243,7 +243,17 @@ jobs:
--disable-logger \
workspace setup --dry-run
- name: Dry run lammps/rocm on Tioga with allocation modifier
- name: Dry run lammps/openmp with static Ruby
run: |
./bin/benchpark setup lammps/openmp LLNL-Ruby-icelake-OmniPath workspace/
. workspace/setup.sh
ramble \
--workspace-dir workspace/lammps/openmp/LLNL-Ruby-icelake-OmniPath/workspace \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
- name: Dry run lammps/rocm with static Tioga
run: |
./bin/benchpark setup lammps/rocm LLNL-Tioga-HPECray-zen3-MI250X-Slingshot workspace/
. workspace/setup.sh
Expand All @@ -253,6 +263,40 @@ jobs:
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic lammps/openmp on static Ruby
run: |
./bin/benchpark experiment init --dest=lammps-openmp lammps+openmp
./bin/benchpark setup ./lammps-openmp LLNL-Ruby-icelake-OmniPath workspace/
. workspace/setup.sh
ramble \
--workspace-dir workspace/lammps-openmp/LLNL-Ruby-icelake-OmniPath/workspace \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic lammps/rocm on static Tioga
run: |
./bin/benchpark experiment init --dest=lammps-rocm lammps+rocm
./bin/benchpark setup ./lammps-rocm LLNL-Tioga-HPECray-zen3-MI250X-Slingshot workspace/
. workspace/setup.sh
ramble \
--workspace-dir workspace/lammps-rocm/LLNL-Tioga-HPECray-zen3-MI250X-Slingshot/workspace \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic lammps/rocm with dynamic Tioga
run: |
./bin/benchpark experiment init --dest=lammps-rocm-tioga lammps+rocm
./bin/benchpark setup lammps-rocm-tioga ./tioga-system workspace/
system_id=$(./bin/benchpark system id ./tioga-system)
. workspace/setup.sh
ramble \
--workspace-dir workspace/lammps-rocm-tioga/$system_id/workspace \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
- name: Dry run hpl/openmp with Caliper-topdown modifier on Magma
run: |
./bin/benchpark setup hpl/openmp --modifier=caliper-topdown LLNL-Magma-Penguin-icelake-OmniPath workspace/
Expand Down Expand Up @@ -384,6 +428,17 @@ jobs:
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic saxpy/openmp with dynamic aws
run: |
./bin/benchpark system init --dest=aws1 aws-pcluster instance_type=hpc6a.48xlarge
./bin/benchpark setup ./saxpy-omp-generic ./aws1 workspace/
. workspace/setup.sh
ramble \
--workspace-dir "workspace/saxpy-omp-generic/aws1/workspace" \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic remhos/mpi with dynamic llnl-cluster ruby
run: |
./bin/benchpark experiment init --dest=remhos-ruby remhos
Expand Down Expand Up @@ -421,6 +476,18 @@ jobs:
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic qws/openmp with dynamic CTS ruby
run: |
system_id=$(./bin/benchpark system id ./ruby-system)
./bin/benchpark experiment init --dest qws-openmp qws +openmp
./bin/benchpark setup qws-openmp ./ruby-system workspace/
. workspace/setup.sh
ramble \
--workspace-dir workspace/qws-openmp/$system_id/workspace \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
- name: Dry run dynamic saxpy/openmp with dynamic fugaku
run: |
./bin/benchpark system init --dest=fugaku-system fugaku
Expand Down
90 changes: 90 additions & 0 deletions experiments/lammps/experiment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# 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 benchpark.directives import variant
from benchpark.experiment import Experiment
from benchpark.openmp import OpenMPExperiment
from benchpark.rocm import ROCmExperiment


class Lammps(
Experiment,
OpenMPExperiment,
ROCmExperiment,
):
variant(
"workload",
default="hns-reaxff",
values=("hns-reaxff", "lj", "eam", "chain", "chute", "rhodo"),
description="workloads",
)

variant(
"version",
default="20231121",
description="app version",
)

def compute_applications_section(self):
if self.spec.satisfies("+openmp"):
problem_sizes = {"x": 8, "y": 8, "z": 8}
kokkos_mode = "t {n_threads_per_proc}"
kokkos_gpu_aware = "off"
kokkos_comm = "host"
elif self.spec.satisfies("+rocm"):
problem_sizes = {"x": 20, "y": 40, "z": 32}
kokkos_mode = "g 1"
kokkos_gpu_aware = "on"
kokkos_comm = "device"

for nk, nv in problem_sizes.items():
self.add_experiment_variable(nk, nv, True)

input_sizes = " ".join(f"-v {k} {{{k}}}" for k in problem_sizes.keys())

if self.spec.satisfies("+openmp"):
self.add_experiment_variable("n_nodes", 1, True)
self.add_experiment_variable("n_ranks_per_node", 36, True)
self.add_experiment_variable("n_threads_per_proc", 1, True)
elif self.spec.satisfies("+rocm"):
self.add_experiment_variable("n_nodes", 8, True)
self.add_experiment_variable("n_ranks_per_node", 8, True)
self.add_experiment_variable("n_gpus", 64, True)

self.add_experiment_variable("timesteps", 100, False)
self.add_experiment_variable("input_file", "{input_path}/in.reaxc.hns", False)
self.add_experiment_variable(
"lammps_flags",
f"{input_sizes} -k on {kokkos_mode} -sf kk -pk kokkos gpu/aware {kokkos_gpu_aware} neigh half comm {kokkos_comm} neigh/qeq full newton on -nocite",
False,
)

def compute_spack_section(self):
# get package version
app_version = self.spec.variants["version"][0]

# get system config options
# TODO: Get compiler/mpi/package handles directly from system.py
system_specs = {}
system_specs["compiler"] = "default-compiler"
system_specs["mpi"] = "default-mpi"
if self.spec.satisfies("+rocm"):
system_specs["rocm_arch"] = "{rocm_arch}"
system_specs["blas"] = "blas-rocm"

# set package spack specs
if self.spec.satisfies("+rocm"):
# empty package_specs value implies external package
self.add_spack_spec(system_specs["blas"])
# empty package_specs value implies external package
self.add_spack_spec(system_specs["mpi"])

self.add_spack_spec(
self.name,
[
f"lammps@{app_version} +opt+manybody+molecule+kspace+rigid+kokkos+asphere+dpd-basic+dpd-meso+dpd-react+dpd-smooth+reaxff lammps_sizes=bigbig ",
system_specs["compiler"],
],
)
61 changes: 61 additions & 0 deletions experiments/qws/experiment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# 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 benchpark.directives import variant
from benchpark.experiment import Experiment
from benchpark.openmp import OpenMPExperiment


class Qws(Experiment, OpenMPExperiment):

variant(
"workload",
default="qws",
description="qws",
)

variant(
"version",
default="master",
description="app version",
)

def compute_applications_section(self):

self.add_experiment_variable("experiment_setup", "")
self.add_experiment_variable("lx", "32")
self.add_experiment_variable("ly", "6")
self.add_experiment_variable("lz", "4")
self.add_experiment_variable("lt", "3")
self.add_experiment_variable("px", "1")
self.add_experiment_variable("py", "1")
self.add_experiment_variable("pz", "1")
self.add_experiment_variable("pt", "1")
self.add_experiment_variable("tol_outer", "-1")
self.add_experiment_variable("tol_inner", "-1")
self.add_experiment_variable("maxiter_plus1_outer", "6")
self.add_experiment_variable("maxiter_inner", "50")

if self.spec.satisfies("+openmp"):
self.add_experiment_variable("n_nodes", ["1"], True)
self.add_experiment_variable("processes_per_node", ["1"])
self.add_experiment_variable("n_ranks", "{processes_per_node} * {n_nodes}")
self.add_experiment_variable("omp_num_threads", ["48"])
self.add_experiment_variable("arch", "OpenMP")

def compute_spack_section(self):
# get package version
app_version = self.spec.variants["version"][0]

system_specs = {}
system_specs["compiler"] = "default-compiler"
system_specs["mpi"] = "default-mpi"

# if package_spec left empty spack will use external
self.add_spack_spec(system_specs["mpi"])

self.add_spack_spec(
self.name, [f"qws@{app_version} +mpi", system_specs["compiler"]]
)
75 changes: 30 additions & 45 deletions legacy/experiments/lammps/openmp/ramble.yaml
Original file line number Diff line number Diff line change
@@ -1,59 +1,44 @@
# 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

config:
deprecated: true
spack_flags:
install: '--add --keep-stage'
concretize: '-U -f'

modifiers:
- name: allocation

applications:
lammps:
workloads:
hns-reaxff:
variables:
size_name: ['medium']
size_x: [2]
size_y: [2]
size_z: [2]
scaling_nodes: [1]
n_nodes: '{scaling_nodes}'
n_threads_per_proc: '1'
lammps_flags: '-v x {size_x} -v y {size_y} -v z {size_z}'
experiments:
scaling_{n_nodes}nodes_{size_name}:
lammps_hns-reaxff_single_node_openmp_{x}_{y}_{z}_{n_nodes}_{n_ranks_per_node}_{n_threads_per_proc}:
exclude: {}
matrix: []
variables:
input_file: '{input_path}/in.reaxc.hns'
lammps_flags: -v x {x} -v y {y} -v z {z} -k on t {n_threads_per_proc}
-sf kk -pk kokkos gpu/aware off neigh half comm host neigh/qeq full
newton on -nocite
n_nodes: 1
n_ranks_per_node: 36
n_threads_per_proc: 1
timesteps: 100
x: 8
y: 8
z: 8
variants:
package_manager: spack
variables:
env_name: lammps
n_ranks_per_node: ['36']
zips:
problems:
- size_name
- size_x
- size_y
- size_z
matrix:
- problems
- scaling_nodes
zips: {}
config:
deprecated: true
spack_flags:
concretize: -U -f
install: --add --keep-stage
include:
- ./configs
modifiers:
- name: allocation
software:
packages:
lammps:
pkg_spec: lammps@20231121 +opt+manybody+molecule+kspace+rigid+openmp+openmp-package+asphere+dpd-basic+dpd-meso+dpd-react+dpd-smooth+reaxff
compiler: default-compiler
environments:
lammps:
packages:
- lapack
- default-mpi
- lammps
packages:
lammps:
compiler: default-compiler
pkg_spec: lammps@20231121 +opt+manybody+molecule+kspace+rigid+kokkos+asphere+dpd-basic+dpd-meso+dpd-react+dpd-smooth+reaxff
lammps_sizes=bigbig +openmp ~rocm
Loading

0 comments on commit d333cd4

Please sign in to comment.