Merge pull request #340 from earth-system-radiation/develop #1608
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Continuous integration in a box | |
on: | |
push: | |
branches: | |
- main | |
- develop | |
pull_request: | |
branches-ignore: | |
- documentation | |
workflow_dispatch: | |
jobs: | |
Containerized-CI: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
fortran-compiler: [ifort, ifx, nvfortran] | |
rte-kernels: [default, accel] | |
fpmodel: [DP, SP] | |
exclude: | |
# Fails with error #5633: **Internal compiler error: segmentation violation signal raised** | |
- fortran-compiler: ifx | |
rte-kernels: accel | |
# fcflags: -debug -traceback -O0 -heap-arrays -assume realloc_lhs -extend-source 132 -stand f08 -fiopenmp -fopenmp-targets=spir64 | |
# build-type: None | |
include: | |
# Set flags for Intel Fortran Compiler Classic | |
- fortran-compiler: ifort | |
fcflags: -m64 -traceback -heap-arrays -assume realloc_lhs -extend-source 132 -check bounds,uninit,pointers,stack -stand f08 -diag-disable=10448 | |
build-type: RelWithDebInfo | |
# Set flags for Intel Fortran Compiler | |
- fortran-compiler: ifx | |
rte-kernels: default | |
fcflags: -debug -traceback -O0 -heap-arrays -assume realloc_lhs -extend-source 132 -stand f08 | |
build-type: None | |
# Set flags for NVIDIA Fortran compiler | |
- fortran-compiler: nvfortran | |
rte-kernels: default | |
fcflags: -Mallocatable=03 -Mstandard -Mbounds -Mchkptr -Kieee -Mchkstk | |
build-type: None | |
- fortran-compiler: nvfortran | |
rte-kernels: accel | |
fcflags: -Mallocatable=03 -Mstandard -Mbounds -Mchkptr -Kieee -Mchkstk -acc | |
build-type: None | |
# Set container images | |
- fortran-compiler: ifort | |
image: ghcr.io/earth-system-radiation/rte-rrtmgp-ci:oneapi | |
- fortran-compiler: ifx | |
image: ghcr.io/earth-system-radiation/rte-rrtmgp-ci:oneapi | |
- fortran-compiler: nvfortran | |
image: ghcr.io/earth-system-radiation/rte-rrtmgp-ci:nvhpc | |
container: | |
image: ${{ matrix.image }} | |
env: | |
FC: ${{ matrix.fortran-compiler }} | |
FFLAGS: ${{ matrix.fcflags }} | |
NetCDF_Fortran_ROOT: /opt/netcdf-fortran | |
CMAKE_BUILD_PARALLEL_LEVEL: 8 | |
VERBOSE: | |
CTEST_PARALLEL_LEVEL: 8 | |
CTEST_OUTPUT_ON_FAILURE: 1 | |
# https://github.com/earth-system-radiation/rte-rrtmgp/issues/194 | |
OMP_TARGET_OFFLOAD: DISABLED | |
steps: | |
# | |
# Check out repository under $GITHUB_WORKSPACE | |
# | |
- name: Check out code | |
uses: actions/checkout@v4 | |
# | |
# Install required tools | |
# | |
- name: Install Required Tools | |
run: | | |
apt-get update | |
apt-get install -y git cmake ninja-build | |
# | |
# Build libraries, examples and tests | |
# | |
- name: Build libraries, examples and tests | |
run: | | |
cmake -S . -B build -G "Ninja" \ | |
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ | |
-DRTE_ENABLE_SP="$(test '${{ matrix.fpmodel }}' = SP && echo ON || echo OFF)" \ | |
-DKERNEL_MODE=${{ matrix.rte-kernels }} \ | |
-DBUILD_TESTING=ON | |
cmake --build build | |
# | |
# Run examples and tests | |
# | |
- name: Run examples and tests | |
working-directory: build | |
run: ctest | |
# | |
# Generate validation plots | |
# | |
- name: Generate validation plots | |
if: matrix.fortran-compiler == 'ifort' && matrix.rte-kernels == 'default' && matrix.fpmodel == 'DP' | |
run: | | |
cmake --build build --target validation-plots | |
# | |
# Upload validation plots | |
# | |
- name: Upload validation plots | |
if: matrix.fortran-compiler == 'ifort' && matrix.rte-kernels == 'default' && matrix.fpmodel == 'DP' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: valdiation-plot | |
path: build/tests/validation-figures.pdf |