|
17 | 17 | INSTALL_DIR: "${{github.workspace}}/build/install" |
18 | 18 |
|
19 | 19 | jobs: |
20 | | - Fuzzing: |
21 | | - strategy: |
22 | | - fail-fast: false |
23 | | - matrix: |
24 | | - build_type: [Debug, Release] |
25 | | - compiler: [{c: clang, cxx: clang++}] |
26 | | - name: Fuzzing (ubuntu-latest, build_type=${{matrix.build_type}}, compilers=${{matrix.compiler.c}}/${{matrix.compiler.cxx}}) |
27 | | - runs-on: ubuntu-latest |
28 | | - |
29 | | - steps: |
30 | | - - name: Checkout repository |
31 | | - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 |
32 | | - with: |
33 | | - fetch-depth: 0 |
34 | | - |
35 | | - - name: Install apt packages |
36 | | - run: | |
37 | | - sudo apt-get update |
38 | | - sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev |
39 | | -
|
40 | | - - name: Find Clang fuzzer lib |
41 | | - run: | |
42 | | - CLANG_LIBS_DIR=$(find /usr/lib -name "libclang_rt.fuzzer_no_main-x86_64.a" -exec dirname {} \; | head -n 1) |
43 | | - echo "CLANG_LIBS_DIR=${CLANG_LIBS_DIR}" >> $GITHUB_ENV |
44 | | -
|
45 | | - - name: Configure CMake |
46 | | - run: > |
47 | | - cmake |
48 | | - -B ${{github.workspace}}/build |
49 | | - -DCMAKE_PREFIX_PATH=${{env.CLANG_LIBS_DIR}} |
50 | | - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} |
51 | | - -DCMAKE_C_COMPILER=${{matrix.compiler.c}} |
52 | | - -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} |
53 | | - -DUMF_BUILD_SHARED_LIBRARY=ON |
54 | | - -DUMF_TESTS_FAIL_ON_SKIP=ON |
55 | | - -DUMF_DEVELOPER_MODE=ON |
56 | | - -DUMF_BUILD_FUZZTESTS=ON |
57 | | -
|
58 | | - - name: Build |
59 | | - run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} --verbose -j$(nproc) |
60 | | - |
61 | | - - name: Run regular tests |
62 | | - working-directory: ${{github.workspace}}/build |
63 | | - run: ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz" |
64 | | - |
65 | | - - name: Run regular tests with proxy library |
66 | | - working-directory: ${{env.BUILD_DIR}} |
67 | | - run: LD_PRELOAD=./lib/libumf_proxy.so ctest -C ${{matrix.build_type}} --output-on-failure -E "fuzz" |
68 | | - |
69 | | - - name: Fuzz long test |
70 | | - working-directory: ${{github.workspace}}/build |
71 | | - run: ctest -C ${{matrix.build_type}} --output-on-failure --verbose -L "fuzz-long" |
72 | | - |
73 | | - Valgrind: |
74 | | - strategy: |
75 | | - fail-fast: false |
76 | | - matrix: |
77 | | - tool: ['memcheck', 'drd', 'helgrind'] |
78 | | - name: Valgrind (${{matrix.tool}}) |
79 | | - runs-on: ubuntu-latest |
80 | | - |
81 | | - steps: |
82 | | - - name: Checkout repository |
83 | | - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 |
84 | | - with: |
85 | | - fetch-depth: 0 |
86 | | - |
87 | | - - name: Install apt packages |
88 | | - run: | |
89 | | - sudo apt-get update |
90 | | - sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev valgrind |
91 | | -
|
92 | | - - name: Configure CMake |
93 | | - run: > |
94 | | - cmake |
95 | | - -B ${{github.workspace}}/build |
96 | | - -DCMAKE_BUILD_TYPE=Debug |
97 | | - -DUMF_FORMAT_CODE_STYLE=OFF |
98 | | - -DUMF_DEVELOPER_MODE=OFF |
99 | | - -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON |
100 | | - -DUMF_BUILD_LEVEL_ZERO_PROVIDER=OFF |
101 | | - -DUMF_BUILD_CUDA_PROVIDER=OFF |
102 | | - -DUMF_USE_VALGRIND=1 |
103 | | - -DUMF_TESTS_FAIL_ON_SKIP=ON |
104 | | -
|
105 | | - - name: Build |
106 | | - run: cmake --build ${{github.workspace}}/build --config Debug -j$(nproc) |
107 | | - |
108 | | - - name: Run tests under valgrind |
109 | | - run: ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}} |
110 | | - |
111 | 20 | # Build and test UMF with different CMake generators on Windows |
112 | 21 | Windows-generators: |
113 | 22 | env: |
@@ -344,12 +253,30 @@ jobs: |
344 | 253 | call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat" |
345 | 254 | cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j %NUMBER_OF_PROCESSORS% |
346 | 255 |
|
| 256 | +
|
| 257 | + # call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" |
| 258 | + # call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat" |
| 259 | + # echo PATH before forcing build DLLs first: |
| 260 | + # echo %PATH% |
| 261 | + # where icx |
| 262 | + # where umf.dll || ver > nul |
| 263 | + # where jemalloc.dll || ver > nul |
| 264 | + # where tbbmalloc.dll || ver > nul |
| 265 | + # dumpbin /dependents test\test_memoryProvider.exe |
| 266 | + # dumpbin /dependents test\test_pool_null_params.exe |
| 267 | + # dumpbin /dependents test\test_memoryPool.exe |
| 268 | + # set "PATH=${{env.BUILD_DIR}}\bin;${{env.BUILD_DIR}}\bin\${{matrix.build_type}};${{env.BUILD_DIR}}\src\proxy_lib;${{env.BUILD_DIR}}\src\proxy_lib\${{matrix.build_type}};%PATH%" |
| 269 | + # echo PATH after forcing build DLLs first: |
| 270 | + # echo %PATH% |
| 271 | + # where umf.dll || ver > nul |
| 272 | + |
347 | 273 | - name: Run tests |
348 | 274 | shell: cmd |
349 | 275 | working-directory: ${{env.BUILD_DIR}} |
350 | 276 | run: | |
351 | 277 | call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" |
352 | 278 | call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat" |
| 279 | + set "PATH=${{env.BUILD_DIR}}\bin;${{env.BUILD_DIR}}\bin\${{matrix.build_type}};${{env.BUILD_DIR}}\src\proxy_lib;${{env.BUILD_DIR}}\src\proxy_lib\${{matrix.build_type}};%PATH%" |
353 | 280 | ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test |
354 | 281 |
|
355 | 282 | - name: Prepare vcpkg cache |
@@ -463,90 +390,3 @@ jobs: |
463 | 390 | working-directory: ${{env.BUILD_DIR}} |
464 | 391 | run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test |
465 | 392 |
|
466 | | - L0: |
467 | | - uses: ./.github/workflows/reusable_gpu.yml |
468 | | - with: |
469 | | - provider: "LEVEL_ZERO" |
470 | | - runner: "L0" |
471 | | - L0-BMG: |
472 | | - uses: ./.github/workflows/reusable_gpu.yml |
473 | | - with: |
474 | | - provider: "LEVEL_ZERO" |
475 | | - runner: "L0-BMG" |
476 | | - CUDA: |
477 | | - uses: ./.github/workflows/reusable_gpu.yml |
478 | | - with: |
479 | | - provider: "CUDA" |
480 | | - runner: "CUDA" |
481 | | - |
482 | | - # Full execution of QEMU tests |
483 | | - QEMU: |
484 | | - uses: ./.github/workflows/reusable_qemu.yml |
485 | | - with: |
486 | | - short_run: false |
487 | | - # Beside the 2 LTS Ubuntu, we also test this on the latest Ubuntu - to be updated |
488 | | - # every 6 months, so we verify the latest version of packages (compilers, etc.). |
489 | | - os: "['ubuntu-22.04', 'ubuntu-24.04', 'ubuntu-25.04']" |
490 | | - |
491 | | - Benchmarks: |
492 | | - uses: ./.github/workflows/reusable_benchmarks.yml |
493 | | - permissions: |
494 | | - contents: write |
495 | | - pull-requests: write |
496 | | - with: |
497 | | - pr_no: '0' |
498 | | - bench_script_params: > |
499 | | - --save Baseline_PVC |
500 | | - --filter umf-benchmark |
501 | | -
|
502 | | - # Run benchmarks with the latest SYCL (with the latest UMF copied into the SYCL) |
503 | | - # to verify the compatibility. |
504 | | - # |
505 | | - # TODO: re-enable this job, when nightly sycl builds are again available; |
506 | | - # the last one available (as of 24.07.2025) is not working properly with |
507 | | - # compute benchmarks. Now, we could only build sycl from sources, or find a |
508 | | - # matching version of compute benchmarks with last nightly package. |
509 | | - Benchmarks-sycl: |
510 | | - if: false |
511 | | - uses: ./.github/workflows/reusable_benchmarks.yml |
512 | | - permissions: |
513 | | - contents: write |
514 | | - pull-requests: write |
515 | | - with: |
516 | | - pr_no: '0' |
517 | | - bench_script_params: >- |
518 | | - --adapter level_zero_v2 |
519 | | - --compute-runtime |
520 | | - --build-igc |
521 | | - --preset Minimal |
522 | | - --exit-on-failure |
523 | | - runner: 'L0_PERF_ARC' |
524 | | - compatibility: '1' |
525 | | - |
526 | | - SYCL: |
527 | | - uses: ./.github/workflows/reusable_sycl.yml |
528 | | - |
529 | | - alpine: |
530 | | - name: Alpine |
531 | | - env: |
532 | | - HOST_WORKDIR: ${{github.workspace}} |
533 | | - WORKDIR: /unified-memory-framework |
534 | | - strategy: |
535 | | - matrix: |
536 | | - build_type: [Debug, Release] |
537 | | - runs-on: ubuntu-latest |
538 | | - |
539 | | - steps: |
540 | | - - name: Checkout repository |
541 | | - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 |
542 | | - with: |
543 | | - fetch-depth: 0 |
544 | | - |
545 | | - - name: Build Alpine image |
546 | | - run: | |
547 | | - docker build . -f .github/docker/alpine-3.21.Dockerfile -t umf-alpine-3.21 |
548 | | -
|
549 | | - - name: Run UMF build on Alpine image |
550 | | - run: | |
551 | | - docker run --rm -i -v $HOST_WORKDIR:$WORKDIR \ |
552 | | - umf-alpine-3.21 $WORKDIR/.github/scripts/alpine_build.sh ${{matrix.build_type}} $WORKDIR |
0 commit comments