Skip to content

switch to C++20 only #858

switch to C++20 only

switch to C++20 only #858

Workflow file for this run

#
# Copyright 2023 Benjamin Worpitz, René Widera, Bernhard Manfred Gruber, Jan Stephan, Simeon Ehrig
# SPDX-License-Identifier: MPL-2.0
#
name: Continuous Integration
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: true
################################################################################
# NOTE: Testing the full matrix is not practical.
# Therefore we aim to have each value been set in at lest one job.
# ALPAKA_CI_CXX : {g++, clang++}
# [g++] ALPAKA_CI_GCC_VER : {10, 11, 12, 13}
# [clang++] ALPAKA_CI_CLANG_VER : {10, 11, 12, 13, 14}
# [cl.exe] ALPAKA_CI_CL_VER : {2022}
# ALPAKA_CI_STDLIB : {libstdc++, [ALPAKA_CI_CXX==clang++]:libc++}
# CMAKE_BUILD_TYPE : {Debug, Release}
# alpaka_CI : {GITHUB}
# ALPAKA_BOOST_VERSION : {1.74.0, 1.75.0, 1.76.0, 1.77.0, 1.78.0, 1.79.0, 1.80.0, 1.81.0, 1.82.0, 1.83.0, 1.84.0, 1.85.0, 1.86.0}
# ALPAKA_CI_CMAKE_VER : {3.25.1, 3.25.3, 3.26.4}
# ALPAKA_CI_XCODE_VER : {13.2.1, 14.2}
# ALPAKA_CI_SANITIZERS : {ASan, UBsan, TSan}
# TSan is not currently used because it produces many unexpected errors
# ALPAKA_CI_ANALYSIS : {ON, OFF}
# alpaka_DEBUG : {0, 1, 2}
# alpaka_ACC_GPU_CUDA_ONLY_MODE : {ON, OFF}
# alpaka_ACC_GPU_HIP_ONLY_MODE : {ON, OFF}
# alpaka_ACC_CPU_B_SEQ_T_SEQ_ENABLE : {ON, OFF}
# alpaka_ACC_CPU_B_SEQ_T_THREADS_ENABLE : {ON, OFF}
# alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE : {ON, OFF}
# [ON] OMP_NUM_THREADS : {1, 2, 3, 4}
# alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE : {ON, OFF}
# [ON] OMP_NUM_THREADS : {1, 2, 3, 4}
# alpaka_ACC_ANY_BT_OMP5_ENABLE : {ON, OFF}
# [ON] OMP_NUM_THREADS : {1, 2, 3, 4}
# alpaka_ACC_GPU_CUDA_ENABLE : {ON, OFF}
# [ON] ALPAKA_CI_CUDA_VERSION : {11.2, 11.3, 11.4, 11.5, 11.6, 11.7, 11.8, 12.0, 12.1, 12.2, 12.3, 12.4, 12.5, 12.6}
# [ON] ALPAKA_CI_CUDA_COMPILER : {nvcc, [ALPAKA_CI_CXX==clang++]:clang++}
# alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE : {ON, OFF}
# alpaka_ACC_GPU_HIP_ENABLE : {ON, OFF}
# [ON] ALPAKA_CI_HIP_BRANCH : {rocm-4.2}
# alpaka_USE_MDSPAN : {OFF, FETCH, SYSTEM}
# if you add/remove any CI variable, also update docker_ci.sh
env:
alpaka_CI: GITHUB
ALPAKA_CI_BUILD_JOBS: 2
TBB_ROOT: ${{ github.workspace }}/tbb
BOOST_ROOT: ${{ github.workspace }}/boost
ALPAKA_CI_BOOST_LIB_DIR: ${{ github.workspace }}/boost_libs
ALPAKA_CI_CMAKE_DIR: ${{ github.workspace }}/CMake
ALPAKA_CI_CUDA_DIR: ${{ github.workspace }}/CUDA
ALPAKA_CI_HIP_ROOT_DIR: ${{ github.workspace }}/hip
ALPAKA_CI_SANITIZERS: ""
ALPAKA_CI_ANALYSIS: OFF
ALPAKA_CI_ONEAPI_VERSION: 2024.0
ALPAKA_CI_TBB_VERSION: 2021.10.0
ALPAKA_CI_RUN_TESTS: ON
alpaka_CXX_STANDARD: 20
alpaka_ACC_CPU_B_SEQ_T_SEQ_ENABLE: ON
alpaka_ACC_CPU_B_SEQ_T_THREADS_ENABLE: ON
alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: ON
alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: ON
alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: ON
alpaka_ACC_ANY_BT_OMP5_ENABLE: OFF
alpaka_ACC_GPU_CUDA_ENABLE: OFF
alpaka_ACC_GPU_CUDA_ONLY_MODE: OFF
alpaka_ACC_GPU_HIP_ENABLE: OFF
alpaka_ACC_GPU_HIP_ONLY_MODE: OFF
alpaka_USE_MDSPAN: OFF
alpaka_ENABLE_WERROR: ON
CMAKE_INSTALL_PREFIX: ${{ github.workspace }}/_install
jobs:
clang-format:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: DoozyX/[email protected]
with:
clangFormatVersion: 16
exclude: './thirdParty'
inplace: True
- run: |
git diff --exit-code > format.patch
- uses: actions/upload-artifact@v3
if: failure()
with:
name: format.patch
path: format.patch
ci:
needs: clang-format
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
env: ${{ matrix.env }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
include:
### Analysis builds
- name: linux_clang-14_cuda-11.2_debug_analysis
os: ubuntu-20.04
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_CLANG_VER: 14, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.79.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, ALPAKA_CI_ANALYSIS: ON, ALPAKA_CI_RUN_TESTS: OFF, alpaka_DEBUG: 1, alpaka_ACC_GPU_CUDA_ENABLE: ON, ALPAKA_CI_CUDA_VERSION: "11.2", ALPAKA_CI_CUDA_COMPILER : clang++, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF}
container: ubuntu:20.04
- name: windows_cl-2022_debug_analysis
os: windows-2022
env: {ALPAKA_CI_CXX: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.78.0, ALPAKA_CI_CMAKE_VER: 3.25.3, ALPAKA_CI_ANALYSIS: ON, alpaka_DEBUG: 2}
- name: macos_xcode-14.2_debug_analysis
os: macos-12
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_XCODE_VER: 14.2, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.81.0, ALPAKA_CI_ANALYSIS: ON, alpaka_DEBUG: 2, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: ON, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: ON, ALPAKA_CI_BUILD_JOBS: 3}
- name: linux_gcc-12_debug_analysis
os: ubuntu-22.04
env: {ALPAKA_CI_CXX: g++, ALPAKA_CI_GCC_VER: 12, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.80.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, ALPAKA_CI_ANALYSIS: ON, alpaka_DEBUG: 2}
container: ubuntu:22.04
### macOS
- name: macos_xcode-14.2_release
os: macos-12
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_XCODE_VER: 14.2, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.81.0, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: ON, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: ON, ALPAKA_CI_BUILD_JOBS: 3}
- name: macos_xcode-14.3.1_debug
os: macos-13
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_XCODE_VER: 14.3.1, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.82.0, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: ON, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: ON, ALPAKA_CI_BUILD_JOBS: 3}
### Windows
- name: windows_cl-2022_release
os: windows-2022
env: {ALPAKA_CI_CXX: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.79.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 1}
- name: windows_cl-2022_debug
os: windows-2022
env: {ALPAKA_CI_CXX: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.80.0, ALPAKA_CI_CMAKE_VER: 3.25.1, OMP_NUM_THREADS: 4, alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF}
## CUDA 12.1
# nvcc + MSVC
# - name: windows_nvcc-12.1_cl-2022_release_cuda-only
# os: windows-2022
# env: {ALPAKA_CI_CXX: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.81.0, ALPAKA_CI_CMAKE_VER: 3.25.3, ALPAKA_CI_RUN_TESTS: OFF, alpaka_ACC_GPU_CUDA_ENABLE: ON, ALPAKA_CI_CUDA_VERSION: "12.1", CMAKE_CUDA_ARCHITECTURES: "50;90", alpaka_ACC_GPU_CUDA_ONLY_MODE: ON, alpaka_ACC_CPU_B_SEQ_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_SEQ_T_THREADS_ENABLE: OFF, alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF}
# - name: windows_nvcc-12.1_cl-2022_debug
# os: windows-2022
# env: {ALPAKA_CI_CXX: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.78.0, ALPAKA_CI_CMAKE_VER: 3.25.1, ALPAKA_CI_RUN_TESTS: OFF, alpaka_ACC_GPU_CUDA_ENABLE: ON, ALPAKA_CI_CUDA_VERSION: "12.1", alpaka_ACC_CPU_BT_OMP5_ENABLE: OFF, alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF}
### Ubuntu
## native
# g++
# We can not enable UBSan when using gcc because it does not have a -fsanitize-blacklist option to suppress errors in boost etc.
# gcc 7 ASan introduced 'stack-use-after-scope' which is triggered by GOMP_parallel
# TODO: keep jobs until GitLab CI supports:
# - disable CMAKE_CXX_EXTENSIONS=OFF
# - Ubuntu 22.04
- name: linux_gcc-11_debug
os: ubuntu-20.04
env: {ALPAKA_CI_CXX: g++, ALPAKA_CI_GCC_VER: 11, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.74.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, CMAKE_CXX_EXTENSIONS: OFF}
container: ubuntu:20.04
- name: linux_gcc-12_release_c++20
os: ubuntu-22.04
env: {ALPAKA_CI_CXX: g++, ALPAKA_CI_GCC_VER: 12, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.80.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 2, alpaka_CXX_STANDARD: 20, alpaka_USE_MDSPAN: "FETCH"}
container: ubuntu:22.04
- name: linux_gcc-13_debug
os: ubuntu-22.04
env: {ALPAKA_CI_CXX: g++, ALPAKA_CI_GCC_VER: 13, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.82.0, ALPAKA_CI_CMAKE_VER: 3.26.4, OMP_NUM_THREADS: 2}
container: ubuntu:22.04
# TODO: keep jobs until GitLab CI supports:
# - disable CMAKE_CXX_EXTENSIONS=OFF
# - Ubuntu 22.04
# - libc++
# - sanitizer jobs
# clang++
- name: linux_clang-10_release
os: ubuntu-20.04
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_CLANG_VER: 10, ALPAKA_CI_STDLIB: libc++, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.75.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, CMAKE_CXX_EXTENSIONS: OFF}
container: ubuntu:20.04
# clang-11 tested in GitLab CI
- name: linux_clang-12_release
os: ubuntu-20.04
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_CLANG_VER: 12, ALPAKA_CI_STDLIB: libc++, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.77.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, CMAKE_CXX_EXTENSIONS: OFF}
container: ubuntu:20.04
- name: linux_clang-13_debug
os: ubuntu-22.04
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_CLANG_VER: 13, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.79.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 3, CMAKE_CXX_EXTENSIONS: OFF}
container: ubuntu:22.04
- name: linux_clang-16_debug_ubsan
os: ubuntu-22.04
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_CLANG_VER: 16, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.77.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, CMAKE_CXX_EXTENSIONS: OFF, ALPAKA_CI_SANITIZERS: UBSan}
container: ubuntu:22.04
- name: linux_clang-16_debug_tsan
os: ubuntu-22.04
env: {ALPAKA_CI_CXX: clang++, ALPAKA_CI_CLANG_VER: 16, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.77.0, ALPAKA_CI_CMAKE_VER: 3.25.3, OMP_NUM_THREADS: 4, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF, alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, CMAKE_CXX_EXTENSIONS: OFF, ALPAKA_CI_SANITIZERS: TSan}
container: ubuntu:22.04
steps:
- name: check filter
if: (contains(github.event.head_commit.message, 'ci_filter') && !contains(github.event.head_commit.message, matrix.name ))
run: exit 1
- uses: actions/checkout@v3
- name: build + test
if: (runner.os == 'Windows')
env:
ALPAKA_CI_OS_NAME: ${{runner.os}}
shell: bash
run: cd ${GITHUB_WORKSPACE} && ./script/ci.sh
- name: build + test
if: (runner.os == 'Linux' || runner.os == 'macOS')
env:
ALPAKA_CI_OS_NAME: ${{runner.os}}
run: cd ${GITHUB_WORKSPACE} && ./script/ci.sh