9
9
10
10
permissions :
11
11
contents : read
12
+ pull-requests : read
12
13
13
14
env :
14
15
BUILD_DIR : " ${{github.workspace}}/build"
15
16
INSTALL_DIR : " ${{github.workspace}}/build/install"
16
17
17
18
jobs :
18
- fuzz-test :
19
- strategy :
20
- fail-fast : false
21
- matrix :
22
- build_type : [Debug, Release]
23
- compiler : [{c: clang, cxx: clang++}]
24
- name : Fuzz test (ubuntu-latest, build_type=${{matrix.build_type}}, compilers=${{matrix.compiler.c}}/${{matrix.compiler.cxx}})
25
- runs-on : ubuntu-latest
26
-
27
- steps :
28
- - name : Checkout repository
29
- uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
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 : Find Clang fuzzer lib
39
- run : |
40
- CLANG_LIBS_DIR=$(find /usr/lib -name "libclang_rt.fuzzer_no_main-x86_64.a" -exec dirname {} \; | head -n 1)
41
- echo "CLANG_LIBS_DIR=${CLANG_LIBS_DIR}" >> $GITHUB_ENV
42
-
43
- - name : Configure CMake
44
- run : >
45
- cmake
46
- -B ${{github.workspace}}/build
47
- -DCMAKE_PREFIX_PATH=${{env.CLANG_LIBS_DIR}}
48
- -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
49
- -DCMAKE_C_COMPILER=${{matrix.compiler.c}}
50
- -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}}
51
- -DUMF_BUILD_SHARED_LIBRARY=ON
52
- -DUMF_TESTS_FAIL_ON_SKIP=ON
53
- -DUMF_DEVELOPER_MODE=ON
54
- -DUMF_BUILD_FUZZTESTS=ON
55
-
56
- - name : Build
57
- run : cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} --verbose -j$(nproc)
58
-
59
- - name : Run regular tests
60
- working-directory : ${{github.workspace}}/build
61
- run : ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz"
62
-
63
- - name : Run regular tests with proxy library
64
- working-directory : ${{env.BUILD_DIR}}
65
- run : LD_PRELOAD=./lib/libumf_proxy.so ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz"
66
-
67
- - name : Fuzz long test
68
- working-directory : ${{github.workspace}}/build
69
- run : ctest -C ${{matrix.build_type}} --output-on-failure --verbose -L "fuzz-long"
70
-
71
- valgrind :
19
+ Fuzzing :
20
+ strategy :
21
+ fail-fast : false
22
+ matrix :
23
+ build_type : [Debug, Release]
24
+ compiler : [{c: clang, cxx: clang++}]
25
+ name : Fuzzing (ubuntu-latest, build_type=${{matrix.build_type}}, compilers=${{matrix.compiler.c}}/${{matrix.compiler.cxx}})
26
+ runs-on : ubuntu-latest
27
+
28
+ steps :
29
+ - name : Checkout repository
30
+ uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
31
+ with :
32
+ fetch-depth : 0
33
+
34
+ - name : Install apt packages
35
+ run : |
36
+ sudo apt-get update
37
+ sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev
38
+
39
+ - name : Find Clang fuzzer lib
40
+ run : |
41
+ CLANG_LIBS_DIR=$(find /usr/lib -name "libclang_rt.fuzzer_no_main-x86_64.a" -exec dirname {} \; | head -n 1)
42
+ echo "CLANG_LIBS_DIR=${CLANG_LIBS_DIR}" >> $GITHUB_ENV
43
+
44
+ - name : Configure CMake
45
+ run : >
46
+ cmake
47
+ -B ${{github.workspace}}/build
48
+ -DCMAKE_PREFIX_PATH=${{env.CLANG_LIBS_DIR}}
49
+ -DCMAKE_BUILD_TYPE=${{matrix.build_type}}
50
+ -DCMAKE_C_COMPILER=${{matrix.compiler.c}}
51
+ -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}}
52
+ -DUMF_BUILD_SHARED_LIBRARY=ON
53
+ -DUMF_TESTS_FAIL_ON_SKIP=ON
54
+ -DUMF_DEVELOPER_MODE=ON
55
+ -DUMF_BUILD_FUZZTESTS=ON
56
+
57
+ - name : Build
58
+ run : cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} --verbose -j$(nproc)
59
+
60
+ - name : Run regular tests
61
+ working-directory : ${{github.workspace}}/build
62
+ run : ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz"
63
+
64
+ - name : Run regular tests with proxy library
65
+ working-directory : ${{env.BUILD_DIR}}
66
+ run : LD_PRELOAD=./lib/libumf_proxy.so ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz"
67
+
68
+ - name : Fuzz long test
69
+ working-directory : ${{github.workspace}}/build
70
+ run : ctest -C ${{matrix.build_type}} --output-on-failure --verbose -L "fuzz-long"
71
+
72
+ Valgrind :
72
73
strategy :
73
74
fail-fast : false
74
75
matrix :
@@ -106,6 +107,7 @@ jobs:
106
107
- name : Run tests under valgrind
107
108
run : ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}}
108
109
110
+ # Build and test UMF with different CMake generators on Windows
109
111
Windows-generators :
110
112
strategy :
111
113
matrix :
@@ -199,12 +201,13 @@ jobs:
199
201
${{ matrix.umfd_lib == 'ON' && '--umfd-lib' || ''}}
200
202
${{ matrix.static_hwloc == 'ON' && '--hwloc' || '' }}
201
203
202
- icx :
204
+ # Build and test UMF with Intel C++ Compiler (ICX) on Windows
205
+ Windows-icx :
203
206
env :
204
207
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"
205
208
strategy :
206
209
matrix :
207
- os : ['windows-2019 ', 'windows-2022 ']
210
+ os : ['windows-2022 ', 'windows-2025 ']
208
211
build_type : [Debug]
209
212
compiler : [{c: icx, cxx: icx}]
210
213
shared_library : ['ON', 'OFF']
@@ -215,40 +218,40 @@ jobs:
215
218
shared_library : ' ON'
216
219
name : ICX (${{matrix.os}}, build_type=${{matrix.build_type}}, compilers=${{matrix.compiler.c}}/${{matrix.compiler.cxx}}, shared_library=${{matrix.shared_library}})
217
220
runs-on : ${{matrix.os}}
218
-
221
+
219
222
steps :
220
223
- name : Checkout
221
224
uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
222
225
with :
223
226
fetch-depth : 0
224
-
227
+
225
228
- name : Initialize vcpkg
226
229
uses : lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5
227
230
with :
228
231
vcpkgGitCommitId : ea2a964f9303270322cf3f2d51c265ba146c422d # 1.04.2025
229
232
vcpkgDirectory : ${{env.BUILD_DIR}}/vcpkg
230
233
vcpkgJsonGlob : ' **/vcpkg.json'
231
-
234
+
232
235
- name : Install dependencies
233
236
run : vcpkg install --triplet x64-windows
234
-
237
+
235
238
- name : Install Ninja
236
239
uses : seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6
237
-
240
+
238
241
- name : Download icx compiler
239
242
env :
240
243
# Link source: https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler-download.html
241
244
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"
242
245
run : |
243
246
Invoke-WebRequest -Uri "${{ env.CMPLR_LINK }}" -OutFile compiler_install.exe
244
-
247
+
245
248
- name : Install icx compiler
246
249
shell : cmd
247
250
run : |
248
251
start /b /wait .\compiler_install.exe -s -x -f extracted --log extract.log
249
252
extracted\bootstrapper.exe -s --action install --eula=accept -p=NEED_VS2017_INTEGRATION=0 ^
250
253
-p=NEED_VS2019_INTEGRATION=0 -p=NEED_VS2022_INTEGRATION=0 --log-dir=.
251
-
254
+
252
255
- name : Configure build
253
256
shell : cmd
254
257
run : |
@@ -267,14 +270,14 @@ jobs:
267
270
-DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON ^
268
271
-DUMF_BUILD_CUDA_PROVIDER=ON ^
269
272
-DUMF_TESTS_FAIL_ON_SKIP=ON
270
-
273
+
271
274
- name : Build UMF
272
275
shell : cmd
273
276
run : |
274
277
call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
275
278
call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
276
279
cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS%
277
-
280
+
278
281
- name : Run tests
279
282
shell : cmd
280
283
working-directory : ${{env.BUILD_DIR}}
@@ -285,8 +288,7 @@ jobs:
285
288
286
289
# Scenarios where UMF_LINK_HWLOC_STATICALLY is set to OFF and hwloc is not installed in the system
287
290
# The hwloc library is fetched implicitly
288
- hwloc-fallback :
289
-
291
+ Hwloc-fallback :
290
292
strategy :
291
293
matrix :
292
294
include :
@@ -366,6 +368,8 @@ jobs:
366
368
pr_no : ' 0'
367
369
bench_script_params : ' --save Baseline_PVC'
368
370
371
+ # Run benchmarks with the latest SYCL (with the latest UMF copied into the SYCL)
372
+ # to verify the compatibility.
369
373
Benchmarks-sycl :
370
374
uses : ./.github/workflows/reusable_benchmarks.yml
371
375
permissions :
0 commit comments