CMake: Do not search parent directories for Git metadata #2320
This file contains hidden or 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: | |
| 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 : |