@@ -3,6 +3,7 @@ name: Nightly
3
3
4
4
# This job is run at 04:00 UTC every day or on demand.
5
5
on :
6
+ pull_request :
6
7
workflow_dispatch :
7
8
schedule :
8
9
- cron : ' 0 4 * * *'
14
15
BUILD_DIR : " ${{github.workspace}}/build"
15
16
16
17
jobs :
17
- fuzz-test :
18
- name : Fuzz test
19
- strategy :
20
- fail-fast : false
21
- matrix :
22
- build_type : [Debug, Release]
23
- compiler : [{c: clang, cxx: clang++}]
24
-
25
- runs-on : ubuntu-latest
26
-
27
- steps :
28
- - name : Checkout repository
29
- uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
30
- with :
31
- fetch-depth : 0
32
-
33
- - name : Install apt packages
34
- run : |
35
- sudo apt-get update
36
- sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev
37
-
38
- - name : Configure CMake
39
- run : >
40
- cmake
41
- -B ${{github.workspace}}/build
42
- -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
43
- -DCMAKE_C_COMPILER=${{matrix.compiler.c}}
44
- -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}}
45
- -DUMF_TESTS_FAIL_ON_SKIP=ON
46
- -DUMF_DEVELOPER_MODE=ON
47
- -DUMF_BUILD_FUZZTESTS=ON
48
-
49
- - name : Build
50
- run : cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} --verbose -j$(nproc)
51
-
52
- - name : Fuzz long test
53
- working-directory : ${{github.workspace}}/build
54
- run : ctest -C ${{matrix.build_type}} --output-on-failure --verbose -L "fuzz-long"
55
-
56
- valgrind :
57
- name : Valgrind
58
- strategy :
59
- fail-fast : false
60
- matrix :
61
- tool : ['memcheck', 'drd', 'helgrind']
62
- runs-on : ubuntu-latest
63
-
64
- steps :
65
- - name : Checkout repository
66
- uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
67
- with :
68
- fetch-depth : 0
69
-
70
- - name : Install apt packages
71
- run : |
72
- sudo apt-get update
73
- sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev valgrind
74
-
75
- - name : Configure CMake
76
- run : >
77
- cmake
78
- -B ${{github.workspace}}/build
79
- -DCMAKE_BUILD_TYPE=Debug
80
- -DUMF_FORMAT_CODE_STYLE=OFF
81
- -DUMF_DEVELOPER_MODE=ON
82
- -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON
83
- -DUMF_BUILD_LEVEL_ZERO_PROVIDER=OFF
84
- -DUMF_BUILD_CUDA_PROVIDER=OFF
85
- -DUMF_USE_VALGRIND=1
86
- -DUMF_TESTS_FAIL_ON_SKIP=ON
87
-
88
- - name : Build
89
- run : cmake --build ${{github.workspace}}/build --config Debug -j$(nproc)
90
-
91
- - name : Run tests under valgrind
92
- run : ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}}
93
-
94
- Windows-generators :
95
- name : Windows ${{matrix.generator}} generator
96
- strategy :
97
- matrix :
98
- os : ['windows-2019', 'windows-2022']
99
- build_type : [Release]
100
- compiler : [{c: cl, cxx: cl}]
101
- shared_library : ['ON', 'OFF']
102
- static_hwloc : ['ON', 'OFF']
103
- generator : ['Ninja', 'NMake Makefiles']
104
-
105
- runs-on : ${{matrix.os}}
106
-
107
- steps :
108
- - name : Checkout
109
- uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
110
- with :
111
- fetch-depth : 0
112
-
113
- - name : Set VCPKG_PATH with hwloc
114
- if : matrix.static_hwloc == 'OFF'
115
- run : echo "VCPKG_PATH='${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows'" >> $env:GITHUB_ENV
116
-
117
- - name : Set VCPKG_PATH without hwloc
118
- if : matrix.static_hwloc == 'ON'
119
- run : echo "VCPKG_PATH='${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows'" >> $env:GITHUB_ENV
120
-
121
- - name : Initialize vcpkg
122
- uses : lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5
123
- env :
124
- VCPKG_PATH : ${{env.VCPKG_PATH}}
125
- with :
126
- vcpkgGitCommitId : 3dd44b931481d7a8e9ba412621fa810232b66289
127
- vcpkgDirectory : ${{env.BUILD_DIR}}/vcpkg
128
- vcpkgJsonGlob : ' **/vcpkg.json'
129
-
130
- - name : Install dependencies
131
- run : vcpkg install
132
-
133
- - name : Install Ninja
134
- if : matrix.generator == 'Ninja'
135
- uses : seanmiddleditch/gha-setup-ninja@96bed6edff20d1dd61ecff9b75cc519d516e6401 # v5
136
-
137
- - name : Configure MSVC environment
138
- uses : ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
139
-
140
- - name : Configure build
141
- run : >
142
- cmake
143
- -B ${{env.BUILD_DIR}}
144
- -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}"
145
- -DCMAKE_C_COMPILER=${{matrix.compiler.c}}
146
- -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}}
147
- -G "${{matrix.generator}}"
148
- -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}}
149
- -DUMF_LINK_HWLOC_STATICALLY=${{matrix.static_hwloc}}
150
- -DUMF_FORMAT_CODE_STYLE=OFF
151
- -DUMF_DEVELOPER_MODE=ON
152
- -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON
153
- -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON
154
- -DUMF_BUILD_CUDA_PROVIDER=ON
155
- -DUMF_TESTS_FAIL_ON_SKIP=ON
156
-
157
- - name : Build UMF
158
- shell : cmd
159
- run : cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS%
160
-
161
- - name : Run tests
162
- shell : cmd
163
- working-directory : ${{env.BUILD_DIR}}
164
- run : ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test
165
-
166
- icx :
167
- name : ICX
168
- env :
169
- VCPKG_PATH : " ${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows"
170
- strategy :
171
- matrix :
172
- os : ['windows-2019', 'windows-2022']
173
- build_type : [Debug]
174
- compiler : [{c: icx, cxx: icx}]
175
- shared_library : ['ON', 'OFF']
176
- include :
177
- - os : windows-2022
178
- build_type : Release
179
- compiler : {c: icx, cxx: icx}
180
- shared_library : ' ON'
181
-
182
- runs-on : ${{matrix.os}}
183
-
184
- steps :
185
- - name : Checkout
186
- uses : actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
187
- with :
188
- fetch-depth : 0
189
-
190
- - name : Initialize vcpkg
191
- uses : lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5
192
- with :
193
- vcpkgGitCommitId : 3dd44b931481d7a8e9ba412621fa810232b66289
194
- vcpkgDirectory : ${{env.BUILD_DIR}}/vcpkg
195
- vcpkgJsonGlob : ' **/vcpkg.json'
196
-
197
- - name : Install dependencies
198
- run : vcpkg install
199
-
200
- - name : Install Ninja
201
- uses : seanmiddleditch/gha-setup-ninja@96bed6edff20d1dd61ecff9b75cc519d516e6401 # v5
202
-
203
- - name : Download icx compiler
204
- env :
205
- # Link source: https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler-download.html
206
- CMPLR_LINK : " https://registrationcenter-download.intel.com/akdlm/IRC_NAS/15a35578-2f9a-4f39-804b-3906e0a5f8fc/w_dpcpp-cpp-compiler_p_2024.2.1.83_offline.exe"
207
- run : |
208
- Invoke-WebRequest -Uri "${{ env.CMPLR_LINK }}" -OutFile compiler_install.exe
209
-
210
- - name : Install icx compiler
211
- shell : cmd
212
- run : |
213
- start /b /wait .\compiler_install.exe -s -x -f extracted --log extract.log
214
- extracted\bootstrapper.exe -s --action install --eula=accept -p=NEED_VS2017_INTEGRATION=0 ^
215
- -p=NEED_VS2019_INTEGRATION=0 -p=NEED_VS2022_INTEGRATION=0 --log-dir=.
216
-
217
- - name : Configure build
218
- shell : cmd
219
- run : |
220
- call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
221
- call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
222
- cmake ^
223
- -B ${{env.BUILD_DIR}} ^
224
- -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}" ^
225
- -DCMAKE_C_COMPILER=${{matrix.compiler.c}} ^
226
- -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} ^
227
- -G Ninja ^
228
- -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} ^
229
- -DUMF_FORMAT_CODE_STYLE=OFF ^
230
- -DUMF_DEVELOPER_MODE=ON ^
231
- -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON ^
232
- -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON ^
233
- -DUMF_BUILD_CUDA_PROVIDER=ON ^
234
- -DUMF_TESTS_FAIL_ON_SKIP=ON
235
-
236
- - name : Build UMF
237
- shell : cmd
238
- run : |
239
- call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
240
- call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
241
- cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS%
242
-
243
- - name : Run tests
244
- shell : cmd
245
- working-directory : ${{env.BUILD_DIR}}
246
- run : |
247
- call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
248
- call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
249
- ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test
250
-
251
- # Scenarios where UMF_LINK_HWLOC_STATICALLY is set to OFF and hwloc is not installed in the system
252
- # The hwloc library is fetched implicitly
253
- hwloc-fallback :
254
- name : " Fallback to static hwloc build"
255
- strategy :
256
- matrix :
257
- include :
258
- - os : ' ubuntu-latest'
259
- build_type : Release
260
- number_of_processors : ' $(nproc)'
261
- - os : ' windows-latest'
262
- build_type : Release
263
- number_of_processors : ' $Env:NUMBER_OF_PROCESSORS'
264
-
265
- runs-on : ${{matrix.os}}
266
-
267
- steps :
268
- - name : Install dependencies
269
- if : matrix.os == 'ubuntu-latest'
270
- run : sudo apt-get install -y libnuma-dev
271
-
272
- - name : Checkout
273
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
274
- with :
275
- fetch-depth : 0
276
-
277
- - name : Configure build
278
- run : >
279
- cmake
280
- -B ${{env.BUILD_DIR}}
281
- -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
282
- -DUMF_BUILD_SHARED_LIBRARY=ON
283
- -DUMF_BUILD_EXAMPLES=OFF
284
- -DUMF_DEVELOPER_MODE=ON
285
- -DUMF_LINK_HWLOC_STATICALLY=OFF
286
- -DUMF_TESTS_FAIL_ON_SKIP=ON
287
-
288
- - name : Build UMF
289
- run : >
290
- cmake
291
- --build ${{env.BUILD_DIR}}
292
- --config ${{matrix.build_type}}
293
- -j ${{matrix.number_of_processors}}
294
-
295
- - name : Run tests
296
- working-directory : ${{env.BUILD_DIR}}
297
- run : ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test
298
-
299
- L0 :
300
- uses : ./.github/workflows/reusable_gpu.yml
301
- with :
302
- name : " LEVEL_ZERO"
303
- CUDA :
304
- uses : ./.github/workflows/reusable_gpu.yml
305
- with :
306
- name : " CUDA"
307
-
308
- # Full execution of QEMU tests
309
- QEMU :
310
- uses : ./.github/workflows/reusable_qemu.yml
311
- with :
312
- short_run : false
313
- # Beside the 2 LTS Ubuntu, we also test this on the latest Ubuntu - to be updated
314
- # every 6 months, so we verify the latest version of packages (compilers, etc.).
315
- os : " ['ubuntu-22.04', 'ubuntu-24.04', 'ubuntu-24.10']"
316
-
317
18
Benchmarks :
318
19
uses : ./.github/workflows/reusable_benchmarks.yml
319
20
permissions :
0 commit comments