#857: conditionally rely on PARALLEL WORKSHARE #1804
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: Testing on Linux | |
on: | |
push: | |
branches: | |
- 'develop' | |
pull_request: | |
jobs: | |
################################################################################## | |
# Run pre-commit | |
################################################################################## | |
pre-commit: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/cp2k/dbcsr-build-env-ubuntu-22.04:develop | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run pre-commit | |
run: | | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
pre-commit run --all-files || ( git status --short ; git diff ; exit 1 ) | |
################################################################################## | |
# Build and test on linux, no accelerator | |
################################################################################## | |
build-and-test: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/cp2k/dbcsr-build-env-ubuntu-22.04:develop | |
strategy: | |
matrix: | |
use_mpi: [MPI=ON, MPI=OFF] | |
use_openmp: [OPENMP=ON, OPENMP=OFF] | |
use_smm: [SMM=blas, SMM=libxsmm] | |
mpi_suffix: [openmpi, mpich] | |
exclude: | |
- use_mpi: MPI=OFF | |
mpi_suffix: mpich | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Configure | |
run: | | |
mkdir -p build | |
cd build | |
cmake -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Coverage \ | |
-DUSE_${{ matrix.use_mpi }} \ | |
-DUSE_${{ matrix.use_openmp }} \ | |
-DUSE_${{ matrix.use_smm }} \ | |
-DMPI_EXECUTABLE_SUFFIX=.${{ matrix.mpi_suffix }} \ | |
-DMPIEXEC_PREFLAGS="$([ "${{ matrix.mpi_suffix }}" = "openmpi" ] && echo "-mca btl ^openib --allow-run-as-root --oversubscribe")" \ | |
-DLCOV_ARGS="--test-name;${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-cpu" \ | |
-DTEST_MPI_RANKS=auto \ | |
.. | |
- name: Build | |
run: cmake --build build -- --verbose | |
- name: Test | |
run: | | |
cd build | |
ctest --output-on-failure | |
- name: Generate coverage info | |
run: | | |
cmake --build build -- cov-info | |
mv build/coverage.info build/coverage-Linux-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-cpu.info | |
- name: Upload coverage data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-${{ matrix.mpi_suffix }} | |
path: build/coverage-*.info | |
- name: Upload coverage data (generated files) | |
uses: actions/upload-artifact@v4 | |
if: matrix.use_mpi == 'MPI=ON' && matrix.use_openmp == 'OPENMP=ON' && matrix.use_smm == 'SMM=blas' && matrix.mpi_suffix == 'openmpi' | |
with: | |
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-${{ matrix.mpi_suffix }}-generated-files | |
path: | | |
build/src/dbcsr.h | |
build/src/tensors/dbcsr_tensor.h | |
################################################################################## | |
# Build on CUDA | |
################################################################################## | |
build-on-cuda: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/cp2k/dbcsr-build-env-ubuntu-22.04-cuda:develop | |
strategy: | |
matrix: | |
use_openmp: [OPENMP=ON] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Configure | |
run: | | |
mkdir -p build | |
cd build | |
cmake -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DUSE_${{ matrix.use_openmp }} \ | |
-DUSE_ACCEL=cuda \ | |
-DWITH_GPU=H100 \ | |
-DWITH_EXAMPLES=ON \ | |
-DWITH_CUDA_PROFILING=ON \ | |
.. | |
- name: Build | |
run: cmake --build build -- --verbose | |
################################################################################## | |
# Build on OpenCL | |
################################################################################## | |
build-on-opencl: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/cp2k/dbcsr-build-env-ubuntu-22.04-cuda:develop | |
strategy: | |
matrix: | |
use_openmp: [OPENMP=ON] | |
use_smm: [SMM=libxsmm] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Configure | |
run: | | |
mkdir -p build | |
cd build | |
cmake -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DUSE_${{ matrix.use_openmp }} \ | |
-DUSE_${{ matrix.use_smm }} \ | |
-DUSE_ACCEL=opencl \ | |
-DWITH_EXAMPLES=ON \ | |
.. | |
- name: Build | |
run: cmake --build build -- --verbose | |
################################################################################## | |
# Build on ROCm | |
################################################################################## | |
build-on-rocm: | |
runs-on: ubuntu-latest | |
container: | |
image: ghcr.io/cp2k/dbcsr-build-env-rocm:develop | |
strategy: | |
matrix: | |
use_openmp: [OPENMP=ON] | |
use_g2g: [G2G=ON, G2G=OFF] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Configure | |
run: | | |
mkdir -p build | |
cd build | |
cmake -G Ninja \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DUSE_${{ matrix.use_openmp }} \ | |
-DUSE_ACCEL=hip \ | |
-DWITH_GPU=Mi250 \ | |
-DWITH_${{ matrix.use_g2g }} \ | |
-DWITH_EXAMPLES=ON \ | |
-DCMAKE_PREFIX_PATH=/opt/rocm \ | |
.. | |
- name: Build | |
run: cmake --build build -- --verbose | |
coverage: | |
name: Combine & check coverage. | |
runs-on: ubuntu-latest | |
needs: build-and-test | |
container: | |
image: ghcr.io/cp2k/dbcsr-build-env-ubuntu-22.04:develop | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download coverage data | |
uses: actions/download-artifact@v4.1.7 | |
with: | |
pattern: coverage-data-* | |
merge-multiple: true | |
- name: Combine coverage | |
run: | | |
mkdir -p build/src | |
mv dbcsr.h tensors build/src/ | |
echo *.info | xargs printf -- '-a %s\n' | xargs lcov -o merged.info | |
genhtml merged.info -o htmlcov | |
lcov --summary merged.info | |
- name: Upload merged HTML report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: html-report | |
path: htmlcov | |
# vim: set ts=2 sw=2 tw=0 : |