Skip to content

Use separate CI doxygen action #1339

Use separate CI doxygen action

Use separate CI doxygen action #1339

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
concurrency:
group: ${ {github.event_name }}-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{github.event_name == 'pull_request'}}
jobs:
CI:
defaults:
run:
shell: bash
env:
CCACHE_DIR: "${{ github.workspace }}/.ccache"
CCACHE_MAXSIZE: "10G"
CCACHE_CPP2: "true"
ASAN_OPTIONS: "detect_leaks=0"
strategy:
matrix:
distro: ['ubuntu:latest']
cxx: ['g++', 'clang++']
backend: ['OPENMP', 'SERIAL']
cmake_build_type: ['Debug', 'Release']
kokkos_ver: ['3.7.02']
bounds_check: ['OFF']
arborx: ['OFF']
heffte: ['OFF' ]
hypre: ['OFF']
liball: ['OFF']
silo: ['OFF']
hdf5: ['OFF']
coverage: ['OFF']
include:
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'THREADS'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
silo: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:intel'
cxx: 'icpx'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:intel'
cxx: 'icpx'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:intel'
cxx: 'icpx'
backend: 'SERIAL'
cmake_build_type: 'Release'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:intel'
cxx: 'icpx'
backend: 'SERIAL'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:intel'
cxx: 'icpx'
backend: 'SERIAL'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'MKL'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'fedora:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '4.0.00'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
doxygen: 'ON'
- distro: 'fedora:latest'
cxx: 'clang++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '4.0.00'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'opensuse:latest'
cxx: 'g++'
cmake_build_type: 'Release'
backend: 'OPENMP'
kokkos_ver: '4.0.00'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'opensuse:latest'
cxx: 'clang++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '4.0.00'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
hdf5: 'HDF5'
coverage: 'OFF'
- distro: 'ubuntu:rolling'
cxx: 'g++'
cmake_build_type: 'Release'
backend: 'OPENMP'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:rolling'
cxx: 'clang++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'fedora:nompi'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '4.0.00'
arborx: 'ArborX'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '3.7.02'
arborx: 'ArborX'
heffte: 'OFF'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'FFTW'
hypre: 'OFF'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Release'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
liball: 'libALL'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'HYPRE'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
silo: 'Silo'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'OFF'
heffte: 'OFF'
hypre: 'OFF'
hdf5: 'HDF5'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'ArborX'
heffte: 'FFTW'
hypre: 'HYPRE'
liball: 'libALL'
silo: 'Silo'
hdf5: 'HDF5'
bounds_check: 'BoundsCheck'
coverage: 'OFF'
- distro: 'ubuntu:latest'
cxx: 'g++'
backend: 'OPENMP'
cmake_build_type: 'Debug'
kokkos_ver: '3.7.02'
arborx: 'ArborX'
heffte: 'FFTW'
hypre: 'HYPRE'
liball: 'libALL'
silo: 'Silo'
hdf5: 'HDF5'
coverage: 'ON'
runs-on: ubuntu-20.04
timeout-minutes: 30
container:
image: ghcr.io/ecp-copa/ci-containers/${{ matrix.distro }}
options: --security-opt seccomp=unconfined
# FIXME: remove failing distributions here when passing
continue-on-error: ${{ (matrix.distro == 'ubuntu:intel' && matrix.backend == 'SERIAL' && matrix.cmake_build_type == 'Release') || matrix.distro == 'opensuse:latest' }}
steps:
- name: Cache ccache
uses: actions/cache@v2
with:
path: ${{ env.CCACHE_DIR }}
key: ccache-${{ matrix.distro }}-${{github.run_id}}
restore-keys: ccache-${{ matrix.distro }}
- name: Zero ccache stats
run: |
ccache -z
- name: Checkout kokkos
uses: actions/checkout@v3
with:
repository: kokkos/kokkos
ref: ${{ matrix.kokkos_ver }}
path: kokkos
- name: Build kokkos
env:
BOUNDS: ${{ matrix.bounds_check }}
working-directory: kokkos
run: |
[[ ${{ matrix.backend }} == "OPENMP" ]] && kokkos_cmake_opts+=( -DKokkos_ENABLE_OPENMP==ON )
[[ ${{ matrix.backend }} == "THREADS" ]] && kokkos_cmake_opts+=( -DKokkos_ENABLE_THREADS==ON )
[[ ${BOUNDS} == "BoundsCheck" ]] && kokkos_cmake_opts+=( -DKokkos_ENABLE_DEBUG_BOUNDS_CHECK=ON )
cmake -B build \
-DCMAKE_INSTALL_PREFIX=$HOME/kokkos \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DKokkos_ENABLE_HWLOC=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \
${kokkos_cmake_opts[@]}
cmake --build build --parallel 2
cmake --install build
- name: Checkout arborx
if: ${{ matrix.arborx == 'ArborX' }}
uses: actions/checkout@v3
with:
repository: arborx/ArborX
ref: v1.2
path: arborx
- name: Build arborx
if: ${{ matrix.arborx == 'ArborX' }}
working-directory: arborx
run: |
cmake -B build \
-DKokkos_ROOT=${HOME}/kokkos \
-DCMAKE_INSTALL_PREFIX=$HOME/arborx \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
cmake --build build --parallel 2
cmake --install build
- name: Checkout heffte
if: ${{ matrix.heffte != 'OFF' }}
uses: actions/checkout@v3
with:
repository: icl-utk-edu/heffte
ref: v2.3.0
path: heffte
- name: Build heffte
if: ${{ matrix.heffte != 'OFF' }}
working-directory: heffte
run: |
[[ ${{ matrix.heffte }} == "FFTW" ]] && heffte_cmake_opts+=( -DHeffte_ENABLE_FFTW=ON )
[[ ${{ matrix.heffte }} == "MKL" ]] && heffte_cmake_opts+=( -DHeffte_ENABLE_MKL=ON )
cmake -B build \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=$HOME/heffte \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \
-DMKL_ROOT=/opt/intel/oneapi/mkl/latest \
${heffte_cmake_opts[@]}
cmake --build build --parallel 2
cmake --install build
- name: Checkout hypre
if: ${{ matrix.hypre == 'HYPRE' }}
uses: actions/checkout@v3
with:
repository: hypre-space/hypre
ref: v2.22.1
path: hypre
- name: Build hypre
if: ${{ matrix.hypre == 'HYPRE' }}
working-directory: hypre/src
run: |
[[ ${{ matrix.backend }} == 'OPENMP' ]] && hypre_cmake_opts+=( -DHYPRE_WITH_OPENMP=ON )
cmake -B build \
-DHYPRE_INSTALL_PREFIX=$HOME/hypre \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \
-DHYPRE_WITH_MPI=ON \
${hypre_cmake_opts[@]}
cmake --build build --parallel 2
cmake --install build
- name: Checkout ALL
if: ${{ matrix.liball == 'libALL' }}
run: |
git clone --depth 1 --branch v0.9.2 https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing ALL
- name: Build ALL
if: ${{ matrix.liball == 'libALL' }}
working-directory: ALL
run: |
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/ALL
cmake --build build --parallel 2
cmake --install build
- name: Checkout Cabana
uses: actions/checkout@v3
- name: Build Cabana
env:
SANITIZER: ${{ matrix.sanitizer }}
SILO: ${{ matrix.silo }}
HDF5: ${{ matrix.hdf5 }}
run: |
if [[ ${SILO} == 'Silo' ]]; then
cabana_cmake_opts+=( -DCabana_REQUIRE_SILO=ON )
else
cabana_cmake_opts+=( -DCMAKE_DISABLE_FIND_PACKAGE_SILO=ON )
fi
if [[ ${HDF5} == 'HDF5' ]]; then
cabana_cmake_opts+=( -DCabana_REQUIRE_HDF5=ON )
else
cabana_cmake_opts+=( -DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON )
fi
# FIXME: Add sanitizer for fedora/opensuse when fixed
if [[ ${SANITIZER} == 'MSAN' ]]; then
cabana_cmake_opts+=( -DWITH_MSAN=ON )
elif [[ ${{ matrix.distro }} != *"fedora"* ]]; then
if [[ ${{ matrix.distro }} != *"opensuse"* && ${{ matrix.backend }} != OPENMP ]]; then
cabana_cmake_opts+=( -DWITH_ASAN=ON )
fi
fi
#FIXME: Run valgrind for all builds once fixed/suppressed
[[ ${{ matrix.distro }} == *"ubuntu"* || ${{ matrix.backend }} == OPENMP || ${{ matrix.cmake_build_type }} == Release ]] && cabana_cmake_opts+=( -DVALGRIND_EXECUTABLE=False )
cmake -B build \
-DCMAKE_INSTALL_PREFIX=$HOME/Cabana \
-DMPIEXEC_MAX_NUMPROCS=2 -DMPIEXEC_PREFLAGS="--oversubscribe" \
-DCMAKE_PREFIX_PATH="$HOME/kokkos;$HOME/arborx;$HOME/heffte;$HOME/hypre;$HOME/ALL" \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror $([[ ${{ matrix.cxx }} == icpx ]] && echo -DCMAKE_CXX_FLAGS_DEBUG="-g -O0")" \
-DCabana_ENABLE_TESTING=ON \
-DCabana_ENABLE_EXAMPLES=ON \
-DCabana_ENABLE_PERFORMANCE_TESTING=ON \
-DCabana_PERFORMANCE_EXPECTED_FLOPS=0 \
-DCabana_ENABLE_COVERAGE_BUILD=${{ matrix.coverage }} \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \
${cabana_cmake_opts[@]}
cmake --build build --parallel 2 --verbose
CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --target test
cmake --install build
- name: Test Cabana Export Target
working-directory: example/core_tutorial/01_hello_world
run: |
cmake -B build \
-DCMAKE_PREFIX_PATH="$HOME/kokkos;$HOME/arborx;$HOME/heffte;$HOME/hypre;$HOME/Cabana" \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }}
cmake --build build
- name: Build Doxygen
if: ${{ matrix.doxygen == 'ON' }}
run: cmake --build build --target doxygen
- name: Show ccache stats
run: |
ccache -s
- name: Upload Report to codecov.io
if: ${{ matrix.coverage == 'ON' }}
uses: codecov/codecov-action@v1
HIP:
defaults:
run:
shell: bash
env:
# Needed because FindMPI relies heavily on the compiler wrappers, which aren't used with hipcc
MPI_LOCATION: /usr/lib/x86_64-linux-gnu/openmpi/
strategy:
matrix:
cxx: ['hipcc']
cmake_build_type: ['Debug']
kokkos_ver: ['4.0.01']
runs-on: ubuntu-20.04
container: ghcr.io/ecp-copa/ci-containers/rocm:latest
steps:
- name: Checkout kokkos
uses: actions/checkout@v3
with:
repository: kokkos/kokkos
ref: ${{ matrix.kokkos_ver }}
path: kokkos
- name: Build kokkos
working-directory: kokkos
run: |
cmake -B build \
-DCMAKE_INSTALL_PREFIX=$HOME/kokkos \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \
-DKokkos_ENABLE_HIP=ON \
-DKokkos_ARCH_VEGA908=ON
cmake --build build --parallel 2
cmake --install build
- name: Checkout arborx
uses: actions/checkout@v3
with:
repository: arborx/ArborX
ref: v1.2
path: arborx
- name: Build arborx
working-directory: arborx
run: |
# Build without rocthrust (not available in this container)
cmake -B build \
-DARBORX_ENABLE_ROCTHRUST=OFF \
-DKokkos_ROOT=${HOME}/kokkos \
-DCMAKE_INSTALL_PREFIX=$HOME/arborx \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
cmake --build build --parallel 2
cmake --install build
- name: Checkout ALL
run: |
git clone --depth 1 --branch v0.9.2 https://gitlab.jsc.fz-juelich.de/SLMS/loadbalancing ALL
- name: Build ALL
working-directory: ALL
run: |
cmake -B build \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$HOME/ALL \
-DCMAKE_CXX_FLAGS="-I${MPI_LOCATION}/include" \
-DCMAKE_EXE_LINKER_FLAGS="-L${MPI_LOCATION}/lib -lmpi" \
-DCMAKE_SHARED_LINKER_FLAGS="-L${MPI_LOCATION}/lib -lmpi"
cmake --build build --parallel 2
cmake --install build
- name: Checkout Cabana
uses: actions/checkout@v3
- name: Build Cabana
run: |
cmake -B build \
-DCMAKE_INSTALL_PREFIX=$HOME/Cabana \
-DMPIEXEC_MAX_NUMPROCS=2 -DMPIEXEC_PREFLAGS="--oversubscribe" \
-DCMAKE_PREFIX_PATH="$HOME/kokkos;$HOME/arborx;$HOME/heffte;$HOME/ALL" \
-DCMAKE_CXX_COMPILER=${{ matrix.cxx }} \
-DCMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror" \
-DCabana_ENABLE_TESTING=ON \
-DCabana_ENABLE_EXAMPLES=ON \
-DCabana_ENABLE_PERFORMANCE_TESTING=ON \
-DCabana_PERFORMANCE_EXPECTED_FLOPS=0 \
-DCMAKE_CXX_FLAGS="-I${MPI_LOCATION}/include" \
-DCMAKE_EXE_LINKER_FLAGS="-L${MPI_LOCATION}/lib -lmpi -lopen-pal" \
-DCMAKE_SHARED_LINKER_FLAGS="-L${MPI_LOCATION}/lib -lmpi -lopen-pal" \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \
-DCMAKE_DISABLE_FIND_PACKAGE_HDF5=ON \
-DGPU_TARGETS="gfx908"
cmake --build build --parallel 2 --verbose
cmake --install build
CUDA:
defaults:
run:
shell: bash
strategy:
matrix:
cxx: ['nvcc']
cmake_build_type: ['Release']
kokkos_ver: ['3.7.02']
runs-on: ubuntu-20.04
container: ghcr.io/ecp-copa/ci-containers/cuda:12.2.0
steps:
- name: Checkout kokkos
uses: actions/checkout@v3
with:
repository: kokkos/kokkos
ref: ${{ matrix.kokkos_ver }}
path: kokkos
- name: Build kokkos
working-directory: kokkos
run: |
cmake -B build \
-DCMAKE_INSTALL_PREFIX=$HOME/kokkos \
-DKokkos_ENABLE_CUDA=ON \
-DKokkos_ARCH_VOLTA72=ON \
-DKokkos_ENABLE_CUDA_LAMBDA=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
cmake --build build --parallel 2
cmake --install build
- name: Checkout arborx
uses: actions/checkout@v3
with:
repository: arborx/ArborX
ref: v1.2
path: arborx
- name: Build arborx
working-directory: arborx
run: |
cmake -B build \
-DKokkos_ROOT=${HOME}/kokkos \
-DCMAKE_INSTALL_PREFIX=$HOME/arborx \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
cmake --build build --parallel 2
cmake --install build
- name: Checkout Cabana
uses: actions/checkout@v3
- name: Build Cabana
run: |
cmake -B build \
-DCMAKE_INSTALL_PREFIX=$HOME/Cabana \
-DMPIEXEC_MAX_NUMPROCS=2 -DMPIEXEC_PREFLAGS="--oversubscribe" \
-DCMAKE_PREFIX_PATH="$HOME/kokkos;$HOME/arborx;$HOME/heffte;$HOME/ALL" \
-DCMAKE_CXX_FLAGS="-Wall -Wextra -pedantic -Werror" \
-DCabana_ENABLE_TESTING=ON \
-DCabana_ENABLE_EXAMPLES=ON \
-DCabana_ENABLE_PERFORMANCE_TESTING=ON \
-DCabana_PERFORMANCE_EXPECTED_FLOPS=0 \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
cmake --build build --parallel 2 --verbose
cmake --install build
doxygen:
name: Doxygen check and deploy
runs-on: ubuntu-latest
steps:
- name: Checkout kokkos
uses: actions/checkout@v3
with:
repository: kokkos/kokkos
ref: 4.0.01
path: kokkos
- name: Build kokkos
working-directory: kokkos
run: |
cmake -B build -DCMAKE_INSTALL_PREFIX=$HOME/kokkos
cmake --build build --parallel 2
cmake --install build
- name: Checkout Cabana
uses: actions/checkout@v3
- name: Generate Cabana doxyfile
run: |
cmake -B build -DCMAKE_PREFIX_PATH="$HOME/kokkos" -DDOXYGEN_WARN_AS_ERROR=FAIL_ON_WARNINGS
cmake --build build --target doxygen
- name: Doxygen check
# This uses doxygen 1.9.6 - use new tags when available
uses: mattnotmitt/doxygen-action@edge
with:
doxyfile-path: build/Doxyfile.doxygen
- name: Doxygen deploy
uses: peaceiris/actions-gh-pages@v3
if: github.ref == 'refs/heads/master'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: html