Skip to content

Enable testing with CACTS, and add gh actions to use it #3

Enable testing with CACTS, and add gh actions to use it

Enable testing with CACTS, and add gh actions to use it #3

name: ghci-snl-testing
on:
# Runs on PRs against master
pull_request:
branches: [ master ]
types: [opened, synchronize, ready_for_review, reopened]
# Manual run is used to bless
workflow_dispatch:
inputs:
job_to_run:
description: 'Job to run'
required: true
type: choice
options:
- gcc-openmp
- gcc-cuda
- all
# Add schedule trigger for nightly runs at midnight MT (Standard Time)
schedule:
- cron: '0 7 * * *' # Runs at 7 AM UTC, which is midnight MT during Standard Time
concurrency:
# Two runs are in the same group if they are testing the same git ref
# - if trigger=pull_request, the ref is refs/pull/<PR_NUMBER>/merge
# - for other triggers, the ref is the branch tested
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
gcc-openmp:
if: |
${{
github.event_name != 'workflow_dispatch' ||
(
github.event.inputs.job_to_run == 'gcc-openmp' ||
github.event.inputs.job_to_run == 'all'
)
}}
runs-on: [self-hosted, ghci-snl-cpu, gcc]
strategy:
fail-fast: false
matrix:
build_type: [debug, release]
name: gcc-openmp / ${{ matrix.build_type }}
steps:
- name: Check out the repository
uses: actions/checkout@v4
with:
persist-credentials: false
show-progress: false
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Ensure CACTS is installed
run: |
python3 -m pip install --user --upgrade --trusted-host pypi.org cacts
- name: Run tests
run: |
cmd="cacts -m ghci-snl-hip -t ${{ matrix.test.build_type }} -r ./"
echo "CACTS call: $cmd"
$cmd
- name: Upload files
if: always()
uses: actions/upload-artifact@v4
with:
name: log-files-${{ matrix.test.build_type }}-ghci-snl-hip
path: |
ctest-build/*/Testing/Temporary/Last*.log
ctest-build/*/ctest_resource_file.json
ctest-build/*/ctest_script.cmake
ctest-build/*/CMakeCache.txt
gcc-cuda:
if: |
${{
github.event_name != 'workflow_dispatch' ||
(
github.event.inputs.job_to_run == 'gcc-cuda' ||
github.event.inputs.job_to_run == 'all'
)
}}
runs-on: [self-hosted, ghci-snl-cuda, cuda, gcc]
strategy:
fail-fast: false
matrix:
build_type: [debug, release]
name: gcc-cuda / ${{ matrix.test.build_type }}
steps:
- name: Check out the repository
uses: actions/checkout@v4
with:
persist-credentials: false
show-progress: false
submodules: recursive
- name: Show action trigger
uses: ./.github/actions/show-workflow-trigger
- name: Get CUDA Arch
run: |
# Ensure nvidia-smi is available
if ! command -v nvidia-smi &> /dev/null; then
echo "nvidia-smi could not be found. Please ensure you have Nvidia drivers installed."
exit 1
fi
# Get the GPU model from nvidia-smi, and set env for next step
gpu_model=$(nvidia-smi --query-gpu=name --format=csv,noheader | head -n 1)
case "$gpu_model" in
*"H100"*)
echo "ARCH=Hopper" >> $GITHUB_ENV
;;
*"A100"*)
echo "ARCH=Ampere80" >> $GITHUB_ENV
;;
*"V100"*)
echo "ARCH=Volta70" >> $GITHUB_ENV
;;
*)
echo "Unsupported GPU model: $gpu_model"
exit 1
;;
esac
- name: Run tests
uses: ./.github/actions/test-all-eamxx
with:
build_type: ${{ matrix.test.build_type }}
machine: ghci-snl-cuda
generate: ${{ env.generate }}
submit: ${{ env.submit }}
cmake-configs: Kokkos_ARCH_HOPPER90=${{ env.Hopper }};Kokkos_ARCH_AMPERE80=${{ env.Ampere }};Kokkos_ARCH_VOLTA70=${{ env.Volta }};CMAKE_CUDA_ARCHITECTURES=${{ env.CUDA_ARCH }};SCREAM_SMALL_KERNELS=${{ matrix.test.SK }}
ekat: ${{ env.ekat }}
- name: Ensure CACTS is installed
run: |
python3 -m pip install --user --upgrade --trusted-host pypi.org cacts
- name: Run tests
run: |
cmd="cacts -m ghci-snl-hip -t ${{ matrix.test.build_type }} -r ./ -c Kokkos_ARCH_${{ env.ARCH }}=ON"
echo "CACTS call: $cmd"
$cmd
- name: Upload files
if: always()
uses: actions/upload-artifact@v4
with:
name: log-files-${{ matrix.test.build_type }}-ghci-snl-hip
path: |
ctest-build/*/Testing/Temporary/Last*.log
ctest-build/*/ctest_resource_file.json
ctest-build/*/ctest_script.cmake
ctest-build/*/CMakeCache.txt