Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
2cea59a
Update RSC with rocm 6.4.1, adding tuolumne and moving from poodle to…
adrienbernede Jun 13, 2025
f82f31e
Remove change in submodule options causing failure
adrienbernede Jun 13, 2025
94430b0
CI script: Add core counts for new machines
adrienbernede Jun 16, 2025
017624e
Update RAJA
adrienbernede Jun 16, 2025
a61a7fd
Revert "Remove change in submodule options causing failure"
adrienbernede Jun 16, 2025
c957e70
Merge branch 'develop' into woptim/rsc-2025-06-0
adrienbernede Jun 24, 2025
71ff639
RAJA: RSC: Update
adrienbernede Jun 24, 2025
f30d4f5
RAJA: RSC: Add support for c++17
adrienbernede Jul 2, 2025
0c80d33
Update local CI jobs to rocm 6.4.1 and cce 19
adrienbernede Jul 2, 2025
e33a429
Update RSC through RAJA, use ci reservation on dane
adrienbernede Jul 8, 2025
ab0fcc4
Update CMakeLists.txt to allow Cache values of BLT_CXX_STD
adrienbernede Jul 8, 2025
e4bbc77
Allow overlapping of MPI tests allocations in CI
adrienbernede Jul 9, 2025
f8f4f21
Fix: gfx942 for tuolumne + variables to workaround bug
adrienbernede Jul 9, 2025
8a40f07
RAJA Update: RSC Fix: gfx942 for tuolumne
adrienbernede Jul 9, 2025
38e5147
RAJA: Point at RSC release tag
adrienbernede Jul 11, 2025
52fa51d
Just adding the jobs to CI
adrienbernede Jul 16, 2025
f28bfcd
Create a new pipeline for performance jobs on any machine
adrienbernede Jul 16, 2025
65d75cb
Leverage .perf_job
adrienbernede Jul 16, 2025
65ad73f
Merge branch 'develop' into woptim/rsc-2025-06-0
adrienbernede Jul 23, 2025
e0a429f
Update RAJA
adrienbernede Jul 23, 2025
a9fcee3
Merge branch 'woptim/rsc-2025-06-0' into woptim/caliper-ci
adrienbernede Jul 23, 2025
71f8820
Copy performance data to artifact directory defined by shared CI config
adrienbernede Jul 23, 2025
635341a
Update RAJA to develop with RSC 2025-06-0
adrienbernede Jul 23, 2025
37fa314
Merge branch 'woptim/rsc-2025-06-0' into woptim/caliper-ci
adrienbernede Jul 23, 2025
6ad3d28
Allow for undefined PERF_ARTIFACT_DIR
adrienbernede Jul 23, 2025
d35135f
Update C++ requirement in azure pipelines
adrienbernede Jul 24, 2025
cb83ab9
Update C++ requirement in azure pipelines
adrienbernede Jul 24, 2025
2930fd9
At least get macos build to use c++17 std
adrienbernede Jul 24, 2025
610fc35
Use same logic as in RAJA for CXX STD definition in CMake
adrienbernede Jul 24, 2025
7fdbfd9
Revert "Update C++ requirement in azure pipelines"
adrienbernede Jul 24, 2025
6b377bf
Revert "At least get macos build to use c++17 std"
adrienbernede Jul 24, 2025
ec44770
Merge branch 'woptim/rsc-2025-06-0' into woptim/caliper-ci
adrienbernede Jul 24, 2025
b077347
Update RAJA to develop with RSC 2025-06-0
adrienbernede Jul 24, 2025
10ee31b
Update CI config for latest Shared CI changes
adrienbernede Jul 29, 2025
2a076b9
rename a template
adrienbernede Jul 29, 2025
8851b15
Fix: specify dependencies
adrienbernede Jul 29, 2025
fbb0a44
Fix template job naming
adrienbernede Aug 1, 2025
e0de160
Stop running CI on ruby
adrienbernede Aug 12, 2025
45ddb10
Add caliper to json conversion script for the performance CI
tdrwenski Sep 11, 2025
67b155f
Update build script to run raja perf with specified kernels and variants
tdrwenski Sep 11, 2025
c05b0c2
Add dane performance allocation variable
tdrwenski Sep 11, 2025
1ce79ac
Update gitlab performance job
tdrwenski Sep 11, 2025
9a4f902
Add GitHub benchmark workflow
tdrwenski Sep 11, 2025
8cbcd37
Remove concurrency section as we want the benchmarks to get updated w…
tdrwenski Sep 11, 2025
44f41d1
Try out summary tool
tdrwenski Sep 11, 2025
0f5c3f8
Set OMP_NUM_THREADS to 16
tdrwenski Sep 15, 2025
ddb3313
Print link to summary of performance tests
tdrwenski Sep 15, 2025
859ef02
Turn off comment always
tdrwenski Sep 15, 2025
4576261
Fix branch name
tdrwenski Sep 15, 2025
097801a
Make sure each check on PR has a unique name
tdrwenski Sep 15, 2025
ea48821
Turn on comment on alert
tdrwenski Sep 16, 2025
ae3a920
Improve GitHub benchmark workflow
tdrwenski Sep 16, 2025
a0ed800
Print adiak metadata when running performance tests
tdrwenski Sep 19, 2025
d99d67f
Remove todo
tdrwenski Sep 23, 2025
c54fec1
Fix formating of variable
tdrwenski Sep 23, 2025
6db1cd3
Run all basic kernels
tdrwenski Sep 23, 2025
0a64bf5
Leave default/new as part of the variant name
tdrwenski Sep 23, 2025
159a4b0
Allow adding extra raja perf options
tdrwenski Sep 23, 2025
893c106
Update performance jobs
tdrwenski Sep 23, 2025
233be29
Add MPI job to performance tests
tdrwenski Sep 23, 2025
2cc4c8e
Increase number of repititions to get better statistics
tdrwenski Sep 23, 2025
52d0574
Fix process results dependencies
tdrwenski Sep 23, 2025
9304cf1
Change the benchmark data format to be time per rep instead of total …
tdrwenski Sep 24, 2025
5e00c1b
Remove repfact 10 for GPU tests as they get slower the more was run b…
tdrwenski Sep 24, 2025
bc67220
Use ms instead of s for dashboard
tdrwenski Sep 24, 2025
b40b68e
Use pathlib instead of glob for pattern matching
tdrwenski Sep 24, 2025
5026c1e
Simplify get from dictionary logic
tdrwenski Sep 24, 2025
0684452
Print CLI usage upon error
tdrwenski Sep 24, 2025
8d94b3f
Use commit hash instead of tag for github action
tdrwenski Sep 24, 2025
8efe8d1
Limit workflow permissions
tdrwenski Sep 24, 2025
ce46aa3
Make seperate job for develop and PRs so that permissions can be diff…
tdrwenski Sep 24, 2025
c2f0744
Update checkout action version
tdrwenski Sep 24, 2025
8eadc4b
Remove unneeded module
tdrwenski Sep 24, 2025
cc927b6
Make environment variable naming more consistent
tdrwenski Sep 24, 2025
62d810f
Clarify permissions in workflow
tdrwenski Sep 24, 2025
0a74484
Merge pull request #545 from tdrwenski/caliper-ci-gh-benchmark
adrienbernede Sep 25, 2025
842124f
Merge branch 'develop' into woptim/caliper-ci
adrienbernede Sep 29, 2025
8685531
Update radiuss-shared-ci
adrienbernede Sep 29, 2025
b49ae10
Point at fixup in radiuss-shared-ci
adrienbernede Nov 10, 2025
76480a1
Merge branch 'develop' into woptim/caliper-ci
adrienbernede Nov 10, 2025
4d61d88
TEMP: deactivate failing jobs
adrienbernede Nov 10, 2025
5ab2a1a
Update RAJA to develop for coherency with MATRIX support
adrienbernede Nov 10, 2025
b0630f1
Merge branch 'woptim/update-raja' into woptim/caliper-ci
adrienbernede Nov 10, 2025
779950b
TEMP: fix related to temporary deactivation of job
adrienbernede Nov 10, 2025
037b774
Merge branch 'develop' into woptim/caliper-ci
adrienbernede Nov 18, 2025
0b861c1
Temporary: trigger workflow on PR
adrienbernede Nov 20, 2025
abfa868
Temporary: trigger workflow on push
adrienbernede Nov 20, 2025
a4c46c8
Revert "Temporary: trigger workflow on push"
adrienbernede Nov 21, 2025
d8f9cc9
Revert "Temporary: trigger workflow on PR"
adrienbernede Nov 21, 2025
3651768
Merge branch 'develop' into woptim/caliper-ci
adrienbernede Nov 24, 2025
629ffd7
Merge branch 'develop' into woptim/caliper-ci
adrienbernede Dec 2, 2025
b46ddd4
Revert "TEMP: fix related to temporary deactivation of job"
adrienbernede Dec 2, 2025
968c08f
Revert "TEMP: deactivate failing jobs"
adrienbernede Dec 2, 2025
37ae750
Reduce repfact
tdrwenski Sep 30, 2025
36de3c1
Remove unused caliper config
tdrwenski Oct 3, 2025
487cdc4
Divide timings by passes as well as reps
tdrwenski Oct 3, 2025
3775dc1
Add extra info to json
tdrwenski Oct 3, 2025
8141412
Exclude variable kernels
tdrwenski Nov 10, 2025
8ed1423
Fix build issue by disabling mpi in adiak
tdrwenski Dec 4, 2025
e2c2882
Fix build error by disabling libunwind in caliper
tdrwenski Dec 5, 2025
0843981
Exclude another variable test
tdrwenski Dec 5, 2025
5eb1c52
Merge pull request #580 from tdrwenski/caliper-ci-gh-benchmark
adrienbernede Dec 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
108 changes: 108 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Process Benchmark

on:
workflow_dispatch:
inputs:
benchmark_data:
description: 'Base64 encoded benchmark data'
required: true
benchmark_name:
description: 'Name for benchmark group on the dashboard'
required: false
default: 'RAJAPerf benchmarks'

jobs:
check-performance:
if: github.ref != 'refs/heads/develop'
permissions:
# Needed to write PR check status
checks: write
# Need write if you turn on comments
pull-requests: read
contents: read
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Find associated PR
id: findpr
run: |
echo "Looking for PR with head branch: ${{ github.ref_name }}"
gh pr list --head ${{ github.ref_name }} --json number,title
PR_NUMBER=$(gh pr list --head ${{ github.ref_name }} --json number -q '.[0].number')
echo "Found PR number: $PR_NUMBER"
echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Decode benchmark data
run: echo "${{ github.event.inputs.benchmark_data }}" | base64 -d > benchmark.json

- name: Compare benchmark result
id: benchmark
continue-on-error: true
uses: benchmark-action/github-action-benchmark@v1
with:
name: ${{ github.event.inputs.benchmark_name }}
tool: 'customSmallerIsBetter'
output-file-path: benchmark.json
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: false
save-data-file: false
gh-pages-branch: gh-pages
benchmark-data-dir-path: dev/bench
comment-always: false
comment-on-alert: false
summary-always: true
fail-on-alert: true
alert-threshold: '120%'
max-items-in-chart: 100

- name: Create Check for PRs
if: steps.findpr.outputs.pr_number != ''
uses: LouisBrunner/checks-action@6b626ffbad7cc56fd58627f774b9067e6118af23
with:
token: ${{ secrets.GITHUB_TOKEN }}
name: Performance Benchmark (${{ github.event.inputs.benchmark_name }})
sha: ${{ github.sha }}
conclusion: ${{ steps.benchmark.outcome == 'success' && 'success' || 'failure' }}
output: |
{
"title": "Performance Results",
"summary": "${{ steps.benchmark.outcome == 'success' && 'Performance check passed' || 'Performance regression detected!' }}",
"text_description": "See job summary for detailed benchmark results: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}

- name: Final status
if: steps.benchmark.outcome != 'success'
run: exit 1

store-and-visualize-on-develop:
# if: github.ref == 'refs/heads/develop' # TODO uncomment before merging
permissions:
# Needed to push to gh-pages branch
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Decode benchmark data
run: echo "${{ github.event.inputs.benchmark_data }}" | base64 -d > benchmark.json

- name: Store benchmark result
id: benchmark
uses: benchmark-action/github-action-benchmark@v1
with:
name: ${{ github.event.inputs.benchmark_name }}
tool: 'customSmallerIsBetter'
output-file-path: benchmark.json
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: true
gh-pages-branch: gh-pages
benchmark-data-dir-path: dev/bench
comment-always: false
comment-on-alert: false
summary-always: true
fail-on-alert: true
alert-threshold: '120%'
max-items-in-chart: 100
18 changes: 16 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ variables:
stages:
- prerequisites
- build-and-test
- performance-measurements

# Template for jobs triggering a build-and-test sub-pipeline:
.build-and-test:
Expand All @@ -75,22 +76,35 @@ stages:
include:
- local: '.gitlab/custom-jobs-and-variables.yml'
- project: 'radiuss/radiuss-shared-ci'
ref: 'v2025.09.1'
ref: 'woptim/workflow-token'
file: 'pipelines/${CI_MACHINE}.yml'
- artifact: '${CI_MACHINE}-jobs.yml'
job: 'generate-job-lists'
strategy: depend
forward:
pipeline_variables: true

performance-measurements:
stage: performance-measurements
trigger:
include:
- local: '.gitlab/custom-jobs-and-variables.yml'
- project: 'radiuss/radiuss-shared-ci'
ref: 'woptim/workflow-token'
file: 'pipelines/performances.yml'
- local: '.gitlab/jobs/performances.yml'
strategy: depend
forward:
pipeline_variables: true

include:
# Sets ID tokens for every job using `default:`
- project: 'lc-templates/id_tokens'
file: 'id_tokens.yml'
## Note: RAJAPerf uses RSC project in RAJA submodule
# [Optional] checks preliminary to running the actual CI test
#- project: 'radiuss/radiuss-shared-ci'
# ref: 'v2025.09.1'
# ref: 'woptim/workflow-token'
# file: 'utilities/preliminary-ignore-draft-pr.yml'
# pipelines subscribed by the project
- local: '.gitlab/subscribed-pipelines.yml'
8 changes: 8 additions & 0 deletions .gitlab/custom-jobs-and-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ variables:
DANE_SHARED_ALLOC: "--exclusive --reservation=ci --time=45 --nodes=1"
# Arguments for job level allocation
DANE_JOB_ALLOC: "--reservation=ci --nodes=1"
# Arguments for performance job allocation (dedicated allocation with no overlapping).
DANE_PERF_ALLOC: "--exclusive --reservation=ci --time=15 --nodes=1"
# Project specific variants for dane
PROJECT_DANE_VARIANTS: "~shared +openmp"
# Project specific deps for dane
Expand Down Expand Up @@ -58,6 +60,8 @@ variables:
TUOLUMNE_SHARED_ALLOC: "--queue=pci --exclusive --time-limit=31m --nodes=1 -o per-resource.count=2"
# Arguments for job level allocation
TUOLUMNE_JOB_ALLOC: "--nodes=1 --begin-time=+5s"
# Arguments for performance job allocation (dedicated allocation with no overlapping).
TUOLUMNE_PERF_ALLOC: "--queue=pci --exclusive --time-limit=15m --nodes=1 --begin-time=+5s"
# Project specific variants for tuolumne
PROJECT_TUOLUMNE_VARIANTS: "~shared +openmp"
# Project specific deps for tuolumne
Expand All @@ -75,6 +79,10 @@ variables:
paths:
- ./*.cmake

.custom_perf:
variables:
CALI_CONFIG: "print.metadata"

.reproducer_vars:
script:
- |
Expand Down
102 changes: 102 additions & 0 deletions .gitlab/jobs/performances.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
##############################################################################
# Copyright (c) 2025, Lawrence Livermore National Security, LLC
# and RAJA Performance Suite project contributors.
# See the RAJAPerf/LICENSE file for details.
#
# SPDX-License-Identifier: (BSD-3-Clause)
##############################################################################

variables:
PERF_ARTIFACT_DIR: "performance-results"
PERF_RESULTS_FILE: "*_*-*.cali"
PERF_PROCESSED_FILE: "processed_results.json"
PERF_PROCESSING_CMD: "${CI_PROJECT_DIR}/scripts/gitlab/caliper_to_github_benchmark.py"
PERF_TESTS: "true"

clang_14_0_6_openmp_caliper:
variables:
SPEC: "~shared +openmp +caliper %clang@=14.0.6 ^blt@develop"
PERF_KERNELS: "Basic"
PERF_VARIANTS: "RAJA_Seq RAJA_OpenMP"
# Exclude unstable tests (~20% variability):
PERF_EXCLUDE_KERNELS: >
ARRAY_OF_PTRS
COPY8
PI_ATOMIC
REDUCE3_INT
REDUCE_STRUCT
PERF_RUN_OPTS: "--repfact 5.0"
OMP_NUM_THREADS: "16"
extends: .perf_on_dane

gcc_10_3_1_openmp_caliper:
variables:
SPEC: "~shared +openmp +caliper %gcc@=10.3.1 ^blt@develop"
PERF_KERNELS: "Basic"
PERF_VARIANTS: "RAJA_Seq RAJA_OpenMP"
# Exclude unstable tests (~20% variability):
PERF_EXCLUDE_KERNELS: >
ARRAY_OF_PTRS
COPY8
DAXPY
EMPTY
INIT3
INIT_VIEW1D
INIT_VIEW1D_OFFSET
MULADDSUB
PI_ATOMIC
PI_REDUCE
REDUCE3_INT
REDUCE_STRUCT
PERF_RUN_OPTS: "--repfact 5.0"
OMP_NUM_THREADS: "16"
extends: .perf_on_dane

clang_14_0_6_mpi_caliper:
variables:
SPEC: "~shared +mpi +caliper %clang@=14.0.6 ^blt@develop"
PERF_KERNELS: "Basic"
PERF_VARIANTS: "RAJA_Seq"
# Exclude unstable tests (~20% variability):
PERF_EXCLUDE_KERNELS: >
ARRAY_OF_PTRS
COPY8
DAXPY
DAXPY_ATOMIC
REDUCE_STRUCT
PERF_RUN_OPTS: "--repfact 5.0"
PERF_MPI_EXEC: "srun --overlap -n 16"
extends: .perf_on_dane

rocmcc_6_4_1_hip_openmp_caliper:
variables:
SPEC: "~shared +rocm +openmp +caliper amdgpu_target=gfx942 %rocmcc@=6.4.1 ^[email protected] ^blt@develop ^caliper~shared~libunwind ^adiak~shared~mpi ^papi~shared"
PERF_KERNELS: "Basic"
PERF_VARIANTS: "RAJA_HIP"
# Exclude unstable tests (~20% variability):
PERF_EXCLUDE_KERNELS: >
ARRAY_OF_PTRS
COPY8
EMPTY
IF_QUAD
INDEXLIST_3LOOP
MAT_MAT_SHARED
MULTI_REDUCE
PI_REDUCE
REDUCE3_INT
REDUCE_STRUCT
TRAP_INT
extends: .perf_on_tuolumne

process_results:
extends: .caliper_to_gh_benchmark
dependencies:
- clang_14_0_6_openmp_caliper
- gcc_10_3_1_openmp_caliper
- clang_14_0_6_mpi_caliper
- rocmcc_6_4_1_hip_openmp_caliper

report_results:
extends: .report_to_gh_benchmark
dependencies:
- process_results
33 changes: 31 additions & 2 deletions scripts/gitlab/build_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ use_dev_shm=${USE_DEV_SHM:-true}
spack_debug=${SPACK_DEBUG:-false}
debug_mode=${DEBUG_MODE:-false}
push_to_registry=${PUSH_TO_REGISTRY:-true}
perf_artifact_dir=${PERF_ARTIFACT_DIR:-""}
perf_tests=${PERF_TESTS:-false}
perf_kernels=${PERF_KERNELS:-""}
perf_exclude_kernels=${PERF_EXCLUDE_KERNELS:-""}
perf_variants=${PERF_VARIANTS:-""}
perf_run_opts=${PERF_RUN_OPTS:-""}
perf_mpi_exec=${PERF_MPI_EXEC:-""}

raja_version=${UPDATE_RAJA:-""}
sys_type=${SYS_TYPE:-""}
Expand Down Expand Up @@ -256,9 +263,8 @@ then
fi

# Test
if [[ "${option}" != "--build-only" ]] && grep -q -i "ENABLE_TESTS.*ON" ${hostconfig_path}
if [[ "${option}" != "--build-only" && "${perf_tests}" != "true" ]] && grep -q -i "ENABLE_TESTS.*ON" ${hostconfig_path}
then

if [[ ! -d ${build_dir} ]]
then
echo "[Error]: Build directory not found : ${build_dir}" && exit 1
Expand Down Expand Up @@ -288,7 +294,30 @@ then
timed_message "RAJA Perf Suite tests completed"
fi

# Performance tests
if [[ "${option}" != "--build-only" && "${perf_tests}" == "true" ]]
then

cd ${project_dir}
mkdir -p ${perf_artifact_dir}

timed_message "Performance tests for RAJA Perf Suite"

raja_perf_command="${build_dir}/bin/raja-perf.exe --kernels ${perf_kernels} --exclude-kernels ${perf_exclude_kernels} --variants ${perf_variants} --outdir ${perf_artifact_dir} ${perf_run_opts}"

if [[ -n ${perf_mpi_exec} ]]
then
raja_perf_command="${perf_mpi_exec} ${raja_perf_command}"
fi

echo "Running: ${raja_perf_command}"
${raja_perf_command}

timed_message "Performance tests for RAJA Perf Suite completed"
fi

timed_message "Cleaning up"
cd ${build_dir}
make clean

timed_message "Build and test completed"
Loading