CI (sanitize) #117
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI (sanitize) | |
| on: | |
| workflow_dispatch: # allows manual triggering | |
| push: | |
| branches: | |
| - master | |
| paths: [ | |
| '.github/workflows/build-sanitize.yml', | |
| '**/CMakeLists.txt', | |
| '**/.cmake', | |
| '**/*.h', | |
| '**/*.hpp', | |
| '**/*.c', | |
| '**/*.cpp' | |
| ] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| paths: [ | |
| '.github/workflows/build-sanitize.yml' | |
| ] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | |
| cancel-in-progress: true | |
| env: | |
| GGML_NLOOP: 3 | |
| GGML_N_THREADS: 1 | |
| LLAMA_ARG_LOG_COLORS: 1 | |
| LLAMA_ARG_LOG_PREFIX: 1 | |
| LLAMA_ARG_LOG_TIMESTAMPS: 1 | |
| jobs: | |
| ctest: | |
| continue-on-error: true | |
| strategy: | |
| matrix: | |
| include: | |
| # thread and address doesn't run properly on some self hosted machines, so run it on Github instead | |
| - sanitizer: ADDRESS | |
| machine: ubuntu-24.04 | |
| - sanitizer: THREAD | |
| machine: ubuntu-24.04 | |
| - sanitizer: UNDEFINED | |
| machine: [self-hosted, X64, Linux] | |
| runs-on: ${{ matrix.machine }} | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| # - name: ccache | |
| # uses: ggml-org/ccache-action@v1.2.21 | |
| # if: ${{ matrix.sanitizer != 'UNDEFINED' }} | |
| # with: | |
| # key: ctest-${{ matrix.sanitizer }}-ubuntu-24.04 | |
| # variant: ccache | |
| # evict-old-files: 1d | |
| # save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| # with UNDEFINED sanitizer, we have to build in Debug to avoid GCC 13 false-positive warnings | |
| - name: Build (undefined) | |
| id: cmake_build_undefined | |
| if: ${{ matrix.sanitizer == 'UNDEFINED' }} | |
| run: | | |
| cmake -B build \ | |
| -DCMAKE_BUILD_TYPE=Debug \ | |
| -DLLAMA_FATAL_WARNINGS=ON \ | |
| -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON \ | |
| -DGGML_SANITIZE_${{ matrix.sanitizer }}=ON | |
| cmake --build build --config Debug -j $(nproc) | |
| - name: Build | |
| id: cmake_build | |
| if: ${{ matrix.sanitizer == 'ADDRESS' }} | |
| run: | | |
| cmake -B build \ | |
| -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | |
| -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON \ | |
| -DGGML_SANITIZE_${{ matrix.sanitizer }}=ON | |
| cmake --build build --config RelWithDebInfo -j $(nproc) | |
| - name: Build (no OpenMP) | |
| id: cmake_build_no_openmp | |
| if: ${{ matrix.sanitizer == 'THREAD' }} | |
| run: | | |
| cmake -B build \ | |
| -DCMAKE_BUILD_TYPE=RelWithDebInfo \ | |
| -DLLAMA_SANITIZE_${{ matrix.sanitizer }}=ON \ | |
| -DGGML_SANITIZE_${{ matrix.sanitizer }}=ON \ | |
| -DGGML_OPENMP=OFF | |
| cmake --build build --config RelWithDebInfo -j $(nproc) | |
| - name: Test | |
| id: cmake_test | |
| # skip run in Debug - very slow | |
| if: ${{ matrix.sanitizer != 'UNDEFINED' }} | |
| run: | | |
| cd build | |
| ctest -L main -E tokenizer --verbose --timeout 900 |