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
19 changes: 10 additions & 9 deletions .github/workflows/scripts/compare_to_generic.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,27 @@ 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
any_failure=1
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
92 changes: 78 additions & 14 deletions .github/workflows/test-software.eessi.io.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ env:
- aarch64/neoverse_v1
- aarch64/nvidia/grace
- aarch64/a64fx

2025.06:
x86_64:
- x86_64/amd/zen2
Expand All @@ -46,6 +47,27 @@ 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
- aarch64/aws/graviton4

# list below should correspond with table @ https://eessi.io/docs/software_layer/gpu_targets/
EESSI_ACCELERATOR_TARGETS: |
2023.06:
Expand All @@ -60,8 +82,8 @@ env:
- nvidia/cc80
- nvidia/cc90
aarch64/a64fx: []

2025.06:
# Provide a default set of compute capabilities
default:
- nvidia/cc70
- nvidia/cc80
Expand All @@ -76,7 +98,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
Expand Down Expand Up @@ -148,6 +210,7 @@ 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:
Expand Down Expand Up @@ -180,15 +243,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:
Expand All @@ -209,12 +278,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: >
Expand All @@ -224,9 +291,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}\" | .[]")
Expand Down Expand Up @@ -254,7 +318,7 @@ jobs:


(
set -euo pipefail
set -e -o pipefail

module --force purge
export EESSI_SOFTWARE_SUBDIR_OVERRIDE="$cpu"
Expand Down
Loading
Loading