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+
917jobs :
1018 # #################################################################################
1119 # Run pre-commit
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
0 commit comments