Add CI for GPU tests on Ruche #46
Workflow file for this run
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 and test | |
on: | |
pull_request: | |
branches: | |
- main | |
env: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
BUILD_TYPE: RelWithDebInfo | |
# Force the use of BuildKit for Docker | |
DOCKER_BUILDKIT: 1 | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: DoozyX/[email protected] | |
with: | |
source: 'common/ fft/ examples/' | |
exclude: '' | |
extensions: 'hpp,cpp' | |
clangFormatVersion: 12 | |
build_base: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
backend: | |
# - openmp | |
- cuda | |
# - hip | |
steps: | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/[email protected] | |
with: | |
tool-cache: true | |
large-packages: false | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
# TODO check if current build has a different Dockerfile | |
- name: Login in GitHub Containers Repository | |
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: Build image | |
run: | | |
docker build \ | |
-t ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend }} \ | |
--cache-from ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend }} \ | |
--build-arg BUIDKIT_INLINE_CACHE=1 \ | |
--progress=plain \ | |
docker/base/${{ matrix.backend }} | |
- name: Push image | |
run: docker push ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend }} | |
- name: Get Singularity | |
uses: eWaterCycle/setup-singularity@v7 | |
- name: Convert image to singularity | |
run: singularity build base_${{ matrix.backend.name }}.sif docker://ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} | |
- name: Login in GitHub Containers Repository with singularity | |
run: echo ${{ secrets.GITHUB_TOKEN }} | singularity remote login -u ${{ github.actor }} --password-stdin oras://ghcr.io | |
- name: Push image to singularity | |
run: singularity push base_${{ matrix.backend.name }}.sif oras://ghcr.io/cexa-project/kokkos-fft | |
build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
backend: | |
# - name: openmp | |
# cmake_flags: -DKokkos_ENABLE_OPENMP=ON | |
- name: cuda | |
cmake_flags: -DKokkos_ENABLE_CUDA=ON -DKokkos_ARCH_AMPERE80=ON | |
# - name: hip | |
# cmake_flags: -DKokkos_ENABLE_HIP=ON -DKokkos_ARCH_VEGA90A=ON | |
target: | |
- name: native | |
cmake_flags: "" | |
- name: host_device | |
cmake_flags: -DKokkosFFT_ENABLE_HOST_AND_DEVICE=ON | |
exclude: | |
- backend: | |
name: openmp | |
target: | |
name: host_device | |
needs: | |
- build_base | |
steps: | |
- name: Free Disk Space (Ubuntu) | |
uses: jlumbroso/[email protected] | |
with: | |
tool-cache: true | |
large-packages: false | |
- name: Checkout built branch | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Login in GitHub Containers Repository | |
run: echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: Pull image | |
run: docker pull ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} | |
- name: Configure | |
run: | | |
docker run -v ${{github.workspace}}:/work ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} \ | |
cmake -B build \ | |
-DCMAKE_INSTALL_PREFIX=/work/install \ | |
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ | |
-DCMAKE_CXX_STANDARD=17 \ | |
-DBUILD_TESTING=ON \ | |
-DKokkosFFT_INTERNAL_Kokkos=ON \ | |
${{ matrix.backend.cmake_flags }} \ | |
${{ matrix.target.cmake_flags }} | |
- name: Build | |
run: | | |
docker run -v ${{github.workspace}}:/work ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} \ | |
cmake --build build -j 2 | |
- name: Save artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: tests_${{ matrix.backend.name }} | |
path: build | |
- name: Install | |
run: | | |
docker run -v ${{github.workspace}}:/work ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} \ | |
cmake --install build | |
- name: Configure test code | |
run: | | |
docker run -v ${{github.workspace}}:/work ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} \ | |
cmake -B /tmp/test \ | |
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \ | |
-DCMAKE_CXX_STANDARD=17 \ | |
-DKokkosFFT_INTERNAL_Kokkos=ON \ | |
${{ matrix.backend.cmake_flags }} \ | |
${{ matrix.target.cmake_flags }} | |
- name: Build test code | |
run: | | |
docker run -v ${{github.workspace}}:/work ghcr.io/cexa-project/kokkos-fft/base_${{ matrix.backend.name }} \ | |
cmake --build /tmp/test -j 2 |