-
Notifications
You must be signed in to change notification settings - Fork 74
206 lines (192 loc) · 14.8 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#
# 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.
# CXX : {g++, clang++}
# [g++] ALPAKA_CI_GCC_VER : {9, 10, 11, 12, 13}
# [clang++] ALPAKA_CI_CLANG_VER : {9, 10, 11, 12, 13, 14}
# [cl.exe] ALPAKA_CI_CL_VER : {2022}
# ALPAKA_CI_STDLIB : {libstdc++, [CXX==clang++]:libc++}
# CMAKE_BUILD_TYPE : {Debug, Release}
# alpaka_CI : {GITHUB}
# ALPAKA_CI_DOCKER_BASE_IMAGE_NAME : {ubuntu:20.04, ubuntu:22.04}
# 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}
# ALPAKA_CI_CMAKE_VER : {3.22.6, 3.23.5, 3.24.4, 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.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6}
# [ON] CMAKE_CUDA_COMPILER : {nvcc, [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: 2023.2.0
ALPAKA_CI_TBB_VERSION: 2021.10.0
ALPAKA_CI_RUN_TESTS: ON
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: 14
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 }}
strategy:
fail-fast: false
matrix:
include:
### Analysis builds
- name: linux_clang-14_cuda-11.2_debug_analysis
os: ubuntu-20.04
env: {CXX: clang++, CC: 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.23.5, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04", ALPAKA_CI_ANALYSIS: ON, ALPAKA_CI_RUN_TESTS: OFF, alpaka_DEBUG: 1, alpaka_ACC_GPU_CUDA_ENABLE: ON, ALPAKA_CI_CUDA_VERSION: "11.2", CMAKE_CUDA_COMPILER: clang++, alpaka_ACC_CPU_B_OMP2_T_SEQ_ENABLE: OFF, alpaka_ACC_CPU_B_SEQ_T_OMP2_ENABLE: OFF}
- name: windows_cl-2022_debug_analysis
os: windows-2022
env: {CXX: cl.exe, CC: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.78.0, ALPAKA_CI_CMAKE_VER: 3.23.5, ALPAKA_CI_ANALYSIS: ON, alpaka_DEBUG: 2}
- name: macos_xcode-14.2_debug_analysis
os: macos-12
env: {CXX: clang++, CC: 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: {CXX: g++, CC: gcc, ALPAKA_CI_GCC_VER: 12, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.80.0, ALPAKA_CI_CMAKE_VER: 3.23.5, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:22.04", ALPAKA_CI_ANALYSIS: ON, alpaka_DEBUG: 2}
### macOS
- name: macos_xcode-13.2.1_debug
os: macos-11
env: {CXX: clang++, CC: clang, ALPAKA_CI_XCODE_VER: 13.2.1, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.76.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.2_release
os: macos-12
env: {CXX: clang++, CC: 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: {CXX: clang++, CC: 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: {CXX: cl.exe, CC: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.79.0, ALPAKA_CI_CMAKE_VER: 3.24.4, OMP_NUM_THREADS: 1}
- name: windows_cl-2022_debug
os: windows-2022
env: {CXX: cl.exe, CC: 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: {CXX: cl.exe, CC: cl.exe, ALPAKA_CI_CL_VER: 2022, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.81.0, ALPAKA_CI_CMAKE_VER: 3.24.4, 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: {CXX: cl.exe, CC: 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
- name: linux_gcc-9_debug
os: ubuntu-20.04
env: {CXX: g++, CC: gcc, ALPAKA_CI_GCC_VER: 9, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.74.0, ALPAKA_CI_CMAKE_VER: 3.22.6, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04", CMAKE_CXX_EXTENSIONS: OFF}
- name: linux_gcc-10_release
os: ubuntu-20.04
env: {CXX: g++, CC: gcc, ALPAKA_CI_GCC_VER: 10, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.75.0, ALPAKA_CI_CMAKE_VER: 3.23.5, OMP_NUM_THREADS: 2, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04"}
- name: linux_gcc-11_debug
os: ubuntu-20.04
env: {CXX: g++, CC: gcc, ALPAKA_CI_GCC_VER: 11, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.78.0, ALPAKA_CI_CMAKE_VER: 3.22.6, OMP_NUM_THREADS: 2, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04"}
- name: linux_gcc-12_release_c++20
os: ubuntu-22.04
env: {CXX: g++, CC: gcc, ALPAKA_CI_GCC_VER: 12, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Release, ALPAKA_BOOST_VERSION: 1.80.0, ALPAKA_CI_CMAKE_VER: 3.24.4, OMP_NUM_THREADS: 2, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:22.04", alpaka_CXX_STANDARD: 20, alpaka_USE_MDSPAN: "FETCH"}
- name: linux_gcc-13_debug
os: ubuntu-22.04
env: {CXX: g++, CC: gcc, 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, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:22.04"}
# clang++
- name: linux_clang-9_debug
os: ubuntu-20.04
env: {CXX: clang++, CC: clang, ALPAKA_CI_CLANG_VER: 9, ALPAKA_CI_STDLIB: libstdc++, CMAKE_BUILD_TYPE: Debug, ALPAKA_BOOST_VERSION: 1.74.0, ALPAKA_CI_CMAKE_VER: 3.22.6, OMP_NUM_THREADS: 1, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04"}
- name: linux_clang-10_release
os: ubuntu-20.04
env: {CXX: clang++, CC: 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.23.5, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04", alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, CMAKE_CXX_EXTENSIONS: OFF}
# clang-11 tested in GitLab CI
- name: linux_clang-12_release
os: ubuntu-20.04
env: {CXX: clang++, CC: 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.24.4, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04", alpaka_ACC_CPU_B_TBB_T_SEQ_ENABLE: OFF, CMAKE_CXX_EXTENSIONS: OFF}
- name: linux_clang-13_debug
os: ubuntu-22.04
env: {CXX: clang++, CC: 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.23.5, OMP_NUM_THREADS: 3, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:20.04", CMAKE_CXX_EXTENSIONS: OFF}
- name: linux_clang-16_debug_ubsan
os: ubuntu-latest
env: {CXX: clang++, CC: 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.23.5, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:22.04", CMAKE_CXX_EXTENSIONS: OFF, ALPAKA_CI_SANITIZERS: UBSan}
- name: linux_clang-16_debug_tsan
os: ubuntu-latest
env: {CXX: clang++, CC: 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.23.5, OMP_NUM_THREADS: 4, ALPAKA_CI_DOCKER_BASE_IMAGE_NAME: "ubuntu:22.04", 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}
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