Skip to content

CMake: Do not search parent directories for Git metadata #2320

CMake: Do not search parent directories for Git metadata

CMake: Do not search parent directories for Git metadata #2320

Workflow file for this run

---
name: Testing on Linux
on:
push:
branches:
- 'develop'
pull_request:
env:
LIBXS_GIT_REPOSITORY: https://github.com/hfp/libxs.git
LIBXS_GIT_TAG: 166f48e0172475f4db59950d1447525994bbf293
LIBXSTREAM_GIT_REPOSITORY: https://github.com/hfp/libxstream.git
LIBXSTREAM_GIT_TAG: f307d372dfe1eaba672dab5b0d9692d8a0f5c57f
LIBXSMM_GIT_REPOSITORY: https://github.com/libxsmm/libxsmm.git
LIBXSMM_GIT_TAG: cdeedf76ddd30e0dfb2527f6e1537d2c35a07596
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]
smm_backend: [BLAS, LIBXS, 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: Install libxs packages
if: matrix.smm_backend != 'BLAS'
run: |
set -eu
prefix="${GITHUB_WORKSPACE}/deps/install"
mkdir -p "${prefix}" deps
fetch_and_install() {
name="$1"
repo="$2"
tag="$3"
shift 3
git clone "${repo}" "deps/${name}-src"
git -C "deps/${name}-src" checkout "${tag}"
cmake -G Ninja \
-S "deps/${name}-src" \
-B "deps/${name}-build" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${prefix}" \
-DCMAKE_PREFIX_PATH="${prefix}" \
"$@"
cmake --build "deps/${name}-build" --target install
}
fetch_and_install libxs \
"${LIBXS_GIT_REPOSITORY}" \
"${LIBXS_GIT_TAG}" \
-DLIBXS_FORTRAN=ON
if [ "${{ matrix.smm_backend }}" = "LIBXSMM" ]; then
fetch_and_install libxsmm \
"${LIBXSMM_GIT_REPOSITORY}" \
"${LIBXSMM_GIT_TAG}" \
-DXSMM_STATIC=ON
fi
echo "CMAKE_PREFIX_PATH=${prefix}${CMAKE_PREFIX_PATH:+:${CMAKE_PREFIX_PATH}}" >> "${GITHUB_ENV}"
echo "PKG_CONFIG_PATH=${prefix}/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" >> "${GITHUB_ENV}"
- name: Configure
run: |
mkdir -p build
cd build
case "${{ matrix.smm_backend }}" in
BLAS)
smm_flags="-DUSE_LIBXS=OFF -DUSE_LIBXSMM=OFF"
;;
LIBXS)
smm_flags="-DUSE_LIBXS=ON -DUSE_LIBXSMM=OFF"
;;
LIBXSMM)
smm_flags="-DUSE_LIBXS=ON -DUSE_LIBXSMM=ON"
;;
esac
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Coverage \
-DBUILD_TESTING=ON \
-DUSE_${{ matrix.use_mpi }} \
-DUSE_${{ matrix.use_openmp }} \
${smm_flags} \
-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.smm_backend }}-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.smm_backend }}-cpu.info
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.smm_backend }}-${{ 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.smm_backend == 'BLAS' && matrix.mpi_suffix == 'openmpi'
with:
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.smm_backend }}-${{ 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_mpi: [MPI=ON, MPI=OFF]
use_openmp: [OPENMP=ON]
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=Debug \
-DBUILD_TESTING=ON \
-DUSE_${{ matrix.use_mpi }} \
-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_libxsmm: [LIBXSMM=ON]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Install libxs packages
run: |
set -eu
prefix="${GITHUB_WORKSPACE}/deps/install"
mkdir -p "${prefix}" deps
fetch_and_install() {
name="$1"
repo="$2"
tag="$3"
shift 3
git clone "${repo}" "deps/${name}-src"
git -C "deps/${name}-src" checkout "${tag}"
cmake -G Ninja \
-S "deps/${name}-src" \
-B "deps/${name}-build" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="${prefix}" \
-DCMAKE_PREFIX_PATH="${prefix}" \
"$@"
cmake --build "deps/${name}-build" --target install
}
fetch_and_install libxs \
"${LIBXS_GIT_REPOSITORY}" \
"${LIBXS_GIT_TAG}" \
-DLIBXS_FORTRAN=ON
fetch_and_install libxsmm \
"${LIBXSMM_GIT_REPOSITORY}" \
"${LIBXSMM_GIT_TAG}" \
-DXSMM_STATIC=ON
fetch_and_install libxstream \
"${LIBXSTREAM_GIT_REPOSITORY}" \
"${LIBXSTREAM_GIT_TAG}" \
-DLIBXSTREAM_SHARED=OFF
echo "CMAKE_PREFIX_PATH=${prefix}${CMAKE_PREFIX_PATH:+:${CMAKE_PREFIX_PATH}}" >> "${GITHUB_ENV}"
echo "PKG_CONFIG_PATH=${prefix}/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" >> "${GITHUB_ENV}"
- name: Configure
run: |
mkdir -p build
cd build
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_TESTING=ON \
-DUSE_${{ matrix.use_openmp }} \
-DUSE_LIBXS=ON \
-DUSE_${{ matrix.use_libxsmm }} \
-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_mpi: [MPI=ON, MPI=OFF]
use_openmp: [OPENMP=ON]
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=Release \
-DBUILD_TESTING=ON \
-DUSE_${{ matrix.use_mpi }} \
-DUSE_${{ matrix.use_openmp }} \
-DUSE_ACCEL=hip \
-DWITH_GPU=Mi250 \
-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.raw.info
lcov --remove merged.raw.info \
'*/libxs_procs.fi' \
'*/libxs_jit.F' \
'*/deps/install/*' \
'*/_deps/*' \
-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 :