Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .gitlab/tests/shared_flux_clusters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ run_tests_flux_tuolumne:
ARCHCONFIG: llnl-elcapitan
BENCHMARK:
- amg2023
- branson
- kripke
- laghos
- lammps
Expand Down
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, remhos, phloem]
BENCHMARK: [branson, laghos, lammps, raja-perf, remhos, phloem]
# Strong scaling runs for "benchpark analyze" test
- HOST: dane
ARCHCONFIG: llnl-cluster
Expand Down
8 changes: 7 additions & 1 deletion experiments/branson/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ def compute_applications_section(self):
photons = 800000000
self.add_experiment_variable("num_particles", photons, True)
self.add_experiment_variable("resource_count", 4, False)
if self.spec.satisfies("+cuda") or self.spec.satisfies("+rocm"):
self.add_experiment_variable("pool", 64, False)

self.register_scaling_config(
{
Expand Down Expand Up @@ -141,9 +143,13 @@ def compute_applications_section(self):
def compute_package_section(self):
# get package version
app_version = self.spec.variants["version"][0]
if self.spec.satisfies("+cuda") or self.spec.satisfies("+rocm"):
umpire = "+umpire"
else:
umpire = "~umpire"
self.add_package_spec(
self.name,
[
f"branson@{app_version} n_groups={self.spec.variants['n_groups'][0]} ",
f"branson@{app_version}{umpire} n_groups={self.spec.variants['n_groups'][0]} ",
],
)
6 changes: 6 additions & 0 deletions repos/ramble_applications/branson/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class Branson(ExecutableApplication):
'grep -q "<particle_storage>" {experiment_run_dir}/{input_file} || sed -i "/<\/common>/ i \ <particle_storage>{layout}<\/particle_storage>" {experiment_run_dir}/{input_file}',
'sed -i "s|<particle_algorithm>.*</particle_algorithm>|<particle_algorithm>{algorithm}</particle_algorithm>|g" {experiment_run_dir}/{input_file}',
'grep -q "<particle_algorithm>" {experiment_run_dir}/{input_file} || sed -i "/<\/common>/ i \ <particle_algorithm>{algorithm}<\/particle_algorithm>" {experiment_run_dir}/{input_file}',
'sed -i "s|<umpire_device_pool_size>.*</umpire_device_pool_size>|<umpire_device_pool_size>{pool}</umpire_device_pool_size>|g" {experiment_run_dir}/{input_file}',
'grep -q "<umpire_device_pool_size>" {experiment_run_dir}/{input_file} || sed -i "/<\/common>/ i \ <umpire_device_pool_size>{pool}<\/umpire_device_pool_size>" {experiment_run_dir}/{input_file}',
])

executable('p', '{branson}/bin/BRANSON {experiment_run_dir}/{input_file}', use_mpi=True)
Expand Down Expand Up @@ -59,6 +61,10 @@ class Branson(ExecutableApplication):
description='particle transport algorithm (EVENT|HISTORY)',
workloads=['branson'])

workload_variable('pool', default='4',
description='Device pool size in GB',
workloads=['branson'])

figure_of_merit('Photons per Second',
log_file='{experiment_run_dir}/{experiment_name}.out',
fom_regex=r'Photons Per Second \(FOM\):\s+(?P<fom>[0-9]+\.[0-9]*([0-9]*)?e\+[0-9]*)',
Expand Down
18 changes: 17 additions & 1 deletion repos/spack_repo/benchpark/packages/branson/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class Branson(CMakePackage, CudaPackage, ROCmPackage):
methods for domain decomposition."""

homepage = "https://github.com/lanl/branson"
git = "https://github.com/lanl/branson.git"
git = "https://github.com/LANL/branson.git"

tags = ["proxy-app"]

Expand All @@ -38,6 +38,18 @@ class Branson(CMakePackage, CudaPackage, ROCmPackage):
variant("openmp", default=False, description="Enable OpenMP support")
variant("caliper", default=False, description="Enable Caliper monitoring")
variant("n_groups", default=30, values=int, description="Number of groups")
variant("umpire", default=False, description="Use umpire memory pool")

with when("+umpire"):
depends_on("umpire+cuda", when="+cuda")
for sm_ in CudaPackage.cuda_arch_values:
depends_on("umpire cuda_arch={0}".format(sm_), when="cuda_arch={0}".format(sm_))

depends_on("umpire+rocm", when="+rocm")
for arch in ROCmPackage.amdgpu_targets:
depends_on("umpire amdgpu_target={0}".format(arch), when="amdgpu_target={0}".format(arch))

conflicts("~cuda~rocm")

depends_on("mpi@2:")

Expand Down Expand Up @@ -99,6 +111,10 @@ def cmake_args(self):
args.append("-DUSE_HIP=OFF")
args.append("-DUSE_GPU=OFF")

if '+umpire' in spec:
args.append("-DUSE_UMPIRE=ON")
args.append(f"-Dumpire_DIR={spec['umpire'].prefix}")

args.append(self.define_from_variant("USE_OPENMP", "openmp"))

if '+caliper' in spec:
Expand Down
Loading