-
Notifications
You must be signed in to change notification settings - Fork 42
[WIP] Mpi-Pingpong Benchmark #726
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
michaelmckinsey1
wants to merge
71
commits into
develop
Choose a base branch
from
benchmark/mpi-pingpong
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
71 commits
Select commit
Hold shift + click to select a range
dda306c
Initial template
michaelmckinsey1 9546b0a
update maintainer
31ed182
Fix bugs
michaelmckinsey1 81f5d96
Working local repo
michaelmckinsey1 d70d335
Add newline
michaelmckinsey1 7192655
added message size
9784091
Add more parameters
michaelmckinsey1 900fe1a
more experiments
michaelmckinsey1 cdb20bd
Merge branch 'develop' of github.com:LLNL/benchpark into benchmark/mp…
3280fc7
ran with more ranks
2b3f8cf
kind of run on multiple systems
7232351
changed sys_cores_per_node to 40 for lassen
1d1dea0
Add comment
michaelmckinsey1 fc4f6be
tioga core changes from 64 to 56
53cc05f
Merge branch 'benchmark/mpi-pingpong' of github.com:LLNL/benchpark in…
f560015
tioga 56 core experiment
cdfb152
Add comment
michaelmckinsey1 8469d28
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
be21b42
Try automatically naming caliper file
michaelmckinsey1 ebf767e
Merge branch 'benchmark/mpi-pingpong' of github.com:LLNL/benchpark in…
ce41d46
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
195c79c
Undo change
michaelmckinsey1 ff29022
loops through message sizes and also gets multiple cali files with 1 …
1503c2e
metadata added
23965fc
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 558705f
Update application.py
michaelmckinsey1 dd9f5ae
added sockets per node in systems
bff183f
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 ea4e874
Update shared_slurm_clusters.yml
michaelmckinsey1 6b08ac5
lint
michaelmckinsey1 dbb09cb
Undo change because benchmark is private
michaelmckinsey1 6bce99d
added system memory info
dbeae11
Revert "added system memory info"
1238ede
remove whitespace
slabasan e14db10
update git url
slabasan e048732
fixed application.py to match source code
976da3e
fixed application.py to match source code
ddcac9c
fixing executable so it matches source code
12bb7f8
updated package.py and experiment.py to point to the correct spot for…
887355b
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 716d873
Update shared_slurm_clusters.yml
michaelmckinsey1 51d4c95
clean-up, removing uneccessary comments
9a29628
Merge branch 'benchmark/mpi-pingpong' of github.com:LLNL/benchpark in…
657dbbb
Update experiment.py
michaelmckinsey1 2c5f4cd
Fix bug
michaelmckinsey1 8bb4d70
solution
michaelmckinsey1 54f4c8b
Set n_ranks_per_node such that n_ranks is set in addition to n_nodes.…
michaelmckinsey1 862a184
Revert change and allow ranks greater than 1000
michaelmckinsey1 4cbba6b
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 b3e9848
Use different value for placeholder instead of relying on max value
michaelmckinsey1 b9145c8
Move change to PR
michaelmckinsey1 3308ddb
Merge branch 'new-placeholder' into benchmark/mpi-pingpong
michaelmckinsey1 2ec6f48
first test with openmp option
680afc4
trying out rocm
ab0a447
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
michaelmckinsey1 ffd06c0
rocm added
c3396ec
Update package.py
michaelmckinsey1 ee4754c
amdgpu required
michaelmckinsey1 3e7816c
amdgpu
michaelmckinsey1 aa1712e
Merge remote-tracking branch 'origin/michaelmckinsey1-patch-1' into b…
e2b7332
fix package
michaelmckinsey1 6f9c625
Merge branch 'develop' into benchmark/mpi-pingpong
michaelmckinsey1 c2462c7
fix merge conflict
f65b664
added cuda variant
856f40a
fix conflicts
ca27b96
Revert "Spack 1 update (#953)"
9e1318b
renamed USE_ROCM to USE_HIP
5d125ba
Merge remote-tracking branch 'origin/develop' into benchmark/mpi-ping…
michaelmckinsey1 976db49
Revert "Revert "Spack 1 update (#953)""
michaelmckinsey1 65b0a8f
Fix default compiler
michaelmckinsey1 2aea1b6
rm file
michaelmckinsey1 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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"]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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"]) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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") | ||
|
|
||
| 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) | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
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