Merge pull request #260 from masterleinad/update_kokkos_profiling_int… #472
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: Build Kokkos alongside with Kokkos Tools for various configurations | |
on: [push, pull_request] | |
jobs: | |
build-kokkos: | |
name: Build Kokkos Tools alongside Kokkos | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- image: ubuntu:22.04 | |
preset: OpenMP | |
compiler: default | |
- image: nvidia/cuda:12.1.0-devel-ubuntu22.04 | |
preset: Cuda | |
compiler: default | |
- image: nvidia/cuda:12.2.0-devel-ubuntu22.04 | |
preset: Cuda | |
compiler: {cpp: g++-12, c: gcc-12} | |
- image: rocm/dev-ubuntu-22.04:5.4 | |
preset: ROCm | |
compiler: default | |
- image: rocm/dev-ubuntu-22.04:5.7 | |
preset: ROCm | |
compiler: default | |
container: | |
image: ${{ matrix.image }} | |
env: | |
Kokkos_ROOT: /opt/kokkos | |
steps: | |
- name: Checkout Kokkos Tools | |
uses: actions/checkout@v4 | |
- name: Checkout Kokkos repository at latest develop | |
uses: actions/checkout@v4 | |
with: | |
repository: kokkos/kokkos | |
path: kokkos | |
ref: develop | |
- name: Install compilers | |
run : | | |
apt update | |
if [ ${{ matrix.compiler }} != 'default' ];then | |
apt --yes --no-install-recommends install ${{ matrix.compiler.c }} ${{ matrix.compiler.cpp }} | |
export CC=${{ matrix.compiler.c }} | |
export CXX=${{ matrix.compiler.cpp }} | |
else | |
apt --yes --no-install-recommends install gcc g++ | |
export CC=gcc | |
export CXX=g++ | |
fi | |
echo "CC=$CC" >> $GITHUB_ENV | |
echo "CXX=$CXX" >> $GITHUB_ENV | |
case ${{ matrix.preset }} in | |
*OpenMP* ) | |
echo "Preset is OpenMP, nothing to do." | |
;; | |
*Cuda* ) | |
echo "Preset is Cuda. Setting 'NVCC_WRAPPER_DEFAULT_COMPILER' to '$CXX'." | |
echo "NVCC_WRAPPER_DEFAULT_COMPILER=$CXX" >> $GITHUB_ENV | |
;; | |
*ROCm* ) | |
echo "Preset is ROCm, nothing to do." | |
;; | |
* ) | |
echo "Unsupported preset '${{ matrix.preset }}'." | |
exit -1 | |
esac | |
- name: Install git, CMake, OpenMPI, PAPI and dtrace | |
run: | | |
apt --yes --no-install-recommends install \ | |
git ca-certificates \ | |
cmake make \ | |
libopenmpi-dev \ | |
systemtap-sdt-dev \ | |
libpapi-dev | |
- name: Compile and install Kokkos | |
working-directory: kokkos | |
run: | | |
cp ${GITHUB_WORKSPACE}/kokkos.presets.json CMakePresets.json | |
cmake -S . --preset=${{ matrix.preset }} | |
cmake --build --preset=${{ matrix.preset }} | |
cmake --install build-with-${{ matrix.preset }} --prefix=${Kokkos_ROOT} | |
- name: Build Kokkos Tools, enabling examples | |
run: | | |
cmake -S . --preset=${{ matrix.preset }} | |
cmake --build --preset=${{ matrix.preset }} | |
cmake --install build-with-${{ matrix.preset }} --prefix=/opt/kokkos-tools | |
# For now, GitHub runners are used. These runner don't have GPUs. Therefore, testing can only be done for OpenMP. | |
- name: Run tests | |
if: ${{ matrix.preset == 'OpenMP' }} | |
run: | | |
ctest --preset=${{ matrix.preset }} |