name: Nightly CEA builds on: schedule: - cron: "0 0 * * 1-5" # every weekday at midnight UTC permissions: read-all jobs: build_and_test: # only run on original repo if: github.repository == 'kokkos/kokkos' strategy: # allow all matrix jobs to perform even if errors occur fail-fast: false matrix: build_type: - Release cxx_standard: - 20 backend: - name: OpenMP-x86_64-GCC/15.1.0-Shared configure: -DKokkos_ENABLE_OPENMP=ON -DBUILD_SHARED_LIBS=ON test: -e cpu OMP_PROC_BIND=spread OMP_PLACES=threads modules: gcc/15.1.0/gcc-15.1.0 cmake/3.31.9/gcc-15.1.0 python/3.14.0/gcc-15.1.0 - name: CUDA-A100-GCC/13.4.0-CUDA/12.8.1-Static-CUDA_CONSTEXPR-CUDA_RELOCATABLE_DEVICE_CODE configure: -DKokkos_ENABLE_CUDA=ON -DKokkos_ARCH_AMPERE80=ON -DKokkos_ENABLE_CUDA_CONSTEXPR=ON -DKokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON test: -e gpu -g a100 modules: gcc/13.4.0/gcc-15.1.0 cuda/12.8.1/none-none cmake/3.31.9/gcc-15.1.0 python/3.14.0/gcc-15.1.0 - name: CUDA-V100-GCC/13.4.0-CUDA/12.8.1-Static-CUDA_CONSTEXPR-CUDA_RELOCATABLE_DEVICE_CODE configure: -DKokkos_ENABLE_CUDA=ON -DKokkos_ARCH_VOLTA70=ON -DKokkos_ENABLE_CUDA_CONSTEXPR=ON -DKokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON test: -e gpu -g v100 modules: gcc/13.4.0/gcc-15.1.0 cuda/12.8.1/none-none cmake/3.31.9/gcc-15.1.0 python/3.14.0/gcc-15.1.0 - name: CUDA-A100-GCC/15.1.0-CUDA/13.0.2-Static-CUDA_CONSTEXPR-CUDA_RELOCATABLE_DEVICE_CODE configure: -DKokkos_ENABLE_CUDA=ON -DKokkos_ARCH_AMPERE80=ON -DKokkos_ENABLE_CUDA_CONSTEXPR=ON -DKokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON test: -e gpu -g a100 modules: gcc/15.1.0/gcc-15.1.0 cuda/13.0.2/none-none cmake/3.31.9/gcc-15.1.0 python/3.14.0/gcc-15.1.0 runs-on: [self-hosted, cuda] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Initialize the build tree # note: BUILDNAME sets the name of the build on the Dashboard # note: SITE sets the name of the site on the Dashboard # note: run is a Ruche command run: | run \ -m "${{ matrix.backend.modules }}" \ -e local \ cmake \ -B build \ -DBUILDNAME=${{ matrix.backend.name }}-C++${{ matrix.cxx_standard }}-${{ matrix.build_type }} \ -DSITE=cea-ruche \ -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ -DCMAKE_CXX_STANDARD=${{ matrix.cxx_standard }} \ -DCMAKE_COMPILE_WARNING_AS_ERROR=ON \ -DKokkos_ENABLE_COMPILER_WARNINGS=ON \ -DKokkos_ENABLE_TESTS=ON \ -DKokkos_ENABLE_EXAMPLES=ON \ -DKokkos_ENABLE_BENCHMARKS=ON \ ${{ matrix.backend.configure }} - name: Start, update and configure id: start_update_configure continue-on-error: true run: | run \ -m "${{ matrix.backend.modules }}" \ -e local \ ctest \ -V \ --test-dir build \ -D NightlyStart \ -D NightlyUpdate \ -D NightlyConfigure - name: Build id: build continue-on-error: true run: | run \ -m "${{ matrix.backend.modules }}" \ -e cpu \ CMAKE_BUILD_PARALLEL_LEVEL=40 \ ctest \ -V \ --test-dir build \ -D NightlyBuild - name: Test id: test continue-on-error: true run: | run \ -m "${{ matrix.backend.modules }}" \ ${{ matrix.backend.test }} \ ctest \ --output-on-failure \ --test-dir build \ -D NightlyTest - name: Submit run: | run \ -m "${{ matrix.backend.modules }}" \ -e local \ ctest \ --test-dir build \ -D NightlySubmit # note: this marks the job as failed if any of the mentionned steps (that # have `continue-on-error`) has failed - name: Failure outcome if: |- ${{ steps.start_update_configure.outcome == 'failure' || steps.build.outcome == 'failure' || steps.test.outcome == 'failure' }} run: exit 1