Merge pull request #227 from earth-system-radiation/dependabot/github… #1025
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-ignore: | |
- documentation | |
pull_request: | |
branches-ignore: | |
- documentation | |
jobs: | |
Containerized-CI: | |
runs-on: ubuntu-22.04 | |
continue-on-error: ${{ matrix.experimental }} | |
strategy: | |
fail-fast: false | |
matrix: | |
fortran-compiler: [ifort, ifx, nvfortran] | |
rte-kernels: [default, accel] | |
fpmodel: [DP, SP] | |
include: | |
# Set flags for Intel Fortran Compiler Classic | |
- fortran-compiler: ifort | |
fcflags: -m64 -g -traceback -heap-arrays -assume realloc_lhs -extend-source 132 -check bounds,uninit,pointers,stack -stand f08 | |
experimental: false | |
# Set flags for Intel ifx Fortran Compiler | |
- fortran-compiler: ifx | |
rte-kernels: default | |
fcflags: -debug -traceback -O0 -heap-arrays -assume realloc_lhs -extend-source 132 -stand f08 | |
experimental: false | |
- fortran-compiler: ifx | |
rte-kernels: accel | |
fcflags: -debug -traceback -O0 -heap-arrays -assume realloc_lhs -extend-source 132 -stand f08 -fiopenmp -fopenmp-targets=spir64 | |
experimental: true | |
# Set flags for NVIDIA Fortran compiler | |
- fortran-compiler: nvfortran | |
rte-kernels: default | |
fcflags: -Mallocatable=03 -Mstandard -Mbounds -Mchkptr -Kieee -Mchkstk | |
experimental: false | |
- fortran-compiler: nvfortran | |
rte-kernels: accel | |
fcflags: -Mallocatable=03 -Mstandard -Mbounds -Mchkptr -Kieee -Mchkstk -acc | |
experimental: false | |
# Set container images | |
- fortran-compiler: ifort | |
image: ghcr.io/earth-system-radiation/rte-rrtmgp-ci:ifort | |
- fortran-compiler: ifx | |
image: ghcr.io/earth-system-radiation/rte-rrtmgp-ci:ifort | |
- fortran-compiler: nvfortran | |
image: ghcr.io/earth-system-radiation/rte-rrtmgp-ci:nvfortran | |
container: | |
image: ${{ matrix.image }} | |
env: | |
# Core variables: | |
FC: ${{ matrix.fortran-compiler }} | |
FCFLAGS: ${{ matrix.fcflags }} -DRTE_USE_${{ matrix.fpmodel}} | |
# Make variables: | |
NFHOME: /opt/netcdf-fortran | |
RRTMGP_ROOT: ${{ github.workspace }} | |
RRTMGP_DATA: ${{ github.workspace }}/rrtmgp-data | |
RTE_KERNELS: ${{ matrix.rte-kernels }} | |
RUN_CMD: | |
# https://github.com/earth-system-radiation/rte-rrtmgp/issues/194 | |
OMP_TARGET_OFFLOAD: DISABLED | |
FAILURE_THRESHOLD: 7.e-4 | |
steps: | |
# | |
# Checks-out repository under $GITHUB_WORKSPACE | |
# | |
- uses: actions/checkout@v4 | |
# | |
# Check out data | |
# | |
- name: Check out data | |
uses: actions/checkout@v4 | |
with: | |
repository: earth-system-radiation/rrtmgp-data | |
path: rrtmgp-data | |
ref: develop | |
# | |
# Build libraries, examples and tests | |
# | |
- name: Build libraries, examples and tests | |
run: | | |
$FC --version | |
make libs | |
make -C build separate-libs | |
# | |
# Run examples and tests | |
# | |
- name: Run examples and tests | |
run: make tests | |
# | |
# Relax failure thresholds for single precision | |
# | |
- name: Relax failure threshold for single precision | |
if: matrix.fpmodel == 'SP' | |
run: echo "FAILURE_THRESHOLD=3.5e-1" >> $GITHUB_ENV | |
# | |
# Compare the results | |
# | |
- name: Compare the results | |
run: make check | |
# | |
# Generate validation plots | |
# | |
- name: Generate validation plots | |
if: matrix.fortran-compiler == 'ifort' && matrix.rte-kernels == 'default' && matrix.fpmodel == 'DP' | |
working-directory: tests | |
run: python validation-plots.py | |
# | |
# Upload validation plots | |
# | |
- name: Upload validation plots | |
if: matrix.fortran-compiler == 'ifort' && matrix.rte-kernels == 'default' && matrix.fpmodel == 'DP' | |
uses: actions/upload-artifact@v3 | |
with: | |
name: valdiation-plot | |
path: tests/validation-figures.pdf |