Skip to content
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

Adding experiment class for gpcNet #430

Open
wants to merge 75 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
47a22d1
added helloworld
Jun 20, 2024
461fc2a
licence
pearce8 Jul 9, 2024
1caa88e
license
pearce8 Jul 9, 2024
f8689d8
Merge branch 'develop' of github.com:LLNL/benchpark into hw
Jul 11, 2024
9b6c7e2
added openmp implementation of quicksilver benchmark to benchpark
Jul 11, 2024
529f71e
removed unnecessary files
Jul 11, 2024
73be27a
removed redundant files
Jul 11, 2024
a3a4fdd
removed extra files
Jul 11, 2024
da16854
removed another redundant file
Jul 11, 2024
20bf6be
spellcheck
pearce8 Jul 13, 2024
9700878
new line
pearce8 Jul 13, 2024
a40c4e8
adding tags
pearce8 Jul 13, 2024
6e0641f
add dryrun
pearce8 Jul 13, 2024
87c0d60
some new benchmarks
Jul 22, 2024
a396eb8
some benchmarks to add
Jul 22, 2024
f8f8e67
Merge branch 'hw' of github.com:august-knox/benchpark into hw
Jul 22, 2024
647626f
Merge commit 'a1cd761c41fe738ae7bd4ccb95b5b0daa9381026' of github.com…
Jul 26, 2024
0a4ae80
Merge commit 'abbedb9334687e3cc3610bcafc71f94e84a3f2b9' of github.com…
Jul 29, 2024
fed3fd8
strong and weak scaling for quicksilver
Aug 5, 2024
118a025
most recent progress. Quicksilver weak/strong scaling implemented
Aug 6, 2024
1a28c1e
progress on strong and weak scaling for IOR
Aug 9, 2024
b8fa4f2
cleaning up unnecessary mpi version specs
Aug 13, 2024
e5ec2b2
updated ior to mpi-only and made quicksilver-mpi variant false
Aug 14, 2024
24d1216
fixed line in qs
Aug 14, 2024
aa68b3f
fixed cuda also defaulting to true
Aug 14, 2024
d1409d0
initial commit of gpcnet
Aug 15, 2024
115a6bd
Delete repo/remhos directory
august-knox Aug 19, 2024
9884cb7
Delete repo/ior directory
august-knox Aug 19, 2024
b9fd194
Delete repo/quicksilver directory
august-knox Aug 19, 2024
fd72882
Delete experiments/ior/mpi-only directory
august-knox Aug 19, 2024
c5ae5ce
Delete experiments/quicksilver/openmp directory
august-knox Aug 19, 2024
fe7f4a8
Delete experiments/remhos/openmp directory
august-knox Aug 19, 2024
f21f9b2
cleaning up gpcnet code
Aug 19, 2024
a3819bd
Merge branch 'gpcnet' of github.com:august-knox/benchpark into gpcnet
Aug 19, 2024
ae7069c
Merge branch 'develop' into gpcnet
pearce8 Sep 27, 2024
617993f
license
pearce8 Sep 27, 2024
fda1ea6
Adding dry run on dynamic tioga
pearce8 Sep 27, 2024
5fb7ba8
Merge branch 'develop' into gpcnet
pearce8 Sep 27, 2024
daff4da
Moving dry run into its own directory
pearce8 Sep 30, 2024
75c4ba7
Merge branch 'develop' of github.com:august-knox/benchpark into gpcnet
Nov 1, 2024
2b0ba9f
Merge branch 'develop' of github.com:august-knox/benchpark into gpcnet
Nov 1, 2024
1011c71
new gpcnet experiment.py
Nov 4, 2024
d9fcd75
Delete experiments/gpcnet/mpi-only directory
august-knox Nov 4, 2024
3e86ff2
dry run and lint
Nov 4, 2024
3cf44ab
Merge branch 'gpcnet' of github.com:august-knox/benchpark into gpcnet
Nov 4, 2024
93ea39f
more lint
Nov 4, 2024
4d08ce9
lint fix?
Nov 4, 2024
4317859
removing random tab
Nov 4, 2024
7007251
removing unused imports
Nov 4, 2024
d9c3eda
dry run
Nov 4, 2024
d371802
fixing old dryruns
Nov 4, 2024
8468d61
more dryrun fixes
Nov 4, 2024
281c78a
more dryrun fixes
Nov 4, 2024
f2d1178
more dryrun fixes
Nov 4, 2024
641a994
removing final extra system init in dryrun
Nov 4, 2024
1214ed8
Merge remote-tracking branch 'origin/develop' into gpcnet
Nov 6, 2024
bedc891
removing old comment
Nov 13, 2024
20d1cb8
Merge branch 'develop' into experiment/gpcnet
pearce8 Nov 15, 2024
98cb4bc
Merge branch 'develop' of github.com:LLNL/benchpark into experiment/g…
Dec 2, 2024
44f4f73
updating dryrun
Dec 2, 2024
0456ecb
fixing dryrun
Dec 2, 2024
bedba0a
fix dryrun
Dec 2, 2024
755f13b
Merge branch 'develop' into experiment/gpcnet
slabasan Dec 18, 2024
cb9ec29
Merge branch 'develop' into experiment/gpcnet
slabasan Dec 19, 2024
aa3a78a
Merge branch 'develop' into experiment/gpcnet
pearce8 Jan 6, 2025
1b5d19a
Merge branch 'develop' into experiment/gpcnet
pearce8 Jan 6, 2025
46d9e42
resolving merge conflict
Jan 7, 2025
cdb06ca
fixing merge conflict:
Jan 8, 2025
4ae2d3d
Merge branch 'develop' of github.com:LLNL/benchpark into experiment/g…
Jan 8, 2025
cf4ca56
Merge branch 'develop' into experiment/gpcnet
august-knox Jan 8, 2025
e47ba09
adding FOMs
Jan 9, 2025
c42c17a
Merge branch 'experiment/gpcnet' of github.com:LLNL/benchpark into ex…
Jan 9, 2025
54bf31c
Merge branch 'develop' of github.com:LLNL/benchpark into experiment/g…
Jan 9, 2025
a959295
Merge branch 'develop' into experiment/gpcnet
august-knox Jan 14, 2025
0918769
Merge branch 'develop' into experiment/gpcnet
august-knox Jan 15, 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
35 changes: 35 additions & 0 deletions .github/workflows/run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,29 @@ jobs:
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run

- name: Dry run gpcnet/mpi-only on nosite-x86_64 with allocation modifier
run: |
./bin/benchpark experiment init --dest=gpcnet-mpi-only1 gpcnet
./bin/benchpark setup gpcnet-mpi-only1 nosite-x86_64 workspace/
. workspace/setup.sh
ramble \
--workspace-dir workspace/gpcnet-mpi-only1/nosite-x86_64/workspace \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run

- name: Dry run gpcnet/mpi-only on dynamic Tioga with allocation modifier
run: |
./bin/benchpark experiment init --dest=gpcnet-mpi-only2 gpcnet
./bin/benchpark setup gpcnet-mpi-only2 ./tioga-system workspace/
system_id=$(./bin/benchpark system id ./tioga-system)
. workspace/setup.sh
ramble \
--workspace-dir "workspace/gpcnet-mpi-only2/$system_id/workspace" \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run

- name: Dry run phloem/mpi-only on nosite-x86_64 with allocation modifier
run: |
Expand Down Expand Up @@ -616,3 +639,15 @@ jobs:
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run

- name: Dry run dynamic gpcnet/mpi-only with dynamic CTS ruby
run: |
./bin/benchpark experiment init --dest=gpcnet-mpi gpcnet
./bin/benchpark setup ./gpcnet-mpi ./ruby-system workspace/
system_id=$(./bin/benchpark system id ./ruby-system)
. workspace/setup.sh
ramble \
--workspace-dir "workspace/gpcnet-mpi/$system_id/workspace" \
--disable-progress-bar \
--disable-logger \
workspace setup --dry-run
50 changes: 50 additions & 0 deletions experiments/gpcnet/experiment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# 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.scaling import StrongScaling


class Gpcnet(Experiment, StrongScaling):
variant(
"workload",
default="network_test",
values=("network_test", "network_load_test"),
description="network_test or network_load_test",
)

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

def compute_applications_section(self):
# TODO: Replace with conflicts clause
self.add_experiment_variable(
"n_ranks", "{n_nodes}*{sys_cores_per_node}//2", True
)
if self.spec.satisfies("workload=network_test"):
self.add_experiment_variable("n_nodes", ["2", "4"])
elif self.spec.satisfies("workload=network_load_test"):
self.add_experiment_variable("n_nodes", "10")

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"

# empty package_specs value implies external package
self.add_spack_spec(system_specs["mpi"])

self.add_spack_spec(
self.name, [f"gpcnet@{app_version} +mpi", system_specs["compiler"]]
)
32 changes: 32 additions & 0 deletions repo/gpcnet/application.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Copyright 2023 Lawrence Livermore National Security, LLC and other
# Benchpark Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: Apache-2.0

import sys

from ramble.appkit import *


class Gpcnet(ExecutableApplication):
"""GPCNet benchmark"""
name = "GPCNet"

executable('p1', 'network_test', use_mpi=True)
executable('p2', 'network_load_test', use_mpi=True)
workload('network_test', executables=['p1'])
workload('network_load_test', executables=['p2'])

figure_of_merit('Avg Multiple Allreduce',
log_file='{experiment_run_dir}/{experiment_name}.out',
fom_regex=r'\|\s+Multiple Allreduce \([0-9]* B\)\s+\|\s+(?P<fom>[0-9]+\.[0-9]*)',
group_name='fom', units='MiB/sec')
figure_of_merit('Avg RR Two-sided Lat',
log_file='{experiment_run_dir}/{experiment_name}.out',
fom_regex=r'\|\s+RR Two-sided Lat \([0-9]* B\)\s+\|\s+(?P<fom>[0-9]+\.[0-9]*)',
group_name='fom', units='MiB/sec')
figure_of_merit('Avg RR Get Lat',
log_file='{experiment_run_dir}/{experiment_name}.out',
fom_regex=r'\|\s+RR Get Lat \([0-9]* B\)\s+\|\s+(?P<fom>[0-9]+\.[0-9]*)',
group_name='fom', units='MiB/sec')
success_criteria('pass', mode='string', match=r'.*', file='{experiment_run_dir}/{experiment_name}.out')
41 changes: 41 additions & 0 deletions repo/gpcnet/package.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Copyright 2023 Lawrence Livermore National Security, LLC and other
# Benchpark Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: Apache-2.0

from spack.package import *

class Gpcnet(MakefilePackage):


tags = ["proxy-app"]

homepage = "https://codesign.llnl.gov/quicksilver.php"
url = "https://github.com/netbench/GPCNET/archive/refs/tags/1.2.tar.gz"
git = "https://github.com/netbench/GPCNET"

maintainers("knox10")

version("master", branch="master")

variant("mpi", default=False, description="Build with MPI support")

depends_on("mpi", when="+mpi")

@property
def build_targets(self):
targets = ["all"]
return targets

def edit(self, spec, prefix):
makefile = FileFilter("Makefile")
makefile.filter('CC = cc', "CC = {0}".format(spec["mpi"].mpicc))


def install(self, spec, prefix):
mkdir(prefix.bin)
mkdir(prefix.doc)
install("network_test", prefix.bin)
install("network_load_test", prefix.bin)
install("LICENSE", prefix.doc)
install("README.md", prefix.doc)