Tests #4114
Workflow file for this run
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: Tests | |
on: | |
push: | |
pull_request: | |
schedule: | |
# run sunday moring | |
- cron: '30 6 * * 0' | |
defaults: | |
run: | |
shell: bash | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
standard_tests: | |
timeout-minutes: 60 | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
env: | |
BOUT_TEST_TIMEOUT: "6m" | |
PETSC_DIR: /usr/lib/petscdir/petsc3.12/x86_64-linux-gnu-real | |
PETSC_ARCH: "" | |
SLEPC_DIR: /usr/lib/slepcdir/slepc3.12/x86_64-linux-gnu-real/ | |
SLEPC_ARCH: "" | |
OMP_NUM_THREADS: ${{ matrix.config.omp_num_threads }} | |
PYTHONPATH: ${{ github.workspace }}/tools/pylib | |
OMPI_MCA_rmaps_base_oversubscribe: yes | |
PRTE_MCA_rmaps_default_mapping_policy: ":oversubscribe" | |
MPIRUN: mpiexec -np | |
strategy: | |
fail-fast: true | |
matrix: | |
# Need this to be able to exclude the coverage job | |
is_master_or_next: | |
- ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/next' || github.base_ref == 'master' || github.base_ref == 'next' }} | |
is_cron: | |
- ${{ github.event_name == 'cron' }} | |
config: | |
- name: "CMake, PETSc unreleased, ADIOS2" | |
os: ubuntu-20.04 | |
cmake_options: "-DBUILD_SHARED_LIBS=ON | |
-DBOUT_ENABLE_METRIC_3D=ON | |
-DBOUT_ENABLE_OPENMP=ON | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DBOUT_USE_ADIOS2=ON | |
-DBOUT_ENABLE_PYTHON=ON | |
-DADIOS2_ROOT=/home/runner/local/adios2 | |
-DSUNDIALS_ROOT=/home/runner/local | |
-DPETSC_DIR=/home/runner/local/petsc | |
-DSLEPC_DIR=/home/runner/local/slepc" | |
build_petsc: -petsc-main | |
build_petsc_branch: main | |
build_adios2: true | |
on_cron: true | |
- name: "Default options, Ubuntu 20.04" | |
os: ubuntu-20.04 | |
cmake_options: "" | |
on_cron: false | |
- name: "Optimised, static" | |
os: ubuntu-20.04 | |
cmake_options: "-DCHECK=0 | |
-DBUILD_SHARED_LIBS=OFF | |
-DCMAKE_CXX_FLAGS=-Ofast | |
-DBOUT_ENABLE_SIGNAL=OFF | |
-DBOUT_ENABLE_TRACK=OFF | |
-DBOUT_ENABLE_BACKTRACE=OFF | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DSUNDIALS_ROOT=/home/runner/local" | |
on_cron: false | |
- name: "Debug, shared" | |
os: ubuntu-20.04 | |
cmake_options: "-DCHECK=3 | |
-DCMAKE_BUILD_TYPE=Debug | |
-DBOUT_ENABLE_SIGNAL=ON | |
-DBOUT_ENABLE_TRACK=ON | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DSUNDIALS_ROOT=/home/runner/local" | |
on_cron: false | |
- name: "Shared, release, Ubuntu 20.04" | |
os: ubuntu-20.04 | |
cmake_options: "-DBUILD_SHARED_LIBS=ON | |
-DBOUT_ENABLE_OPENMP=ON | |
-DCMAKE_BUILD_TYPE=Release | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DBOUT_BUILD_DOCS=OFF | |
-DSUNDIALS_ROOT=/home/runner/local" | |
omp_num_threads: 2 | |
on_cron: false | |
- name: "Shared, OpenMP, 3D metrics" | |
os: ubuntu-latest | |
cmake_options: "-DBUILD_SHARED_LIBS=ON | |
-DBOUT_ENABLE_METRIC_3D=ON | |
-DBOUT_ENABLE_OPENMP=ON | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DBOUT_ENABLE_PYTHON=ON | |
-DSUNDIALS_ROOT=/home/runner/local" | |
omp_num_threads: 2 | |
on_cron: false | |
- name: "CMake, new PETSc" | |
os: ubuntu-20.04 | |
cmake_options: "-DBUILD_SHARED_LIBS=ON | |
-DBOUT_ENABLE_METRIC_3D=ON | |
-DBOUT_ENABLE_OPENMP=ON | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DBOUT_ENABLE_PYTHON=ON | |
-DSUNDIALS_ROOT=/home/runner/local | |
-DPETSC_DIR=/home/runner/local/petsc | |
-DSLEPC_DIR=/home/runner/local/slepc" | |
build_petsc: -petsc | |
on_cron: false | |
- name: "Coverage" | |
os: ubuntu-20.04 | |
cmake_options: "-DBUILD_SHARED_LIBS=ON | |
-DCMAKE_BUILD_TYPE=Debug | |
-DCHECK=3 | |
-DENABLE_COVERAGE=ON | |
-DBOUT_USE_PETSC=ON | |
-DBOUT_USE_SLEPC=ON | |
-DBOUT_USE_HDF5=ON | |
-DBOUT_USE_SUNDIALS=ON | |
-DBOUT_ENABLE_PYTHON=ON | |
-DSUNDIALS_ROOT=/home/runner/local" | |
unit_only: YES | |
on_cron: false | |
exclude: | |
# Don't run the coverage tests if the branch isn't master or next | |
- is_master_or_next: false | |
config: | |
name: "Coverage" | |
- is_cron: true | |
config: | |
on_cron: false | |
steps: | |
- name: Job information | |
run: | | |
echo Build: ${{ matrix.config.name }}, ${{ matrix.config.os }} | |
echo CMake options: ${{ matrix.config.cmake_options }} | |
- name: Install dependencies | |
run: sudo apt update && | |
sudo apt install -y | |
libfftw3-dev | |
libnetcdf-dev | |
libnetcdf-c++4-dev | |
netcdf-bin | |
python3 | |
python3-pip | |
python3-pytest | |
python3-numpy | |
python3-scipy | |
lcov | |
openmpi-bin | |
libopenmpi-dev | |
petsc-dev | |
slepc-dev | |
liblapack-dev | |
libparpack2-dev | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install pip packages | |
run: | | |
python -m pip install --upgrade pip setuptools | |
python -m pip install -r requirements.txt | |
- name: Cache SUNDIALS build | |
uses: actions/cache@v3 | |
with: | |
path: /home/runner/local | |
key: bout-sundials-${{ matrix.config.os }}${{ matrix.config.build_petsc }} | |
- name: Build SUNDIALS | |
run: ./.build_sundials_for_ci.sh | |
- name: Build PETSc | |
run: BUILD_PETSC=${{ matrix.config.build_petsc }} ./.build_petsc_for_ci.sh ${{ matrix.config.build_petsc_branch }} | |
- name: Build ADIOS2 | |
run: BUILD_ADIOS2=${{ matrix.config.build_adios2 }} ./.build_adios2_for_ci.sh | |
- name: Build BOUT++ | |
run: UNIT_ONLY=${{ matrix.config.unit_only }} ./.ci_with_cmake.sh ${{ matrix.config.cmake_options }} | |
- name: Capture coverage | |
if: ${{ matrix.config.name == 'Coverage' }} | |
# Explicitly run the coverage capture target, because | |
# ci_script.sh also does the upload, and we're going to do | |
# that ourselves in the next step | |
run: | | |
# Ensure that there is a corresponding .gcda file for every .gcno file | |
# This is to try and make the coverage report slightly more accurate | |
# It still won't include, e.g. any solvers we don't build with though | |
find . -name "*.gcno" -exec sh -c 'touch -a "${1%.gcno}.gcda"' _ {} \; | |
make -C build code-coverage-capture | |
- name: Upload coverage | |
if: ${{ matrix.config.name == 'Coverage' }} | |
uses: codecov/codecov-action@v3 | |
Fedora: | |
# This is its own job as it doesn't use most of the steps of the | |
# standard_tests | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build Fedora rawhide | |
run: ./.ci_fedora.sh setup openmpi rawhide | |
shell: bash | |
env: | |
TRAVIS_BUILD_DIR: ${{ github.workspace }} | |
CUDA: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
container: ghcr.io/ggeorgakoudis/boutdev-cuda:latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build minimal CUDA 12.2 @ GCC9.4.0 @ Ubuntu 20.04 | |
run: | | |
. /spack/share/spack/setup-env.sh | |
spack env activate -p /spack-env | |
git config --global --add safe.directory $GITHUB_WORKSPACE | |
rm -rf build | |
cmake -S $GITHUB_WORKSPACE -B build \ | |
-DCMAKE_C_COMPILER=gcc \ | |
-DCMAKE_CXX_COMPILER=g++ \ | |
-DBOUT_ENABLE_RAJA=on \ | |
-DBOUT_ENABLE_UMPIRE=on \ | |
-DBOUT_ENABLE_CUDA=on \ | |
-DCMAKE_CUDA_ARCHITECTURES=80 \ | |
-DCUDA_ARCH=compute_80,code=sm_80 \ | |
-DBOUT_ENABLE_WARNINGS=off \ | |
-DBOUT_USE_SYSTEM_FMT=on | |
cd build | |
make -j 4 |