Skip to content

Variorium Connector: kernel granularity and JSON (#265) #563

Variorium Connector: kernel granularity and JSON (#265)

Variorium Connector: kernel granularity and JSON (#265) #563

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:6.3
preset: ROCm
compiler: default
container:
image: ${{ matrix.image }}
env:
Kokkos_ROOT: /opt/kokkos
VARIORUM_ROOT: /opt/variorum
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: Checkout Varioum
uses: actions/checkout@v4
with:
repository: LLNL/variorum
path: variorum
ref: 249a39bf41972afe2213d3dc904e47647364f466
- name: Install compilers
run : |
apt update
if [ ${{ matrix.compiler }} != 'default' ];then
apt --yes --no-install-recommends install ${{ matrix.compiler.c }} ${{ matrix.compiler.cpp }} gfortran
export CC=${{ matrix.compiler.c }}
export CXX=${{ matrix.compiler.cpp }}
else
apt --yes --no-install-recommends install gcc g++ gfortran
export CC=gcc
export CXX=g++
fi
echo "CC=$CC" >> $GITHUB_ENV
echo "CXX=$CXX" >> $GITHUB_ENV
echo "FC=gfortran" >> $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, Jansson, OpenMPI, PAPI and dtrace
run: |
apt --yes --no-install-recommends install \
git ca-certificates \
cmake make \
libopenmpi-dev \
systemtap-sdt-dev \
libjansson-dev \
libpapi-dev
- name: Compile and install Variorum
working-directory: variorum
run: |
cp ${GITHUB_WORKSPACE}/kokkos.presets.json CMakePresets.json
cmake -S src -B build -DCMAKE_INSTALL_PREFIX=${VARIORUM_ROOT}
cd build
make install
- 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.
# Skip variorum test since the architecture detected by variorum is not supported
- name: Run tests
if: ${{ matrix.preset == 'OpenMP' }}
run: |
ctest -E "test_kokkos_tools_variorum" --preset=${{ matrix.preset }}