Skip to content

Commit 1ba44db

Browse files
Growl1234pre-commit-ci[bot]hfpMathieu Taillefumier
authored
CMake cleanups and RPM-build fixing (#1018)
* CMake: fix LIBXS and LIBXSTREAM discovery and revise default option * Default MPI_F08 OFF * Adjust GitHub Actions workflow * Adjust Fedora RPM-build * Switch to FetchContent if no OpenCL helper found in libxstream * Move dependency finding into Find*.cmake * Test CMake-built libxs* library * Update dependency * Remove FindLIBXS*.cmake and adjust workflow * Update dependency in CI * Incorporated hfp's changes * CMake build system cleanup * Update dependencies in CI * Avoid sending empty states to acc * Update libxstream (executable tool_opencl.sh) * Define __LIBXS for accelerator tests * Coverage: Skip libxs* files combined into DBCSR build * Update dependencies * Decide which target for libxsmm to use after find_package * Deal with libxsmm config package target * Fix libxsmm taget * Follow-up clean-ups * Update dependencies * Accommodate LIBXSMM's improved CMake * Remove FindLIBXSMM.cmake * Let LIBXSMM fallback to PkgConfig * Revise LIBXS-JIT and warning message * Update LIBXS option handling for OpenCL support --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Hans Pabst <hans.pabst@intel.com> Co-authored-by: Mathieu Taillefumier <mathieu.taillefumier@free.fr>
1 parent 0df5946 commit 1ba44db

15 files changed

Lines changed: 471 additions & 580 deletions

.github/workflows/testing-linux.yml

Lines changed: 116 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ on:
66
- 'develop'
77
pull_request:
88

9+
env:
10+
LIBXS_GIT_REPOSITORY: https://github.com/hfp/libxs.git
11+
LIBXS_GIT_TAG: 166f48e0172475f4db59950d1447525994bbf293
12+
LIBXSTREAM_GIT_REPOSITORY: https://github.com/hfp/libxstream.git
13+
LIBXSTREAM_GIT_TAG: f307d372dfe1eaba672dab5b0d9692d8a0f5c57f
14+
LIBXSMM_GIT_REPOSITORY: https://github.com/libxsmm/libxsmm.git
15+
LIBXSMM_GIT_TAG: cdeedf76ddd30e0dfb2527f6e1537d2c35a07596
16+
917
jobs:
1018
##################################################################################
1119
# Run pre-commit
@@ -33,7 +41,7 @@ jobs:
3341
matrix:
3442
use_mpi: [MPI=ON, MPI=OFF]
3543
use_openmp: [OPENMP=ON, OPENMP=OFF]
36-
use_smm: [LIBXSMM=ON, LIBXSMM=OFF]
44+
smm_backend: [BLAS, LIBXS, LIBXSMM]
3745
mpi_suffix: [openmpi, mpich]
3846
exclude:
3947
- use_mpi: MPI=OFF
@@ -45,19 +53,69 @@ jobs:
4553
fetch-depth: 0
4654
submodules: true
4755

56+
- name: Install libxs packages
57+
if: matrix.smm_backend != 'BLAS'
58+
run: |
59+
set -eu
60+
prefix="${GITHUB_WORKSPACE}/deps/install"
61+
mkdir -p "${prefix}" deps
62+
63+
fetch_and_install() {
64+
name="$1"
65+
repo="$2"
66+
tag="$3"
67+
shift 3
68+
git clone "${repo}" "deps/${name}-src"
69+
git -C "deps/${name}-src" checkout "${tag}"
70+
cmake -G Ninja \
71+
-S "deps/${name}-src" \
72+
-B "deps/${name}-build" \
73+
-DCMAKE_BUILD_TYPE=Release \
74+
-DCMAKE_INSTALL_PREFIX="${prefix}" \
75+
-DCMAKE_PREFIX_PATH="${prefix}" \
76+
"$@"
77+
cmake --build "deps/${name}-build" --target install
78+
}
79+
80+
fetch_and_install libxs \
81+
"${LIBXS_GIT_REPOSITORY}" \
82+
"${LIBXS_GIT_TAG}" \
83+
-DLIBXS_FORTRAN=ON
84+
85+
if [ "${{ matrix.smm_backend }}" = "LIBXSMM" ]; then
86+
fetch_and_install libxsmm \
87+
"${LIBXSMM_GIT_REPOSITORY}" \
88+
"${LIBXSMM_GIT_TAG}" \
89+
-DXSMM_STATIC=ON
90+
fi
91+
92+
echo "CMAKE_PREFIX_PATH=${prefix}${CMAKE_PREFIX_PATH:+:${CMAKE_PREFIX_PATH}}" >> "${GITHUB_ENV}"
93+
echo "PKG_CONFIG_PATH=${prefix}/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" >> "${GITHUB_ENV}"
94+
4895
- name: Configure
4996
run: |
5097
mkdir -p build
5198
cd build
99+
case "${{ matrix.smm_backend }}" in
100+
BLAS)
101+
smm_flags="-DUSE_LIBXS=OFF -DUSE_LIBXSMM=OFF"
102+
;;
103+
LIBXS)
104+
smm_flags="-DUSE_LIBXS=ON -DUSE_LIBXSMM=OFF"
105+
;;
106+
LIBXSMM)
107+
smm_flags="-DUSE_LIBXS=ON -DUSE_LIBXSMM=ON"
108+
;;
109+
esac
52110
cmake -G Ninja \
53111
-DCMAKE_BUILD_TYPE=Coverage \
54112
-DBUILD_TESTING=ON \
55113
-DUSE_${{ matrix.use_mpi }} \
56114
-DUSE_${{ matrix.use_openmp }} \
57-
-DUSE_${{ matrix.use_smm }} \
115+
${smm_flags} \
58116
-DMPI_EXECUTABLE_SUFFIX=.${{ matrix.mpi_suffix }} \
59117
-DMPIEXEC_PREFLAGS="$([ "${{ matrix.mpi_suffix }}" = "openmpi" ] && echo "-mca btl ^openib --allow-run-as-root --oversubscribe")" \
60-
-DLCOV_ARGS="--test-name;${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-cpu" \
118+
-DLCOV_ARGS="--test-name;${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.smm_backend }}-cpu" \
61119
-DTEST_MPI_RANKS=auto \
62120
..
63121
@@ -72,19 +130,19 @@ jobs:
72130
- name: Generate coverage info
73131
run: |
74132
cmake --build build -- cov-info
75-
mv build/coverage.info build/coverage-Linux-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-cpu.info
133+
mv build/coverage.info build/coverage-Linux-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.smm_backend }}-cpu.info
76134
77135
- name: Upload coverage data
78136
uses: actions/upload-artifact@v4
79137
with:
80-
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-${{ matrix.mpi_suffix }}
138+
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.smm_backend }}-${{ matrix.mpi_suffix }}
81139
path: build/coverage-*.info
82140

83141
- name: Upload coverage data (generated files)
84142
uses: actions/upload-artifact@v4
85-
if: matrix.use_mpi == 'MPI=ON' && matrix.use_openmp == 'OPENMP=ON' && matrix.use_smm == 'LIBXSMM=OFF' && matrix.mpi_suffix == 'openmpi'
143+
if: matrix.use_mpi == 'MPI=ON' && matrix.use_openmp == 'OPENMP=ON' && matrix.smm_backend == 'BLAS' && matrix.mpi_suffix == 'openmpi'
86144
with:
87-
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.use_smm }}-${{ matrix.mpi_suffix }}-generated-files
145+
name: coverage-data-${{ matrix.use_mpi }}-${{ matrix.use_openmp }}-${{ matrix.smm_backend }}-${{ matrix.mpi_suffix }}-generated-files
88146
path: |
89147
build/src/dbcsr.h
90148
build/src/tensors/dbcsr_tensor.h
@@ -137,14 +195,53 @@ jobs:
137195
strategy:
138196
matrix:
139197
use_openmp: [OPENMP=ON]
140-
use_smm: [LIBXSMM=ON]
198+
use_libxsmm: [LIBXSMM=ON]
141199

142200
steps:
143201
- uses: actions/checkout@v4
144202
with:
145203
fetch-depth: 0
146204
submodules: true
147205

206+
- name: Install libxs packages
207+
run: |
208+
set -eu
209+
prefix="${GITHUB_WORKSPACE}/deps/install"
210+
mkdir -p "${prefix}" deps
211+
212+
fetch_and_install() {
213+
name="$1"
214+
repo="$2"
215+
tag="$3"
216+
shift 3
217+
git clone "${repo}" "deps/${name}-src"
218+
git -C "deps/${name}-src" checkout "${tag}"
219+
cmake -G Ninja \
220+
-S "deps/${name}-src" \
221+
-B "deps/${name}-build" \
222+
-DCMAKE_BUILD_TYPE=Release \
223+
-DCMAKE_INSTALL_PREFIX="${prefix}" \
224+
-DCMAKE_PREFIX_PATH="${prefix}" \
225+
"$@"
226+
cmake --build "deps/${name}-build" --target install
227+
}
228+
229+
fetch_and_install libxs \
230+
"${LIBXS_GIT_REPOSITORY}" \
231+
"${LIBXS_GIT_TAG}" \
232+
-DLIBXS_FORTRAN=ON
233+
fetch_and_install libxsmm \
234+
"${LIBXSMM_GIT_REPOSITORY}" \
235+
"${LIBXSMM_GIT_TAG}" \
236+
-DXSMM_STATIC=ON
237+
fetch_and_install libxstream \
238+
"${LIBXSTREAM_GIT_REPOSITORY}" \
239+
"${LIBXSTREAM_GIT_TAG}" \
240+
-DLIBXSTREAM_SHARED=OFF
241+
242+
echo "CMAKE_PREFIX_PATH=${prefix}${CMAKE_PREFIX_PATH:+:${CMAKE_PREFIX_PATH}}" >> "${GITHUB_ENV}"
243+
echo "PKG_CONFIG_PATH=${prefix}/lib/pkgconfig${PKG_CONFIG_PATH:+:${PKG_CONFIG_PATH}}" >> "${GITHUB_ENV}"
244+
148245
- name: Configure
149246
run: |
150247
mkdir -p build
@@ -153,7 +250,8 @@ jobs:
153250
-DCMAKE_BUILD_TYPE=Debug \
154251
-DBUILD_TESTING=ON \
155252
-DUSE_${{ matrix.use_openmp }} \
156-
-DUSE_${{ matrix.use_smm }} \
253+
-DUSE_LIBXS=ON \
254+
-DUSE_${{ matrix.use_libxsmm }} \
157255
-DUSE_ACCEL=opencl \
158256
-DWITH_EXAMPLES=ON \
159257
..
@@ -217,7 +315,15 @@ jobs:
217315
run: |
218316
mkdir -p build/src
219317
mv dbcsr.h tensors build/src/
220-
echo *.info | xargs printf -- '-a %s\n' | xargs lcov -o merged.info
318+
echo *.info | xargs printf -- '-a %s\n' | xargs lcov -o merged.raw.info
319+
320+
lcov --remove merged.raw.info \
321+
'*/libxs_procs.fi' \
322+
'*/libxs_jit.F' \
323+
'*/deps/install/*' \
324+
'*/_deps/*' \
325+
-o merged.info
326+
221327
genhtml merged.info -o htmlcov
222328
lcov --summary merged.info
223329

.github/workflows/testing-macos.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ jobs:
1414
matrix:
1515
use_mpi: [MPI=ON]
1616
use_openmp: [OPENMP=ON]
17-
use_smm: [SMM=blas]
1817
blas_impl: [accelerate,openblas]
1918
mpi_suffix: [mpich] # Brew openmpi doesn't provide mpi.mod
2019

@@ -44,7 +43,6 @@ jobs:
4443
-DBUILD_TESTING=ON \
4544
-DUSE_${{ matrix.use_mpi }} \
4645
-DUSE_${{ matrix.use_openmp }} \
47-
-DUSE_${{ matrix.use_smm }} \
4846
$([ "${{ matrix.blas_impl }}" = "openblas" ] && echo '-DCMAKE_PREFIX_PATH=/usr/local/opt/openblas') \
4947
-DMPIEXEC_PREFLAGS="$([ "${{ matrix.mpi_suffix }}" = "openmpi" ] && echo "-mca btl ^openib --allow-run-as-root")" \
5048
-DTEST_MPI_RANKS=auto \

0 commit comments

Comments
 (0)