Unit testing and benchmarking libCEED integration with Catch2 #526
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: Build and Test (macOS) | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-and-test-macos: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: # Pairwise testing | |
- compiler: clang | |
mpi: openmpi | |
math-libs: openblas | |
build-shared: shared | |
with-64bit-int: int32 | |
with-openmp: serial | |
with-solver: superlu | |
with-eigensolver: slepc | |
- compiler: gcc | |
mpi: openmpi | |
math-libs: openblas | |
build-shared: static | |
with-64bit-int: int64 | |
with-openmp: openmp | |
with-solver: superlu | |
with-eigensolver: arpack | |
- compiler: gcc | |
mpi: mpich | |
math-libs: openblas | |
build-shared: static | |
with-64bit-int: int32 | |
with-openmp: openmp | |
with-solver: strumpack | |
with-eigensolver: slepc | |
runs-on: macos-latest-xl | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- uses: mpi4py/setup-mpi@v1 | |
with: | |
mpi: ${{ matrix.mpi }} | |
- name: Install pkg-config | |
run: | | |
brew install pkg-config | |
- name: Install math libraries (OpenBLAS) | |
if: matrix.math-libs == 'openblas' | |
run: | | |
brew install openblas | |
- name: Build Palace | |
env: | |
CMAKE_BUILD_TYPE: Release | |
NUM_PROC_BUILD_MAX: '32' | |
run: | | |
# Configure environment | |
if [[ "${{ matrix.compiler }}" == 'clang' ]]; then | |
export CC=$(brew --prefix llvm@15)/bin/clang | |
export CXX=$(brew --prefix llvm@15)/bin/clang++ | |
export FC=gfortran-11 | |
elif [[ "${{ matrix.compiler }}" == 'gcc' ]]; then | |
export CC=gcc-11 | |
export CXX=g++-11 | |
export FC=gfortran-11 | |
fi | |
if [[ "${{ matrix.math-libs }}" == 'openblas' ]]; then | |
export OPENBLAS_DIR=/usr/local/opt/openblas | |
fi | |
export NUM_PROC_BUILD=$(nproc 2> /dev/null || sysctl -n hw.ncpu) | |
if [[ "$NUM_PROC_BUILD" -gt "$NUM_PROC_BUILD_MAX" ]]; then | |
NUM_PROC_BUILD=$NUM_PROC_BUILD_MAX | |
fi | |
[[ "${{ matrix.build-shared }}" == 'shared' ]] && BUILD_SHARED='ON' || BUILD_SHARED='OFF' | |
[[ "${{ matrix.with-64bit-int }}" == 'int64' ]] && WITH_INT64='ON' || WITH_INT64='OFF' | |
[[ "${{ matrix.with-openmp }}" == 'openmp' ]] && WITH_OPENMP='ON' || WITH_OPENMP='OFF' | |
[[ "${{ matrix.with-solver }}" == 'superlu' ]] && WITH_SUPERLU='ON' || WITH_SUPERLU='OFF' | |
[[ "${{ matrix.with-solver }}" == 'strumpack' ]] && WITH_STRUMPACK='ON' || WITH_STRUMPACK='OFF' | |
[[ "${{ matrix.with-solver }}" == 'mumps' ]] && WITH_MUMPS='ON' || WITH_MUMPS='OFF' | |
[[ "${{ matrix.with-eigensolver }}" == 'slepc' ]] && WITH_SLEPC='ON' || WITH_SLEPC='OFF' | |
[[ "${{ matrix.with-eigensolver }}" == 'arpack' ]] && WITH_ARPACK='ON' || WITH_ARPACK='OFF' | |
# Build and install | |
mkdir palace-build && cd palace-build | |
cmake .. \ | |
-DCMAKE_INSTALL_PREFIX=$(pwd)/../palace-install \ | |
-DBUILD_SHARED_LIBS=$BUILD_SHARED \ | |
-DPALACE_WITH_64BIT_INT=$WITH_INT64 \ | |
-DPALACE_WITH_OPENMP=$WITH_OPENMP \ | |
-DPALACE_WITH_SUPERLU=$WITH_SUPERLU \ | |
-DPALACE_WITH_STRUMPACK=$WITH_STRUMPACK \ | |
-DPALACE_WITH_MUMPS=$WITH_MUMPS \ | |
-DPALACE_WITH_SLEPC=$WITH_SLEPC \ | |
-DPALACE_WITH_ARPACK=$WITH_ARPACK | |
make -j$NUM_PROC_BUILD | |
- name: Run tests | |
env: | |
NUM_PROC_TEST_MAX: '8' | |
run: | | |
# Configure environment | |
export NUM_PROC_TEST=$(nproc 2> /dev/null || sysctl -n hw.ncpu) | |
if [[ "$NUM_PROC_TEST" -gt "$NUM_PROC_TEST_MAX" ]]; then | |
NUM_PROC_TEST=$NUM_PROC_TEST_MAX | |
fi | |
if [[ "${{ matrix.with-openmp }}" == 'true' ]]; then | |
NUM_PROC_TEST=$(( NUM_PROC_TEST / 2 )) | |
export OMP_NUM_THREADS=2 | |
else | |
export OMP_NUM_THREADS=1 | |
fi | |
export PATH=$(pwd)/palace-install/bin:$PATH | |
# Run tests | |
julia --project=test/examples -e 'using Pkg; Pkg.instantiate()' | |
julia --project=test/examples --color=yes test/examples/runtests.jl |