|
1 | 1 | # Various non-standard tests, requiring e.g. longer run |
2 | 2 | name: Nightly |
3 | 3 |
|
4 | | -# This job is run at 04:00 UTC every day or on demand. |
5 | 4 | on: |
6 | | - workflow_dispatch: |
7 | | - schedule: |
8 | | - - cron: '0 4 * * *' |
| 5 | + push: |
| 6 | + branches-ignore: |
| 7 | + - 'dependabot/**' |
| 8 | + pull_request: |
| 9 | + |
| 10 | +concurrency: |
| 11 | + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |
| 12 | + cancel-in-progress: true |
9 | 13 |
|
10 | 14 | permissions: |
11 | 15 | contents: read |
12 | | - pull-requests: read |
| 16 | + packages: read |
13 | 17 |
|
14 | 18 | env: |
15 | 19 | BUILD_DIR : "${{github.workspace}}/build" |
16 | 20 | INSTALL_DIR: "${{github.workspace}}/build/install" |
17 | 21 |
|
18 | 22 | jobs: |
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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
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: |
73 | | - strategy: |
74 | | - fail-fast: false |
75 | | - matrix: |
76 | | - tool: ['memcheck', 'drd', 'helgrind'] |
77 | | - name: Valgrind (${{matrix.tool}}) |
78 | | - runs-on: ubuntu-latest |
79 | | - |
80 | | - steps: |
81 | | - - name: Checkout repository |
82 | | - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
83 | | - with: |
84 | | - fetch-depth: 0 |
85 | | - |
86 | | - - name: Install apt packages |
87 | | - run: | |
88 | | - sudo apt-get update |
89 | | - sudo apt-get install -y cmake hwloc libhwloc-dev libnuma-dev libtbb-dev valgrind |
90 | | -
|
91 | | - - name: Configure CMake |
92 | | - run: > |
93 | | - cmake |
94 | | - -B ${{github.workspace}}/build |
95 | | - -DCMAKE_BUILD_TYPE=Debug |
96 | | - -DUMF_FORMAT_CODE_STYLE=OFF |
97 | | - -DUMF_DEVELOPER_MODE=OFF |
98 | | - -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON |
99 | | - -DUMF_BUILD_LEVEL_ZERO_PROVIDER=OFF |
100 | | - -DUMF_BUILD_CUDA_PROVIDER=OFF |
101 | | - -DUMF_USE_VALGRIND=1 |
102 | | - -DUMF_TESTS_FAIL_ON_SKIP=ON |
103 | | -
|
104 | | - - name: Build |
105 | | - run: cmake --build ${{github.workspace}}/build --config Debug -j$(nproc) |
106 | | - |
107 | | - - name: Run tests under valgrind |
108 | | - run: ${{github.workspace}}/test/test_valgrind.sh ${{github.workspace}} ${{github.workspace}}/build ${{matrix.tool}} |
109 | 23 |
|
110 | 24 | # Build and test UMF with different CMake generators on Windows |
111 | 25 | Windows-generators: |
@@ -358,188 +272,3 @@ jobs: |
358 | 272 | with: |
359 | 273 | path: ${{github.workspace}}/vcpkg_pkgs_cache.zip |
360 | 274 | key: ${{ steps.cache.outputs.cache-primary-key }} |
361 | | - |
362 | | - # Scenarios where UMF_LINK_HWLOC_STATICALLY is set to OFF and hwloc is not installed in the system |
363 | | - # The hwloc library is fetched implicitly |
364 | | - Hwloc-fallback: |
365 | | - strategy: |
366 | | - matrix: |
367 | | - include: |
368 | | - - os: 'ubuntu-latest' |
369 | | - build_type: Release |
370 | | - number_of_processors: '$(nproc)' |
371 | | - - os: 'windows-latest' |
372 | | - build_type: Release |
373 | | - number_of_processors: '$Env:NUMBER_OF_PROCESSORS' |
374 | | - name: "Fallback to static hwloc build (${{matrix.os}}), build_type=${{matrix.build_type}})" |
375 | | - runs-on: ${{matrix.os}} |
376 | | - |
377 | | - steps: |
378 | | - - name: Install dependencies |
379 | | - if: matrix.os == 'ubuntu-latest' |
380 | | - run: sudo apt-get install -y libnuma-dev |
381 | | - |
382 | | - - name: Checkout |
383 | | - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
384 | | - with: |
385 | | - fetch-depth: 0 |
386 | | - |
387 | | - - name: Configure build |
388 | | - run: > |
389 | | - cmake |
390 | | - -B ${{env.BUILD_DIR}} |
391 | | - -DCMAKE_BUILD_TYPE=${{matrix.build_type}} |
392 | | - -DUMF_BUILD_SHARED_LIBRARY=ON |
393 | | - -DUMF_BUILD_EXAMPLES=OFF |
394 | | - -DUMF_DEVELOPER_MODE=ON |
395 | | - -DUMF_LINK_HWLOC_STATICALLY=OFF |
396 | | - -DUMF_TESTS_FAIL_ON_SKIP=ON |
397 | | -
|
398 | | - - name: Build UMF |
399 | | - run: > |
400 | | - cmake |
401 | | - --build ${{env.BUILD_DIR}} |
402 | | - --config ${{matrix.build_type}} |
403 | | - -j ${{matrix.number_of_processors}} |
404 | | -
|
405 | | - - name: Run tests |
406 | | - working-directory: ${{env.BUILD_DIR}} |
407 | | - run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test |
408 | | - |
409 | | - Windows-dynamic_mingw_hwloc: |
410 | | - env: |
411 | | - HWLOC_PACKAGE_NAME: hwloc-win64-build-2.10.0 |
412 | | - TBB_PACKAGE_NAME: oneapi-tbb-2021.12.0 |
413 | | - TBB_LIB_DIR: lib\intel64\vc14 |
414 | | - TBB_BIN_DIR: redist\intel64\vc14 |
415 | | - |
416 | | - name: "Windows dynamic UMF + mingw libhwloc" |
417 | | - strategy: |
418 | | - matrix: |
419 | | - build_type: [Release] |
420 | | - |
421 | | - runs-on: 'windows-latest' |
422 | | - |
423 | | - steps: |
424 | | - - name: Checkout |
425 | | - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
426 | | - with: |
427 | | - fetch-depth: 0 |
428 | | - |
429 | | - - name: Get hwloc from official repo (mingw version) |
430 | | - run: | |
431 | | - Invoke-WebRequest -Uri https://download.open-mpi.org/release/hwloc/v2.10/${{env.HWLOC_PACKAGE_NAME}}.zip -OutFile ${{github.workspace}}\${{env.HWLOC_PACKAGE_NAME}}.zip -TimeoutSec 360 |
432 | | - Expand-Archive ${{github.workspace}}\${{env.HWLOC_PACKAGE_NAME}}.zip -DestinationPath ${{github.workspace}} |
433 | | -
|
434 | | - - name: Get TBB from github |
435 | | - run: | |
436 | | - Invoke-WebRequest -Uri https://github.com/oneapi-src/oneTBB/releases/download/v2021.12.0/${{env.TBB_PACKAGE_NAME}}-win.zip -OutFile "${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}-win.zip" -TimeoutSec 360 |
437 | | - Expand-Archive "${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}-win.zip" -DestinationPath ${{github.workspace}} |
438 | | -
|
439 | | - - name: Configure build |
440 | | - run: > |
441 | | - cmake |
442 | | - -B ${{env.BUILD_DIR}} |
443 | | - -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" |
444 | | - -DCMAKE_PREFIX_PATH="${{github.workspace}}\${{env.HWLOC_PACKAGE_NAME}};${{github.workspace}}\${{env.TBB_PACKAGE_NAME}};${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}\${{env.TBB_LIB_DIR}};${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}\${{env.TBB_BIN_DIR}}" |
445 | | - -DUMF_BUILD_SHARED_LIBRARY=ON |
446 | | - -DUMF_BUILD_EXAMPLES=ON |
447 | | - -DUMF_FORMAT_CODE_STYLE=OFF |
448 | | - -DUMF_DEVELOPER_MODE=ON |
449 | | - -DUMF_TESTS_FAIL_ON_SKIP=ON |
450 | | - -DUMF_HWLOC_NAME=libhwloc |
451 | | -
|
452 | | - - name: Build UMF |
453 | | - run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j $Env:NUMBER_OF_PROCESSORS |
454 | | - |
455 | | - - name: Run tests |
456 | | - working-directory: ${{env.BUILD_DIR}} |
457 | | - run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test |
458 | | - |
459 | | - L0: |
460 | | - uses: ./.github/workflows/reusable_gpu.yml |
461 | | - with: |
462 | | - provider: "LEVEL_ZERO" |
463 | | - runner: "L0" |
464 | | - L0-BMG: |
465 | | - uses: ./.github/workflows/reusable_gpu.yml |
466 | | - with: |
467 | | - provider: "LEVEL_ZERO" |
468 | | - runner: "L0-BMG" |
469 | | - CUDA: |
470 | | - uses: ./.github/workflows/reusable_gpu.yml |
471 | | - with: |
472 | | - provider: "CUDA" |
473 | | - runner: "CUDA" |
474 | | - |
475 | | - # Full execution of QEMU tests |
476 | | - QEMU: |
477 | | - uses: ./.github/workflows/reusable_qemu.yml |
478 | | - with: |
479 | | - short_run: false |
480 | | - # Beside the 2 LTS Ubuntu, we also test this on the latest Ubuntu - to be updated |
481 | | - # every 6 months, so we verify the latest version of packages (compilers, etc.). |
482 | | - os: "['ubuntu-22.04', 'ubuntu-24.04', 'ubuntu-25.04']" |
483 | | - |
484 | | - Benchmarks: |
485 | | - uses: ./.github/workflows/reusable_benchmarks.yml |
486 | | - permissions: |
487 | | - contents: write |
488 | | - pull-requests: write |
489 | | - with: |
490 | | - pr_no: '0' |
491 | | - bench_script_params: > |
492 | | - --save Baseline_PVC |
493 | | - --filter umf-benchmark |
494 | | -
|
495 | | - # Run benchmarks with the latest SYCL (with the latest UMF copied into the SYCL) |
496 | | - # to verify the compatibility. |
497 | | - # |
498 | | - # TODO: re-enable this job, when nightly sycl builds are again available; |
499 | | - # the last one available (as of 24.07.2025) is not working properly with |
500 | | - # compute benchmarks. Now, we could only build sycl from sources, or find a |
501 | | - # matching version of compute benchmarks with last nightly package. |
502 | | - Benchmarks-sycl: |
503 | | - if: false |
504 | | - uses: ./.github/workflows/reusable_benchmarks.yml |
505 | | - permissions: |
506 | | - contents: write |
507 | | - pull-requests: write |
508 | | - with: |
509 | | - pr_no: '0' |
510 | | - bench_script_params: >- |
511 | | - --adapter level_zero_v2 |
512 | | - --compute-runtime |
513 | | - --build-igc |
514 | | - --preset Minimal |
515 | | - --exit-on-failure |
516 | | - runner: 'L0_PERF_ARC' |
517 | | - compatibility: '1' |
518 | | - |
519 | | - SYCL: |
520 | | - uses: ./.github/workflows/reusable_sycl.yml |
521 | | - |
522 | | - alpine: |
523 | | - name: Alpine |
524 | | - env: |
525 | | - HOST_WORKDIR: ${{github.workspace}} |
526 | | - WORKDIR: /unified-memory-framework |
527 | | - strategy: |
528 | | - matrix: |
529 | | - build_type: [Debug, Release] |
530 | | - runs-on: ubuntu-latest |
531 | | - |
532 | | - steps: |
533 | | - - name: Checkout repository |
534 | | - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 |
535 | | - with: |
536 | | - fetch-depth: 0 |
537 | | - |
538 | | - - name: Build Alpine image |
539 | | - run: | |
540 | | - docker build . -f .github/docker/alpine-3.21.Dockerfile -t umf-alpine-3.21 |
541 | | -
|
542 | | - - name: Run UMF build on Alpine image |
543 | | - run: | |
544 | | - docker run --rm -i -v $HOST_WORKDIR:$WORKDIR \ |
545 | | - umf-alpine-3.21 $WORKDIR/.github/scripts/alpine_build.sh ${{matrix.build_type}} $WORKDIR |
0 commit comments