Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 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
37 changes: 0 additions & 37 deletions .github/workflows/run.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,6 @@ on:
BENCHPARK_CODECOV_TOKEN:
required: true
jobs:
check_errors:
runs-on: ubuntu-24.04
steps:
- name: Checkout Benchpark
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Add needed Python libs
run: |
pip install -r ./requirements.txt
- name: Run negative tests via helper
shell: bash
run: |
fail() { echo "TEST FAILED: $*" >&2; exit 1; }

# one-time setup
./bin/benchpark system init --dest dane llnl-cluster

# 1) Non-MPIOnlyExperiment Test
set +e
# babelstream is not an MPIOnlyExperiment
stderr_output="$({ ./bin/benchpark experiment init dane babelstream; } 2>&1)"
status=$?
set -e
[[ $status -ne 0 ]] || fail "Expected non-zero exit status, got $status"
# Check for the specific BenchparkError message
expected="cannot run with MPI only"
grep -Fq "$expected" <<< "$stderr_output" && echo "failed as expected: $expected" || fail "Expected error message not found in stderr. Got: $stderr_output"

# 2) Multiple scaling options
set +e
# Cannot use both +strong and +weak
stderr_output="$({ ./bin/benchpark experiment init dane kripke+strong+weak; } 2>&1)"
status=$?
set -e
[[ $status -ne 0 ]] || fail "Expected non-zero exit status, got $status"
# Check for the specific BenchparkError message
expected="spec cannot specify multiple scaling options"
grep -Fq "$expected" <<<"$stderr_output" && echo "failed as expected: $expected" || fail "Expected error message not found in stderr. Got: $stderr_output"
saxpy:
runs-on: ubuntu-24.04
steps:
Expand Down
36 changes: 19 additions & 17 deletions docs/add-an-experiment.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,17 @@ We create the ``experiment.py`` file under ``benchpark/experiments/hpl/experimen
The naming of this directory will affect how the experiment is initialized, e.g.,
``benchpark experiment init ... hpl``. There are multiple scaling options, modifiers,
and programming models we can inherit from, but at minimum our experiment should inherit
from the base ``Experiment`` class and ``MpiOnlyExperiment`` indicating that our
from the base ``Experiment`` class and ``ProgrammingModel(ProgrammingModelType.Mpionly)`` indicating that our
experiment can be executed with MPI.

::

from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType

class Hpl(
Experiment,
MpiOnlyExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
):

Looking at the `HPL package
Expand All @@ -85,13 +85,13 @@ experiment only requires inheritance from the pre-defined ``OpenMPExperiment`` a
::

from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.openmp import OpenMPExperiment
from benchpark.caliper import Caliper

class Hpl(
Experiment,
MpiOnlyExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
OpenMPExperiment,
Caliper,
):
Expand All @@ -118,14 +118,14 @@ experiment.
::

from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.openmp import OpenMPExperiment
from benchpark.caliper import Caliper
from benchpark.directives import variant, maintainers

class Hpl(
Experiment,
MpiOnlyExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
OpenMPExperiment,
Caliper,
):
Expand Down Expand Up @@ -190,14 +190,14 @@ by default.
::

from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.openmp import OpenMPExperiment
from benchpark.caliper import Caliper
from benchpark.directives import variant, maintainers

class Hpl(
Experiment,
MpiOnlyExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
OpenMPExperiment,
Caliper,
):
Expand Down Expand Up @@ -285,15 +285,15 @@ runtime parameters during experiment initialization, e.g., ``benchpark experimen
::

from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.openmp import OpenMPExperiment
from benchpark.scaling import ScalingMode, Scaling
from benchpark.caliper import Caliper
from benchpark.directives import variant, maintainers

class Hpl(
Experiment,
MpiOnlyExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
OpenMPExperiment,
Scaling(ScalingMode.Strong, ScalingMode.Weak),
Caliper,
Expand Down Expand Up @@ -352,15 +352,15 @@ not list required packages for the benchmark here, since they are already define
::

from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.openmp import OpenMPExperiment
from benchpark.scaling import ScalingMode, Scaling
from benchpark.caliper import Caliper
from benchpark.directives import variant, maintainers

class Hpl(
Experiment,
MpiOnlyExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
OpenMPExperiment,
Scaling(ScalingMode.Strong, ScalingMode.Weak),
Caliper,
Expand Down Expand Up @@ -423,10 +423,12 @@ experiment using CUDA (on an NVIDIA GPU), or ``openmp`` for an experiment using

class Amg2023(
Experiment,
MpiOnlyExperiment
OpenMPExperiment,
CudaExperiment,
ROCmExperiment,
ProgrammingModel(
ProgrammingModelType.Mpionly,
ProgrammingModelType.Openmp,
ProgrammingModelType.Cuda,
ProgrammingModelType.Rocm,
),
Scaling(ScalingMode.Strong, ScalingMode.Weak, ScalingMode.Throughput),
Caliper,
):
Expand Down
7 changes: 5 additions & 2 deletions experiments/ad/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@

from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType


class Ad(Experiment, MpiOnlyExperiment):
class Ad(
Experiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
):
variant(
"workload",
default="ad",
Expand Down
15 changes: 7 additions & 8 deletions experiments/amg2023/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,20 @@
# SPDX-License-Identifier: Apache-2.0

from benchpark.caliper import Caliper
from benchpark.cuda import CudaExperiment
from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.openmp import OpenMPExperiment
from benchpark.rocm import ROCmExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.scaling import Scaling, ScalingMode


class Amg2023(
Experiment,
MpiOnlyExperiment,
OpenMPExperiment,
CudaExperiment,
ROCmExperiment,
ProgrammingModel(
ProgrammingModelType.Mpionly,
ProgrammingModelType.Openmp,
ProgrammingModelType.Cuda,
ProgrammingModelType.Rocm,
),
Scaling(ScalingMode.Strong, ScalingMode.Weak, ScalingMode.Throughput),
Caliper,
):
Expand Down
12 changes: 6 additions & 6 deletions experiments/babelstream/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@
# SPDX-License-Identifier: Apache-2.0

from benchpark.caliper import Caliper
from benchpark.cuda import CudaExperiment
from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.openmp import OpenMPExperiment
from benchpark.rocm import ROCmExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType


class Babelstream(
Experiment,
Caliper,
CudaExperiment,
ROCmExperiment,
OpenMPExperiment,
ProgrammingModel(
ProgrammingModelType.Openmp,
ProgrammingModelType.Cuda,
ProgrammingModelType.Rocm,
),
):
variant(
"workload",
Expand Down
15 changes: 7 additions & 8 deletions experiments/branson/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,20 @@
# SPDX-License-Identifier: Apache-2.0

from benchpark.caliper import Caliper
from benchpark.cuda import CudaExperiment
from benchpark.directives import variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.openmp import OpenMPExperiment
from benchpark.rocm import ROCmExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.scaling import Scaling, ScalingMode


class Branson(
Experiment,
MpiOnlyExperiment,
OpenMPExperiment,
CudaExperiment,
ROCmExperiment,
ProgrammingModel(
ProgrammingModelType.Mpionly,
ProgrammingModelType.Openmp,
ProgrammingModelType.Cuda,
ProgrammingModelType.Rocm,
),
Scaling(ScalingMode.Strong, ScalingMode.Weak, ScalingMode.Throughput),
Caliper,
):
Expand Down
6 changes: 2 additions & 4 deletions experiments/commbench/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
#
# SPDX-License-Identifier: Apache-2.0

from benchpark.cuda import CudaExperiment
from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.rocm import ROCmExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType


class Commbench(
Experiment,
CudaExperiment,
ROCmExperiment,
ProgrammingModel(ProgrammingModelType.Cuda, ProgrammingModelType.Rocm),
):
variant("workload", description="workload name", default="basic")
maintainers("arhag23")
Expand Down
8 changes: 5 additions & 3 deletions experiments/genesis/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@

from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.openmp import OpenMPExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType


class Genesis(Experiment, MpiOnlyExperiment, OpenMPExperiment):
class Genesis(
Experiment,
ProgrammingModel(ProgrammingModelType.Mpionly, ProgrammingModelType.Openmp),
):

variant(
"workload",
Expand Down
7 changes: 5 additions & 2 deletions experiments/gpcnet/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@

from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType


class Gpcnet(Experiment, MpiOnlyExperiment):
class Gpcnet(
Experiment,
ProgrammingModel(ProgrammingModelType.Mpionly),
):
variant(
"workload",
default="network_test",
Expand Down
15 changes: 7 additions & 8 deletions experiments/gromacs/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,19 @@
#
# SPDX-License-Identifier: Apache-2.0

from benchpark.cuda import CudaExperiment
from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.openmp import OpenMPExperiment
from benchpark.rocm import ROCmExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType


class Gromacs(
Experiment,
MpiOnlyExperiment,
OpenMPExperiment,
CudaExperiment,
ROCmExperiment,
ProgrammingModel(
ProgrammingModelType.Mpionly,
ProgrammingModelType.Openmp,
ProgrammingModelType.Cuda,
ProgrammingModelType.Rocm,
),
):
variant(
"workload",
Expand Down
6 changes: 2 additions & 4 deletions experiments/hpcg/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,13 @@
from benchpark.caliper import Caliper
from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.openmp import OpenMPExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.scaling import Scaling, ScalingMode


class Hpcg(
Experiment,
MpiOnlyExperiment,
OpenMPExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly, ProgrammingModelType.Openmp),
Scaling(ScalingMode.Strong, ScalingMode.Weak),
Caliper,
):
Expand Down
6 changes: 2 additions & 4 deletions experiments/hpl/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,13 @@
from benchpark.caliper import Caliper
from benchpark.directives import maintainers, variant
from benchpark.experiment import Experiment
from benchpark.mpi import MpiOnlyExperiment
from benchpark.openmp import OpenMPExperiment
from benchpark.programming_model import ProgrammingModel, ProgrammingModelType
from benchpark.scaling import Scaling, ScalingMode


class Hpl(
Experiment,
MpiOnlyExperiment,
OpenMPExperiment,
ProgrammingModel(ProgrammingModelType.Mpionly, ProgrammingModelType.Openmp),
Scaling(ScalingMode.Strong, ScalingMode.Weak),
Caliper,
):
Expand Down
Loading