99
1010permissions :
1111 contents : read
12+ pull-requests : read
1213
1314env :
1415 BUILD_DIR : " ${{github.workspace}}/build"
1516 INSTALL_DIR : " ${{github.workspace}}/build/install"
1617
1718jobs :
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 :
7273 strategy :
7374 fail-fast : false
7475 matrix :
@@ -106,6 +107,7 @@ jobs:
106107 - name : Run tests under valgrind
107108 run : ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}}
108109
110+ # Build and test UMF with different CMake generators on Windows
109111 Windows-generators :
110112 strategy :
111113 matrix :
@@ -199,12 +201,13 @@ jobs:
199201 ${{ matrix.umfd_lib == 'ON' && '--umfd-lib' || ''}}
200202 ${{ matrix.static_hwloc == 'ON' && '--hwloc' || '' }}
201203
202- icx :
204+ # Build and test UMF with Intel C++ Compiler (ICX) on Windows
205+ Windows-icx :
203206 env :
204207 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"
205208 strategy :
206209 matrix :
207- os : ['windows-2019 ', 'windows-2022 ']
210+ os : ['windows-2022 ', 'windows-2025 ']
208211 build_type : [Debug]
209212 compiler : [{c: icx, cxx: icx}]
210213 shared_library : ['ON', 'OFF']
@@ -215,40 +218,40 @@ jobs:
215218 shared_library : ' ON'
216219 name : ICX (${{matrix.os}}, build_type=${{matrix.build_type}}, compilers=${{matrix.compiler.c}}/${{matrix.compiler.cxx}}, shared_library=${{matrix.shared_library}})
217220 runs-on : ${{matrix.os}}
218-
221+
219222 steps :
220223 - name : Checkout
221224 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
222225 with :
223226 fetch-depth : 0
224-
227+
225228 - name : Initialize vcpkg
226229 uses : lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5
227230 with :
228231 vcpkgGitCommitId : ea2a964f9303270322cf3f2d51c265ba146c422d # 1.04.2025
229232 vcpkgDirectory : ${{env.BUILD_DIR}}/vcpkg
230233 vcpkgJsonGlob : ' **/vcpkg.json'
231-
234+
232235 - name : Install dependencies
233236 run : vcpkg install --triplet x64-windows
234-
237+
235238 - name : Install Ninja
236239 uses : seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6
237-
240+
238241 - name : Download icx compiler
239242 env :
240243 # Link source: https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler-download.html
241244 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"
242245 run : |
243246 Invoke-WebRequest -Uri "${{ env.CMPLR_LINK }}" -OutFile compiler_install.exe
244-
247+
245248 - name : Install icx compiler
246249 shell : cmd
247250 run : |
248251 start /b /wait .\compiler_install.exe -s -x -f extracted --log extract.log
249252 extracted\bootstrapper.exe -s --action install --eula=accept -p=NEED_VS2017_INTEGRATION=0 ^
250253 -p=NEED_VS2019_INTEGRATION=0 -p=NEED_VS2022_INTEGRATION=0 --log-dir=.
251-
254+
252255 - name : Configure build
253256 shell : cmd
254257 run : |
@@ -267,14 +270,14 @@ jobs:
267270 -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON ^
268271 -DUMF_BUILD_CUDA_PROVIDER=ON ^
269272 -DUMF_TESTS_FAIL_ON_SKIP=ON
270-
273+
271274 - name : Build UMF
272275 shell : cmd
273276 run : |
274277 call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
275278 call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat"
276279 cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS%
277-
280+
278281 - name : Run tests
279282 shell : cmd
280283 working-directory : ${{env.BUILD_DIR}}
@@ -285,8 +288,7 @@ jobs:
285288
286289 # Scenarios where UMF_LINK_HWLOC_STATICALLY is set to OFF and hwloc is not installed in the system
287290 # The hwloc library is fetched implicitly
288- hwloc-fallback :
289-
291+ Hwloc-fallback :
290292 strategy :
291293 matrix :
292294 include :
@@ -366,6 +368,8 @@ jobs:
366368 pr_no : ' 0'
367369 bench_script_params : ' --save Baseline_PVC'
368370
371+ # Run benchmarks with the latest SYCL (with the latest UMF copied into the SYCL)
372+ # to verify the compatibility.
369373 Benchmarks-sycl :
370374 uses : ./.github/workflows/reusable_benchmarks.yml
371375 permissions :
0 commit comments