From dbbbf45123054da8f78196fcc0fbbfb806c18891 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 13:15:32 +0200 Subject: [PATCH 01/14] Reduce the number of CI jobs when checking for discrepancies --- .github/workflows/test_compare_stacks.yml | 240 +++++++++++++++------- 1 file changed, 169 insertions(+), 71 deletions(-) diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 4e3a8db6f6..871695d585 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -1,89 +1,187 @@ -# documentation: https://help.github.com/en/articles/workflow-syntax-for-github-actions name: Check for discrepancies between software stacks in software.eessi.io + on: - push: - branches: [ "main" ] - pull_request: + workflow_run: + workflows: + - Check for missing software installations in software.eessi.io + types: + - completed + workflow_dispatch: + permissions: - contents: read # to fetch code (actions/checkout) + contents: read + env: - CUDA_COMPUTE_CAPABILITIES_YAML: | + # list below should correspond with table @ https://eessi.io/docs/software_layer/cpu_targets/ + EESSI_CPU_TARGETS: | + 2023.06: + x86_64: + - x86_64/amd/zen2 + - x86_64/amd/zen3 + - x86_64/amd/zen4 + - x86_64/intel/haswell + - x86_64/intel/sapphirerapids + - x86_64/intel/skylake_avx512 + - x86_64/intel/icelake + - x86_64/intel/cascadelake + - x86_64/generic + aarch64: + - aarch64/generic + - aarch64/neoverse_n1 + - aarch64/neoverse_v1 + - aarch64/nvidia/grace + - aarch64/a64fx + + 2025.06: + x86_64: + - x86_64/amd/zen2 + - x86_64/amd/zen3 + - x86_64/amd/zen4 + - x86_64/amd/zen5 + - x86_64/intel/haswell + - x86_64/intel/sapphirerapids + - x86_64/intel/skylake_avx512 + - x86_64/intel/icelake + - x86_64/intel/cascadelake + - x86_64/generic + aarch64: + - aarch64/generic + - aarch64/neoverse_n1 + - aarch64/neoverse_v1 + - aarch64/nvidia/grace + - aarch64/a64fx + + # list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/ + EESSI_ACCELERATOR_TARGETS: | 2023.06: - # Provide a default set of compute capabilities default: - - cc70 - - cc80 - - cc90 - # and then allow for special cases for specific architectures + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 x86_64/amd/zen2: - - cc70 - - cc80 - - cc90 + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 aarch64/a64fx: [] + 2025.06: - # Provide a default set of compute capabilities default: - - cc70 - - cc80 - - cc90 - - cc100 - - cc120 + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + - amd/gfx908 + - amd/gfx90a + - amd/gfx942 + - amd/gfx1030 + - amd/gfx1100 + - amd/gfx1101 + - amd/gfx1200 + - amd/gfx1201 + aarch64/generic: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/neoverse_n1: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/neoverse_v1: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/nvidia/grace: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 aarch64/a64fx: [] + jobs: compare_stacks: - runs-on: ubuntu-24.04 + # Only run after the missing-installation workflow succeeds. + # workflow_run itself is triggered for every completed run, but this + # prevents this job from running for failed/cancelled upstream runs. + if: > + github.event_name == 'workflow_dispatch' + || github.event.workflow_run.conclusion == 'success' + strategy: fail-fast: false matrix: - EESSI_VERSION: - - 2023.06 - - 2025.06 - - 2026.06 - COMPARISON_ARCH: - - aarch64/a64fx - - aarch64/aws/graviton4 - - aarch64/neoverse_n1 - - aarch64/neoverse_v1 - - aarch64/nvidia/grace - - x86_64/amd/zen2 - - x86_64/amd/zen3 - - x86_64/amd/zen4 - - x86_64/amd/zen5 - - x86_64/intel/haswell - - x86_64/intel/skylake_avx512 - - x86_64/intel/sapphirerapids - - x86_64/intel/icelake - - x86_64/intel/cascadelake - exclude: - # amd/zen5 only supported since EESSI 2025.06 - - EESSI_VERSION: 2023.06 - COMPARISON_ARCH: x86_64/amd/zen5 - # aws/graviton4 only supported since EESSI 2026.06 - - EESSI_VERSION: 2023.06 - COMPARISON_ARCH: aarch64/aws/graviton4 - - EESSI_VERSION: 2025.06 - COMPARISON_ARCH: aarch64/aws/graviton4 + include: + # Arm CPU targets (EESSI 2023.06) + - runs_on: ubuntu-24.04-arm + EESSI_VERSION: 2023.06 + # Arm CPU targets (EESSI 2025.06) + - runs_on: ubuntu-24.04-arm + EESSI_VERSION: 2025.06 + # x86_64 CPU targets (EESSI 2023.06) + - runs_on: ubuntu-24.04 + EESSI_VERSION: 2023.06 + # x86_64 CPU targets (EESSI 2025.06) + - runs_on: ubuntu-24.04 + EESSI_VERSION: 2025.06 + + runs-on: ${{ matrix.runs_on }} + steps: - - name: Check out software-layer repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - - name: Mount EESSI CernVM-FS pilot repository - uses: eessi/github-action-eessi@v3 - - - name: Compare stacks - run: | - export EESSI_PREFIX=/cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}} - export EESSI_OS_TYPE=linux - env | grep ^EESSI | sort - - # Compare the requested architecture to the generic stack - # (assumes the general structure /cvmfs/software.eessi.io/versions/2023.06/software/linux/$COMPARISON_ARCH/modules/all) - # and include a check for CUDA-enabled software using the environment variable CUDA_COMPUTE_CAPABILITIES - # (which assumes the structure /cvmfs/software.eessi.io/versions/2023.06/software/linux/$COMPARISON_ARCH/accel/nvidia/$cc/modules/all) - - # Parse the yaml that makes the compute capabilities arch-dependent - CUDA_COMPUTE_CAPABILITIES=$(echo "${CUDA_COMPUTE_CAPABILITIES_YAML}" | yq ".\"${{matrix.EESSI_VERSION}}\".\"${{matrix.COMPARISON_ARCH}}\" // .\"${{matrix.EESSI_VERSION}}\".default | .[]" | tr '\n' ' ') - export CUDA_COMPUTE_CAPABILITIES=${CUDA_COMPUTE_CAPABILITIES%% } # trim trailing space - - .github/workflows/scripts/compare_to_generic.sh ${EESSI_PREFIX}/software/${EESSI_OS_TYPE} ${{matrix.COMPARISON_ARCH}} + - name: Check out software-layer repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + # For workflow_run events, check the exact commit that was tested + # by the upstream workflow. + ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }} + + - name: Mount EESSI CernVM-FS pilot repository + uses: eessi/github-action-eessi@v3 + with: + eessi_stack_version: '${{matrix.EESSI_VERSION}}' + + - name: Compare stacks + shell: bash + run: | + echo "::group::EESSI ${EESSI_VERSION} / ${EESSI_CPU_FAMILY}" + + # Get all CPU targets belonging to this architecture family. + CPU_TARGETS=$(echo "${EESSI_CPU_TARGETS}" \ + | yq -r ".\"${EESSI_VERSION}\".\"${EESSI_CPU_FAMILY}\"[]") + + for COMPARISON_ARCH in ${CPU_TARGETS}; do + echo "::group::Compare ${EESSI_VERSION} / ${COMPARISON_ARCH}" + + # Use architecture-specific accelerator targets where defined, + # otherwise fall back to the default set. + ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" \ + | yq -r " + .\"${EESSI_VERSION}\".\"${COMPARISON_ARCH}\" + // .\"${EESSI_VERSION}\".default + | .[] + " 2>/dev/null || true) + + # compare_to_generic.sh currently expects CUDA compute + # capabilities without the 'nvidia/' prefix. + CUDA_COMPUTE_CAPABILITIES=$(echo "${ACCELERATOR_TARGETS}" \ + | awk -F/ '$1 == "nvidia" {print $2}' \ + | tr '\n' ' ') + + export CUDA_COMPUTE_CAPABILITIES="${CUDA_COMPUTE_CAPABILITIES% }" + + echo "COMPARISON_ARCH=${COMPARISON_ARCH}" + echo "CUDA_COMPUTE_CAPABILITIES=${CUDA_COMPUTE_CAPABILITIES}" + + .github/workflows/scripts/compare_to_generic.sh \ + "${EESSI_PREFIX}/software/${EESSI_OS_TYPE}" \ + "${COMPARISON_ARCH}" + + echo "::endgroup::" + done From be36ce9c52dd241f6068fb0318b81da4ce287db8 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 13:30:39 +0200 Subject: [PATCH 02/14] Add support for AMD GPUs and simplify --- .../workflows/scripts/compare_to_generic.sh | 19 ++++++++++--------- .github/workflows/test_compare_stacks.yml | 18 +++--------------- 2 files changed, 13 insertions(+), 24 deletions(-) diff --git a/.github/workflows/scripts/compare_to_generic.sh b/.github/workflows/scripts/compare_to_generic.sh index 8f046ec9d4..0febce8241 100755 --- a/.github/workflows/scripts/compare_to_generic.sh +++ b/.github/workflows/scripts/compare_to_generic.sh @@ -29,16 +29,17 @@ if ! python3 $script_dir/compare_stacks.py $source_of_truth_modules $arch_module exit 1 fi -# Also compare NVIDIA GPU software stacks -if [[ -n "$CUDA_COMPUTE_CAPABILITIES" ]]; then - read -ra compute_capabilities <<< "$CUDA_COMPUTE_CAPABILITIES" - echo "Also comparing CUDA-enabled software stacks (for compute capabilities: ${compute_capabilities[@]})" +# Also compare accelerator software stacks +if [[ -n "$ACCELERATOR_TARGETS" ]]; then + read -ra accel_capabilities <<< "$ACCELERATOR_TARGETS" + echo "Also comparing accelerator-enabled software stacks (for compute capabilities: ${accel_capabilities[@]})" # Initialize a variable to track failures any_failure=0 # Loop over the array - for cc in "${compute_capabilities[@]}"; do - source_of_truth_modules="$base_dir/$source_of_truth/accel/nvidia/cc80/$modules_subdir" - arch_modules="$base_dir/$target_arch/accel/nvidia/$cc/$modules_subdir" + for accel in "${accel_capabilities[@]}"; do + source_of_truth_accel="${ACCELERATOR_TARGETS%% *}" # Just use the first entry as source of truth + source_of_truth_modules="$base_dir/$source_of_truth/accel/${source_of_truth_accel}/$modules_subdir" + arch_modules="$base_dir/$target_arch/accel/$accel/$modules_subdir" echo "Comparing $arch_modules to $source_of_truth_modules" if ! python3 $script_dir/compare_stacks.py $source_of_truth_modules $arch_modules; then echo "Warning: Comparison failed for compute capability $cc" >&2 @@ -46,9 +47,9 @@ if [[ -n "$CUDA_COMPUTE_CAPABILITIES" ]]; then fi done if [[ $any_failure -ne 0 ]]; then - echo "One or more CUDA software stack comparisons failed." >&2 + echo "One or more accelerator software stack comparisons failed." >&2 exit 1 fi else - echo "CUDA_COMPUTE_CAPABILITIES is not set or is empty, not checking NVIDIA software stacks" + echo "ACCELERATOR_TARGETS is not set or is empty, not checking accelerator software stacks" fi diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 871695d585..0001391aa9 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -161,23 +161,11 @@ jobs: # Use architecture-specific accelerator targets where defined, # otherwise fall back to the default set. - ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" \ - | yq -r " - .\"${EESSI_VERSION}\".\"${COMPARISON_ARCH}\" - // .\"${EESSI_VERSION}\".default - | .[] - " 2>/dev/null || true) - - # compare_to_generic.sh currently expects CUDA compute - # capabilities without the 'nvidia/' prefix. - CUDA_COMPUTE_CAPABILITIES=$(echo "${ACCELERATOR_TARGETS}" \ - | awk -F/ '$1 == "nvidia" {print $2}' \ - | tr '\n' ' ') - - export CUDA_COMPUTE_CAPABILITIES="${CUDA_COMPUTE_CAPABILITIES% }" + ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" | yq ".\"${{matrix.EESSI_VERSION}}\".\"${COMPARISON_ARCH}\" // .\"${{matrix.EESSI_VERSION}}\".default | .[]") + export ACCELERATOR_TARGETS echo "COMPARISON_ARCH=${COMPARISON_ARCH}" - echo "CUDA_COMPUTE_CAPABILITIES=${CUDA_COMPUTE_CAPABILITIES}" + echo "ACCELERATOR_TARGETS=${ACCELERATOR_TARGETS}" .github/workflows/scripts/compare_to_generic.sh \ "${EESSI_PREFIX}/software/${EESSI_OS_TYPE}" \ From 6953c8bc8195bc5220bad5f7cf5afa2075d5ff0a Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 13:59:43 +0200 Subject: [PATCH 03/14] Parse the accelerator targets properly --- .github/workflows/test_compare_stacks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 0001391aa9..ed435064d0 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -161,7 +161,7 @@ jobs: # Use architecture-specific accelerator targets where defined, # otherwise fall back to the default set. - ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" | yq ".\"${{matrix.EESSI_VERSION}}\".\"${COMPARISON_ARCH}\" // .\"${{matrix.EESSI_VERSION}}\".default | .[]") + ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" | yq ".\"${{ matrix.EESSI_VERSION }}\".\"${COMPARISON_ARCH}\" // .\"${{ matrix.EESSI_VERSION }}\".default | .[]" | tr '\n' ' ') export ACCELERATOR_TARGETS echo "COMPARISON_ARCH=${COMPARISON_ARCH}" From 94c2c1ac5278f0d83b4d0cbd89f3f885c24c367f Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 14:11:28 +0200 Subject: [PATCH 04/14] Group them according to accelerator type --- .github/workflows/test_compare_stacks.yml | 29 ++++++++++++++++++----- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index ed435064d0..359ab10f44 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -161,15 +161,32 @@ jobs: # Use architecture-specific accelerator targets where defined, # otherwise fall back to the default set. - ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" | yq ".\"${{ matrix.EESSI_VERSION }}\".\"${COMPARISON_ARCH}\" // .\"${{ matrix.EESSI_VERSION }}\".default | .[]" | tr '\n' ' ') - export ACCELERATOR_TARGETS + ALL_ACCELERATOR_TARGETS=$(echo "${EESSI_ACCELERATOR_TARGETS}" \ + | yq ".\"${{ matrix.EESSI_VERSION }}\".\"${COMPARISON_ARCH}\" // .\"${{ matrix.EESSI_VERSION }}\".default | .[]" \ + | tr '\n' ' ') echo "COMPARISON_ARCH=${COMPARISON_ARCH}" - echo "ACCELERATOR_TARGETS=${ACCELERATOR_TARGETS}" + echo "ACCELERATOR_TARGETS=${ALL_ACCELERATOR_TARGETS}" - .github/workflows/scripts/compare_to_generic.sh \ - "${EESSI_PREFIX}/software/${EESSI_OS_TYPE}" \ - "${COMPARISON_ARCH}" + for ACCELERATOR_TYPE in nvidia amd; do + ACCELERATOR_TARGETS_TYPE=$(echo "${ALL_ACCELERATOR_TARGETS}" \ + | tr ' ' '\n' \ + | grep "^${ACCELERATOR_TYPE}/" \ + | tr '\n' ' ') + + if [[ -z "${ACCELERATOR_TARGETS_TYPE}" ]]; then + continue + fi + + export ACCELERATOR_TARGETS="${ACCELERATOR_TARGETS_TYPE}" + + echo "Comparing ${ACCELERATOR_TYPE} accelerator targets:" + echo "ACCELERATOR_TARGETS=${ACCELERATOR_TARGETS}" + + .github/workflows/scripts/compare_to_generic.sh \ + "${EESSI_PREFIX}/software/${EESSI_OS_TYPE}" \ + "${COMPARISON_ARCH}" + done echo "::endgroup::" done From 0600cc7f398113e3c39a4ed7aad1519c81a2a8c6 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 14:24:29 +0200 Subject: [PATCH 05/14] Don't fail for a grep when searching the accelerator targets --- .github/workflows/test_compare_stacks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 359ab10f44..05b02b8428 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -172,7 +172,7 @@ jobs: ACCELERATOR_TARGETS_TYPE=$(echo "${ALL_ACCELERATOR_TARGETS}" \ | tr ' ' '\n' \ | grep "^${ACCELERATOR_TYPE}/" \ - | tr '\n' ' ') + | tr '\n' ' ' || true) if [[ -z "${ACCELERATOR_TARGETS_TYPE}" ]]; then continue From 0ba5aa25220d6118046b4e1619ed76ab7856e572 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 14:35:25 +0200 Subject: [PATCH 06/14] Add back 2026.06 --- .github/workflows/test_compare_stacks.yml | 71 ++++++++++++++++++++++- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 05b02b8428..9a0bf85c61 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -52,6 +52,25 @@ env: - aarch64/nvidia/grace - aarch64/a64fx + + 2026.06: + x86_64: + - x86_64/amd/zen2 + - x86_64/amd/zen3 + - x86_64/amd/zen4 + - x86_64/amd/zen5 + - x86_64/intel/haswell + - x86_64/intel/sapphirerapids + - x86_64/intel/skylake_avx512 + - x86_64/intel/icelake + - x86_64/intel/cascadelake + - x86_64/generic + aarch64: + - aarch64/generic + - aarch64/neoverse_n1 + - aarch64/neoverse_v1 + - aarch64/nvidia/grace + - aarch64/a64fx # list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/ EESSI_ACCELERATOR_TARGETS: | 2023.06: @@ -106,6 +125,46 @@ env: - nvidia/cc120 aarch64/a64fx: [] + 2026.06: + default: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + - amd/gfx908 + - amd/gfx90a + - amd/gfx942 + - amd/gfx1030 + - amd/gfx1100 + - amd/gfx1101 + - amd/gfx1200 + - amd/gfx1201 + aarch64/generic: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/neoverse_n1: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/neoverse_v1: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/nvidia/grace: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/a64fx: [] jobs: compare_stacks: # Only run after the missing-installation workflow succeeds. @@ -122,15 +181,21 @@ jobs: # Arm CPU targets (EESSI 2023.06) - runs_on: ubuntu-24.04-arm EESSI_VERSION: 2023.06 - # Arm CPU targets (EESSI 2025.06) - - runs_on: ubuntu-24.04-arm - EESSI_VERSION: 2025.06 # x86_64 CPU targets (EESSI 2023.06) - runs_on: ubuntu-24.04 EESSI_VERSION: 2023.06 + # Arm CPU targets (EESSI 2025.06) + - runs_on: ubuntu-24.04-arm + EESSI_VERSION: 2025.06 # x86_64 CPU targets (EESSI 2025.06) - runs_on: ubuntu-24.04 EESSI_VERSION: 2025.06 + # Arm CPU targets (EESSI 2026.06) + - runs_on: ubuntu-24.04-arm + EESSI_VERSION: 2026.06 + # x86_64 CPU targets (EESSI 2026.06) + - runs_on: ubuntu-24.04 + EESSI_VERSION: 2026.06 runs-on: ${{ matrix.runs_on }} From af83694b3df223bbb1f746813fc6f332e4ea49b1 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 15:31:19 +0200 Subject: [PATCH 07/14] Add general support for 2026.06 and make things more consistent --- .github/workflows/test-software.eessi.io.yml | 87 +++++++++++++++++--- .github/workflows/test_compare_stacks.yml | 5 +- 2 files changed, 77 insertions(+), 15 deletions(-) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index e5611e95f3..ae910c726b 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -28,6 +28,7 @@ env: - aarch64/neoverse_v1 - aarch64/nvidia/grace - aarch64/a64fx + 2025.06: x86_64: - x86_64/amd/zen2 @@ -46,6 +47,25 @@ env: - aarch64/neoverse_v1 - aarch64/nvidia/grace - aarch64/a64fx + + 2026.06: + x86_64: + - x86_64/amd/zen2 + - x86_64/amd/zen3 + - x86_64/amd/zen4 + - x86_64/amd/zen5 + - x86_64/intel/haswell + - x86_64/intel/sapphirerapids + - x86_64/intel/skylake_avx512 + - x86_64/intel/icelake + - x86_64/intel/cascadelake + - x86_64/generic + aarch64: + - aarch64/generic + - aarch64/neoverse_n1 + - aarch64/neoverse_v1 + - aarch64/nvidia/grace + - aarch64/a64fx # list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/ EESSI_ACCELERATOR_TARGETS: | 2023.06: @@ -60,8 +80,8 @@ env: - nvidia/cc80 - nvidia/cc90 aarch64/a64fx: [] + 2025.06: - # Provide a default set of compute capabilities default: - nvidia/cc70 - nvidia/cc80 @@ -76,7 +96,47 @@ env: - amd/gfx1101 - amd/gfx1200 - amd/gfx1201 - # and then allow for special cases for specific architectures + aarch64/generic: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/neoverse_n1: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/neoverse_v1: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/nvidia/grace: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + aarch64/a64fx: [] + + 2026.06: + default: + - nvidia/cc70 + - nvidia/cc80 + - nvidia/cc90 + - nvidia/cc100 + - nvidia/cc120 + - amd/gfx908 + - amd/gfx90a + - amd/gfx942 + - amd/gfx1030 + - amd/gfx1100 + - amd/gfx1101 + - amd/gfx1200 + - amd/gfx1201 aarch64/generic: - nvidia/cc70 - nvidia/cc80 @@ -180,15 +240,21 @@ jobs: # Arm CPU targets (EESSI 2023.06) - runs_on: ubuntu-24.04-arm EESSI_VERSION: 2023.06 - # Arm CPU targets (EESSI 2025.06) - - runs_on: ubuntu-24.04-arm - EESSI_VERSION: 2025.06 # x86_64 CPU targets (EESSI 2023.06) - runs_on: ubuntu-24.04 EESSI_VERSION: 2023.06 + # Arm CPU targets (EESSI 2025.06) + - runs_on: ubuntu-24.04-arm + EESSI_VERSION: 2025.06 # x86_64 CPU targets (EESSI 2025.06) - runs_on: ubuntu-24.04 EESSI_VERSION: 2025.06 + # Arm CPU targets (EESSI 2026.06) + - runs_on: ubuntu-24.04-arm + EESSI_VERSION: 2026.06 + # x86_64 CPU targets (EESSI 2026.06) + - runs_on: ubuntu-24.04 + EESSI_VERSION: 2026.06 runs-on: ${{ matrix.runs_on }} steps: @@ -209,12 +275,10 @@ jobs: echo "lscpu:" lscpu - - name: Mount EESSI CernVM-FS pilot repository - uses: cvmfs-contrib/github-action-cvmfs@10197e000cc0add8e54ac4fb73d3ed44e2de72b4 # v5.5 + - name: Mount EESSI CernVM-FS repository + uses: eessi/github-action-eessi@v3 with: - cvmfs_config_package: https://github.com/EESSI/filesystem-layer/releases/download/latest/cvmfs-config-eessi_latest_all.deb - cvmfs_http_proxy: DIRECT - cvmfs_repositories: software.eessi.io + eessi_stack_version: '${{matrix.EESSI_VERSION}}' - name: Check for missing installations if: > @@ -224,9 +288,6 @@ jobs: matrix.EESSI_VERSION ) run: | - # Do a basic initialisation to set up Lmod and EESSI modules - export EESSI_MODULE_STICKY=1 - source /cvmfs/software.eessi.io/versions/${{matrix.EESSI_VERSION}}/init/lmod/bash # From this extract the CPUs we need to loop over cpu_subdirs=$(echo "${EESSI_CPU_TARGETS}" | yq ".\"${EESSI_VERSION}\".\"${EESSI_CPU_FAMILY}\" | .[]") diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 9a0bf85c61..fe15e7dafa 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -52,7 +52,6 @@ env: - aarch64/nvidia/grace - aarch64/a64fx - 2026.06: x86_64: - x86_64/amd/zen2 @@ -74,10 +73,12 @@ env: # list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/ EESSI_ACCELERATOR_TARGETS: | 2023.06: + # Provide a default set of compute capabilities default: - nvidia/cc70 - nvidia/cc80 - nvidia/cc90 + # and then allow for special cases for specific architectures x86_64/amd/zen2: - nvidia/cc70 - nvidia/cc80 @@ -207,7 +208,7 @@ jobs: # by the upstream workflow. ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }} - - name: Mount EESSI CernVM-FS pilot repository + - name: Mount EESSI CernVM-FS repository uses: eessi/github-action-eessi@v3 with: eessi_stack_version: '${{matrix.EESSI_VERSION}}' From e8ae78ff6b8d96f415deb5d4b2b0c1e4a036a907 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 15:38:31 +0200 Subject: [PATCH 08/14] Clean up CI warnings --- .github/workflows/test_compare_stacks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index fe15e7dafa..3fc35ce41f 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -202,7 +202,7 @@ jobs: steps: - name: Check out software-layer repository - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: # For workflow_run events, check the exact commit that was tested # by the upstream workflow. From 87b77212c54b7c551c7397517953933a5852c526 Mon Sep 17 00:00:00 2001 From: Alan O'Cais Date: Thu, 13 Aug 2026 17:55:18 +0200 Subject: [PATCH 09/14] Add Graviton 4 --- .github/workflows/test-software.eessi.io.yml | 2 ++ .github/workflows/test_compare_stacks.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index ae910c726b..73b840413f 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -66,6 +66,8 @@ env: - aarch64/neoverse_v1 - aarch64/nvidia/grace - aarch64/a64fx + - aarch64/aws/graviton4 + # list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/ EESSI_ACCELERATOR_TARGETS: | 2023.06: diff --git a/.github/workflows/test_compare_stacks.yml b/.github/workflows/test_compare_stacks.yml index 3fc35ce41f..03a7a65679 100644 --- a/.github/workflows/test_compare_stacks.yml +++ b/.github/workflows/test_compare_stacks.yml @@ -70,6 +70,8 @@ env: - aarch64/neoverse_v1 - aarch64/nvidia/grace - aarch64/a64fx + - aarch64/aws/graviton4 + # list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/ EESSI_ACCELERATOR_TARGETS: | 2023.06: From 1af8d7f789d370ffb37336f41698bbe733fbb664 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 17 Aug 2026 14:33:07 +0200 Subject: [PATCH 10/14] Only run `requires_forced_ci` on PRs --- .github/workflows/test-software.eessi.io.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index 73b840413f..4effe7acc3 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -211,6 +211,7 @@ jobs: requires_forced_ci: runs-on: ubuntu-24.04 + if: github.event_name == 'pull_request' needs: check_EESSI_version_changed_files steps: - name: Check whether force-ci-checks is required From 34dd2de3e12a5532bff3c61f42ddb99dadfa9550 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 17 Aug 2026 14:44:02 +0200 Subject: [PATCH 11/14] Work around problems with Lmod --- .github/workflows/test-software.eessi.io.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index 4effe7acc3..716268a0da 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -318,7 +318,7 @@ jobs: ( - set -euo pipefail + set -e -o pipefail module --force purge export EESSI_SOFTWARE_SUBDIR_OVERRIDE="$cpu" From 1889a353f75b77718944a8ed41c9c7e1d611d4a0 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 17 Aug 2026 14:47:21 +0200 Subject: [PATCH 12/14] Update test-software.eessi.io.yml --- .github/workflows/test-software.eessi.io.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index 716268a0da..400e861360 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -252,7 +252,7 @@ jobs: # x86_64 CPU targets (EESSI 2025.06) - runs_on: ubuntu-24.04 EESSI_VERSION: 2025.06 - # Arm CPU targets (EESSI 2026.06) + # Arm CPU targets (EESSI 2026.06) - runs_on: ubuntu-24.04-arm EESSI_VERSION: 2026.06 # x86_64 CPU targets (EESSI 2026.06) From 5bd3430b43f0df43a43785d23df79cb8ff2f95f3 Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 17 Aug 2026 15:09:08 +0200 Subject: [PATCH 13/14] Update test-software.eessi.io.yml --- .github/workflows/test-software.eessi.io.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index 400e861360..70d2402232 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -211,22 +211,25 @@ jobs: requires_forced_ci: runs-on: ubuntu-24.04 - if: github.event_name == 'pull_request' needs: check_EESSI_version_changed_files steps: - name: Check whether force-ci-checks is required if: > - needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS == '' + github.event_name == 'pull_request' + && needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS == '' && !contains(github.event.pull_request.labels.*.name, 'force-ci-checks') run: | echo "::error::No EasyStack changes detected, so missing-installation CI was skipped." echo "::error::All PRs require missing-installation CI, someone with triage rights needs to add the 'force-ci-checks' label." exit 1 - + - name: Force CI label is present or EasyStack changes detected if: > - needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS != '' - || contains(github.event.pull_request.labels.*.name, 'force-ci-checks') + github.event_name == 'pull_request' + && ( + needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS != '' + || contains(github.event.pull_request.labels.*.name, 'force-ci-checks') + ) run: echo "No forced CI required." check_missing: From efa45e49388799efce435c910eebbf4c9e6204bb Mon Sep 17 00:00:00 2001 From: ocaisa Date: Mon, 17 Aug 2026 15:11:45 +0200 Subject: [PATCH 14/14] Update test-software.eessi.io.yml --- .github/workflows/test-software.eessi.io.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-software.eessi.io.yml b/.github/workflows/test-software.eessi.io.yml index 70d2402232..1f4a087221 100644 --- a/.github/workflows/test-software.eessi.io.yml +++ b/.github/workflows/test-software.eessi.io.yml @@ -210,26 +210,23 @@ jobs: echo "EOF" >> "$GITHUB_OUTPUT" requires_forced_ci: + if: github.event_name == 'pull_request' runs-on: ubuntu-24.04 needs: check_EESSI_version_changed_files steps: - name: Check whether force-ci-checks is required if: > - github.event_name == 'pull_request' - && needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS == '' + needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS == '' && !contains(github.event.pull_request.labels.*.name, 'force-ci-checks') run: | echo "::error::No EasyStack changes detected, so missing-installation CI was skipped." echo "::error::All PRs require missing-installation CI, someone with triage rights needs to add the 'force-ci-checks' label." exit 1 - + - name: Force CI label is present or EasyStack changes detected if: > - github.event_name == 'pull_request' - && ( - needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS != '' - || contains(github.event.pull_request.labels.*.name, 'force-ci-checks') - ) + needs.check_EESSI_version_changed_files.outputs.EESSI_VERSIONS != '' + || contains(github.event.pull_request.labels.*.name, 'force-ci-checks') run: echo "No forced CI required." check_missing: