Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
dda306c
Initial template
michaelmckinsey1 Apr 7, 2025
9546b0a
update maintainer
Apr 7, 2025
31ed182
Fix bugs
michaelmckinsey1 Apr 7, 2025
81f5d96
Working local repo
michaelmckinsey1 Apr 8, 2025
d70d335
Add newline
michaelmckinsey1 Apr 8, 2025
7192655
added message size
Apr 8, 2025
9784091
Add more parameters
michaelmckinsey1 Apr 8, 2025
900fe1a
more experiments
michaelmckinsey1 Apr 8, 2025
cdb20bd
Merge branch 'develop' of github.com:LLNL/benchpark into benchmark/mp…
Apr 23, 2025
3280fc7
ran with more ranks
Apr 24, 2025
2b3f8cf
kind of run on multiple systems
Apr 24, 2025
7232351
changed sys_cores_per_node to 40 for lassen
Apr 30, 2025
1d1dea0
Add comment
michaelmckinsey1 May 2, 2025
fc4f6be
tioga core changes from 64 to 56
May 2, 2025
53cc05f
Merge branch 'benchmark/mpi-pingpong' of github.com:LLNL/benchpark in…
May 2, 2025
f560015
tioga 56 core experiment
May 2, 2025
cdfb152
Add comment
michaelmckinsey1 May 2, 2025
8469d28
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
Jun 2, 2025
be21b42
Try automatically naming caliper file
michaelmckinsey1 Jun 6, 2025
ebf767e
Merge branch 'benchmark/mpi-pingpong' of github.com:LLNL/benchpark in…
Jun 6, 2025
ce41d46
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
Jun 6, 2025
195c79c
Undo change
michaelmckinsey1 Jun 6, 2025
ff29022
loops through message sizes and also gets multiple cali files with 1 …
Jun 9, 2025
1503c2e
metadata added
Jun 13, 2025
23965fc
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 Jul 23, 2025
558705f
Update application.py
michaelmckinsey1 Jul 23, 2025
dd9f5ae
added sockets per node in systems
Jul 24, 2025
bff183f
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 Jul 28, 2025
ea4e874
Update shared_slurm_clusters.yml
michaelmckinsey1 Jul 28, 2025
6b08ac5
lint
michaelmckinsey1 Jul 28, 2025
dbb09cb
Undo change because benchmark is private
michaelmckinsey1 Jul 28, 2025
6bce99d
added system memory info
Jul 31, 2025
dbeae11
Revert "added system memory info"
Jul 31, 2025
1238ede
remove whitespace
slabasan Aug 1, 2025
e14db10
update git url
slabasan Aug 1, 2025
e048732
fixed application.py to match source code
Aug 4, 2025
976da3e
fixed application.py to match source code
Aug 4, 2025
ddcac9c
fixing executable so it matches source code
Aug 4, 2025
12bb7f8
updated package.py and experiment.py to point to the correct spot for…
Aug 4, 2025
887355b
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 Aug 4, 2025
716d873
Update shared_slurm_clusters.yml
michaelmckinsey1 Aug 4, 2025
51d4c95
clean-up, removing uneccessary comments
Aug 4, 2025
9a29628
Merge branch 'benchmark/mpi-pingpong' of github.com:LLNL/benchpark in…
Aug 4, 2025
657dbbb
Update experiment.py
michaelmckinsey1 Aug 4, 2025
2c5f4cd
Fix bug
michaelmckinsey1 Aug 4, 2025
8bb4d70
solution
michaelmckinsey1 Aug 6, 2025
54f4c8b
Set n_ranks_per_node such that n_ranks is set in addition to n_nodes.…
michaelmckinsey1 Aug 6, 2025
862a184
Revert change and allow ranks greater than 1000
michaelmckinsey1 Aug 7, 2025
4cbba6b
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 Aug 8, 2025
b3e9848
Use different value for placeholder instead of relying on max value
michaelmckinsey1 Aug 8, 2025
b9145c8
Move change to PR
michaelmckinsey1 Aug 8, 2025
3308ddb
Merge branch 'new-placeholder' into benchmark/mpi-pingpong
michaelmckinsey1 Aug 8, 2025
2ec6f48
first test with openmp option
Aug 12, 2025
680afc4
trying out rocm
Aug 22, 2025
ab0a447
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
michaelmckinsey1 Aug 22, 2025
ffd06c0
rocm added
Aug 25, 2025
c3396ec
Update package.py
michaelmckinsey1 Aug 25, 2025
ee4754c
amdgpu required
michaelmckinsey1 Aug 25, 2025
3e7816c
amdgpu
michaelmckinsey1 Aug 25, 2025
aa1712e
Merge remote-tracking branch 'origin/michaelmckinsey1-patch-1' into b…
Aug 25, 2025
e2b7332
fix package
michaelmckinsey1 Aug 26, 2025
6f9c625
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 Sep 2, 2025
c2462c7
fix merge conflict
Sep 3, 2025
f65b664
added cuda variant
Sep 12, 2025
856f40a
fix conflicts
Sep 12, 2025
ca27b96
Revert "Spack 1 update (#953)"
Sep 12, 2025
9e1318b
renamed USE_ROCM to USE_HIP
Oct 6, 2025
5d125ba
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
michaelmckinsey1 Oct 17, 2025
976db49
Revert "Revert "Spack 1 update (#953)""
michaelmckinsey1 Oct 17, 2025
65b0a8f
Fix default compiler
michaelmckinsey1 Oct 17, 2025
2aea1b6
rm file
michaelmckinsey1 Oct 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitlab/tests/shared_slurm_clusters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ run_tests_slurm_dane:
VARIANT: [+openmp, '']
- HOST: dane
ARCHCONFIG: llnl-cluster
BENCHMARK: [laghos, lammps, raja-perf, phloem]
BENCHMARK: [laghos, lammps, raja-perf, phloem, mpi-pingpong]
# Strong scaling runs for "benchpark analyze" test
- HOST: dane
ARCHCONFIG: llnl-cluster
Expand Down
45 changes: 45 additions & 0 deletions experiments/mpi-pingpong/experiment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# 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, maintainers
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.caliper import Caliper
from benchpark.rocm import ROCmExperiment
from benchpark.cuda import CudaExperiment


class MpiPingpong(Experiment, MpiOnlyExperiment, ROCmExperiment, CudaExperiment, Caliper):

variant(
"workload",
default="run",
)

maintainers("stephanielam3211")

def compute_applications_section(self):
n_nodes = 64 # max number of nodes
expr_vars = {
"n_nodes": n_nodes,
"iterations": 10000,
"msg_size": 16,
}

for pk, pv in expr_vars.items():
self.add_experiment_variable(pk, pv, True)

self.add_experiment_variable("n_ranks", "{n_nodes}*{sys_cores_per_node}", True)

self.add_experiment_variable("partner_rank", "{n_ranks}-1", True)

self.set_required_variables(
n_resources="{n_ranks}",
process_problem_size="{msg_size}",
total_problem_size="{msg_size}",
)

def compute_package_section(self):
self.add_package_spec(self.name, ["mpi-pingpong@develop"])
19 changes: 19 additions & 0 deletions repo/mpi-pingpong/application.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 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 MpiPingpong(ExecutableApplication):
name = "mpi-pingpong"

tags = ['single-node', 'builtin-caliper']


executable("pingpong", "pingpong -i {iterations} -m {msg_size} -p 0,{partner_rank} -n {n_nodes} -s {sys_cores_per_node}//{sys_sockets_per_node} -c {sys_cores_per_node} -b {experiment_run_dir}/{experiment_name}_metadata.json", use_mpi=True)

workload("run", executables=["pingpong"])
67 changes: 67 additions & 0 deletions repo/mpi-pingpong/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# 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 MpiPingpong(CMakePackage, ROCmPackage, CudaPackage):

git = "https://github.com/LLNL/microbenchmarks.git"

version("develop", branch="develop")

variant("caliper", default=False, description="Enable Caliper/Adiak support")
variant("rocm", default=False, description="Enable Rocm support")
variant("cuda", default=False, description="Enable CUDA support")
variant("mpi", default=True, description="Enable MPI support")

depends_on("mpi", when="+mpi")
depends_on("caliper", when="+caliper")
depends_on("adiak", when="+caliper")
depends_on("hip", when="+rocm")
depends_on("cuda", when="+cuda")

Copy link
Collaborator Author

@michaelmckinsey1 michaelmckinsey1 Oct 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You will probably need this for spack 1.0

Suggested change
depends_on("c", type="build")
depends_on("cxx", type="build")

conflicts("+cuda +rocm", msg="Enable only one of +cuda or +rocm")

root_cmakelists_dir = "repo/pingpong"

def cmake_args(self):
if self.spec.satisfies("+caliper"):
args = [
"-DUSE_CALIPER=ON"
]
else:
args = [
"-DUSE_CALIPER=OFF"
]

if self.spec.satisfies("+rocm"):
args.append(self.define("CMAKE_EXE_LINKER_FLAGS", self.spec['mpi'].libs.ld_flags))
args.append('-DUSE_HIP=ON')
args.append(self.define("ROCM_PATH", self.spec["hip"].prefix))
hip_vars = self.spec["hip"].variants
if "amdgpu_targets" in hip_vars:
vals = [t for t in hip_vars["amdgpu_targets"].value if t != "none"]
if vals:
archs = ",".join(vals)
args.append(self.define("CMAKE_HIP_ARCHITECTURES", archs))
else:
args.append('-DUSE_HIP=OFF')

if self.spec.satisfies("+cuda"):
args.append(self.define("USE_CUDA", "ON"))
v = self.spec.variants.get("cuda_arch", None)
if v:
vals = [a for a in v.value if a != "none"]
if vals:
args.append(self.define("CMAKE_CUDA_ARCHITECTURES", ";".join(vals)))
else:
args.append(self.define("USE_CUDA", "OFF"))

return args

def install(self, spec, prefix):
mkdirp(prefix.bin)
install(join_path(self.build_directory, "pingpong"), prefix.bin)
1 change: 1 addition & 0 deletions systems/llnl-cluster/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class LlnlCluster(System):
"dane": {
"sys_cores_per_node": 112,
"sys_cores_os_reserved_per_node": 0, # No explicit core reservation, first thread on each core reserved (2 threads per core)
"sys_sockets_per_node": 2,
"sys_cores_os_reserved_per_node_list": None,
"sys_mem_per_node_GB": 256,
"sys_cpu_mem_per_node_MB": 210,
Expand Down
1 change: 1 addition & 0 deletions systems/llnl-elcapitan/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class LlnlElcapitan(System):
"sys_cores_per_node": 56,
"sys_cores_os_reserved_per_node": 8,
"sys_cores_os_reserved_per_node_list": [0, 8, 16, 24, 32, 40, 48, 56],
"sys_sockets_per_node": 2,
"sys_gpus_per_node": 8,
"sys_mem_per_node_GB": 512,
"sys_cpu_mem_per_node_MB": 2048,
Expand Down
1 change: 1 addition & 0 deletions systems/llnl-sierra/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class LlnlSierra(System):
22,
23,
], # First two cores on each socket reserved.
"sys_sockets_per_node": 2,
"sys_gpus_per_node": 4,
"sys_mem_per_node_GB": 256,
"sys_cpu_mem_per_node_MB": 40,
Expand Down
Loading