-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a783f3d
commit 63eb62b
Showing
1 changed file
with
220 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,220 @@ | ||
# Copyright (C) The DDC development team, see COPYRIGHT.md file | ||
# | ||
# SPDX-License-Identifier: MIT | ||
|
||
name: Nightly tests | ||
|
||
on: | ||
schedule: | ||
- cron: "0 1 * * 1-5" # every weekday at 1am | ||
|
||
jobs: | ||
docker-build: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
image: ['oldest', 'latest'] | ||
backend: ['cpu', 'cuda', 'hip'] | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Free Disk Space (Ubuntu) | ||
uses: jlumbroso/[email protected] | ||
with: { tool-cache: true, large-packages: false } | ||
- name: Checkout built branch | ||
uses: actions/checkout@v4 | ||
- name: Login to GitHub Container Registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Build | ||
run: | | ||
DOCKER_BUILDKIT=1 docker build \ | ||
--build-arg BACKEND=${{matrix.backend}} \ | ||
--build-arg BUILDKIT_INLINE_CACHE=1 \ | ||
--cache-from ghcr.io/cexa-project/ddc/${{matrix.image}}_${{matrix.backend}} \ | ||
-t ghcr.io/cexa-project/ddc/${{matrix.image}}_${{matrix.backend}} \ | ||
-t ghcr.io/cexa-project/ddc/${{matrix.image}}_${{matrix.backend}}:${GITHUB_SHA:0:7} \ | ||
docker/${{matrix.image}} | ||
test: | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
image: ['oldest', 'latest'] | ||
backend: | ||
- name: 'cpu' | ||
c_compiler: 'gcc' | ||
cxx_compiler: 'g++' | ||
ddc_extra_cxx_flags: '-Wextra-semi -Wold-style-cast' | ||
kokkos_extra_cmake_flags: '' | ||
- name: 'cpu' | ||
c_compiler: 'clang' | ||
cxx_compiler: 'clang++' | ||
ddc_extra_cxx_flags: '-Wextra-semi -Wextra-semi-stmt -Wold-style-cast' | ||
kokkos_extra_cmake_flags: '' | ||
- name: 'cuda' | ||
c_compiler: '${CUDA_GCC}' | ||
cxx_compiler: '${CUDA_GXX}' | ||
ddc_extra_cxx_flags: '' | ||
kokkos_extra_cmake_flags: '-DKokkos_ENABLE_CUDA=ON -DKokkos_ENABLE_CUDA_CONSTEXPR=ON -DKokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON -DKokkos_ARCH_AMPERE80=ON' | ||
- name: 'hip' | ||
c_compiler: 'hipcc' | ||
cxx_compiler: 'hipcc' | ||
ddc_extra_cxx_flags: '' | ||
kokkos_extra_cmake_flags: '-DKokkos_ENABLE_HIP=ON -DKokkos_ENABLE_HIP_RELOCATABLE_DEVICE_CODE=ON -DKokkos_ENABLE_ROCTHRUST=OFF -DKokkos_ARCH_AMD_GFX90A=ON' | ||
cxx_version: ['17', '20', '23'] | ||
cmake_build_type: ['Debug', 'Release'] | ||
exclude: | ||
- image: 'oldest' # nvcc 11 only supports C++-17 | ||
backend: | ||
name: 'cuda' | ||
cxx_version: '20' | ||
- image: 'oldest' # nvcc 11 only supports C++-17 | ||
backend: | ||
name: 'cuda' | ||
cxx_version: '23' | ||
- image: 'oldest' # clang bug with multidimensional bracket operator and parameter packs | ||
backend: | ||
name: 'hip' | ||
cxx_version: '23' | ||
- image: 'latest' # nvcc 12 only supports C++-20 | ||
backend: | ||
name: 'cuda' | ||
cxx_version: '23' | ||
runs-on: ubuntu-20.04 | ||
needs: [docker-build] | ||
steps: | ||
- name: Free Disk Space (Ubuntu) | ||
uses: jlumbroso/[email protected] | ||
with: { tool-cache: true, large-packages: false } | ||
- name: Checkout built branch | ||
uses: actions/checkout@v4 | ||
with: { submodules: true } | ||
- name: Checkout Kokkos devel branch | ||
run: | | ||
cd vendor/kokkos | ||
git fetch | ||
git checkout develop | ||
- name: Test | ||
id: test | ||
run: | | ||
cat<<-'EOF' > run.sh | ||
set -xe | ||
git config --global --add safe.directory '*' | ||
export benchmark_ROOT=$PWD/opt/benchmark | ||
export DDC_ROOT=$PWD/opt/ddc | ||
export GTest_ROOT=$PWD/opt/gtest | ||
export Kokkos_ROOT=$PWD/opt/kokkos | ||
export KokkosFFT_ROOT=$PWD/opt/kokkos-fft | ||
export KokkosKernels_ROOT=$PWD/opt/kokkos-kernels | ||
export CMAKE_BUILD_PARALLEL_LEVEL=4 | ||
export CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} | ||
export CC=${{matrix.backend.c_compiler}} | ||
export CXX=${{matrix.backend.cxx_compiler}} | ||
cmake \ | ||
-DCMAKE_CXX_STANDARD=${{matrix.cxx_version}} \ | ||
-DBENCHMARK_ENABLE_GTEST_TESTS=OFF \ | ||
-DBENCHMARK_ENABLE_TESTING=OFF \ | ||
-DBENCHMARK_INSTALL_DOCS=OFF \ | ||
-DBENCHMARK_USE_BUNDLED_GTEST=OFF \ | ||
-B build \ | ||
-S /src/vendor/benchmark | ||
cmake --build build | ||
cmake --install build --prefix $benchmark_ROOT | ||
rm -rf build | ||
cmake \ | ||
-DCMAKE_CXX_STANDARD=${{matrix.cxx_version}} \ | ||
-B build \ | ||
-S /src/vendor/googletest | ||
cmake --build build | ||
cmake --install build --prefix $GTest_ROOT | ||
rm -rf build | ||
cmake \ | ||
-DCMAKE_CXX_STANDARD=${{matrix.cxx_version}} \ | ||
-DKokkos_ENABLE_DEPRECATED_CODE_4=OFF \ | ||
-DKokkos_ENABLE_DEPRECATION_WARNINGS=OFF \ | ||
-DKokkos_ENABLE_SERIAL=ON \ | ||
${{matrix.backend.kokkos_extra_cmake_flags}} \ | ||
-B build \ | ||
-S /src/vendor/kokkos | ||
cmake --build build | ||
cmake --install build --prefix $Kokkos_ROOT | ||
rm -rf build | ||
cmake \ | ||
-DCMAKE_CXX_STANDARD=${{matrix.cxx_version}} \ | ||
-DKokkosFFT_ENABLE_HOST_AND_DEVICE=ON \ | ||
-B build \ | ||
-S /src/vendor/kokkos-fft | ||
cmake --build build | ||
cmake --install build --prefix $KokkosFFT_ROOT | ||
rm -rf build | ||
cmake \ | ||
-DCMAKE_CXX_STANDARD=${{matrix.cxx_version}} \ | ||
-DKokkosKernels_ADD_DEFAULT_ETI=OFF \ | ||
-DKokkosKernels_ENABLE_ALL_COMPONENTS=OFF \ | ||
-DKokkosKernels_ENABLE_COMPONENT_BLAS=ON \ | ||
-DKokkosKernels_ENABLE_COMPONENT_BATCHED=ON \ | ||
-DKokkosKernels_ENABLE_COMPONENT_LAPACK=OFF \ | ||
-DKokkosKernels_ENABLE_TPL_BLAS=OFF \ | ||
-DKokkosKernels_ENABLE_TPL_CUSOLVER=OFF \ | ||
-DKokkosKernels_ENABLE_TPL_LAPACK=OFF \ | ||
-B build \ | ||
-S /src/vendor/kokkos-kernels | ||
cmake --build build | ||
cmake --install build --prefix $KokkosKernels_ROOT | ||
rm -rf build | ||
cmake \ | ||
-DCMAKE_CXX_FLAGS="-Werror -Wall -Wextra -Wpedantic -Wno-sign-compare -pedantic-errors ${{matrix.backend.ddc_extra_cxx_flags}}" \ | ||
-DCMAKE_CXX_STANDARD=${{matrix.cxx_version}} \ | ||
-DDDC_BUILD_BENCHMARKS=ON \ | ||
-DDDC_benchmark_DEPENDENCY_POLICY=INSTALLED \ | ||
-DDDC_GTest_DEPENDENCY_POLICY=INSTALLED \ | ||
-DDDC_Kokkos_DEPENDENCY_POLICY=INSTALLED \ | ||
-DDDC_KokkosFFT_DEPENDENCY_POLICY=INSTALLED \ | ||
-B build \ | ||
-S /src | ||
cmake --build build | ||
if [ 'xcpu' = 'x${{matrix.backend.name}}' ] | ||
then | ||
ctest --test-dir build --output-on-failure --timeout 10 --output-junit tests.xml | ||
./build/examples/characteristics_advection | ||
./build/examples/game_of_life | ||
./build/examples/heat_equation_spectral | ||
./build/examples/heat_equation | ||
./build/examples/non_uniform_heat_equation | ||
./build/examples/uniform_heat_equation | ||
fi | ||
cmake --install build --prefix $DDC_ROOT | ||
rm -rf build | ||
cmake \ | ||
-B build \ | ||
-S /src/install_test | ||
cmake --build build | ||
EOF | ||
docker run \ | ||
--cidfile='docker.cid' \ | ||
-v ${PWD}:/src:ro \ | ||
ghcr.io/cexa-project/ddc/${{matrix.image}}_${{matrix.backend.name}}:${GITHUB_SHA:0:7} \ | ||
bash /src/run.sh | ||
if docker cp "$(cat docker.cid)":/data/tests.xml /home/runner/work/ddc/ddc/tests.xml | ||
then echo "with_report=true" >> "$GITHUB_OUTPUT" | ||
else echo "with_report=false" >> "$GITHUB_OUTPUT" | ||
fi | ||
- name: Publish Test Report | ||
uses: mikepenz/action-junit-report@v5 | ||
if: ( success() || failure() ) && steps.test.outputs.with_report == 'true' # always run even if the previous step fails | ||
with: | ||
report_paths: '/home/runner/work/ddc/ddc/tests.xml' |