name: CI (openvino) on: workflow_dispatch: # allows manual triggering push: branches: - master paths: [ '.github/workflows/build-openvino.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', ] pull_request: types: [opened, synchronize, reopened] paths: [ '.github/workflows/build-openvino.yml', 'ggml/src/ggml-openvino/**' ] 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: ubuntu-24-openvino: runs-on: [self-hosted, Linux, Intel, OpenVINO] env: # Sync versions in build-openvino.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile OPENVINO_VERSION_MAJOR: "2026.2" OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857" steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: Dependencies id: depends run: | sudo apt-get update sudo apt-get install -y build-essential libssl-dev libtbb12 cmake ninja-build python3-pip sudo apt-get install -y ocl-icd-opencl-dev opencl-headers opencl-clhpp-headers intel-opencl-icd - name: Setup OpenVINO Toolkit uses: ./.github/actions/linux-setup-openvino with: path: ./openvino_toolkit version_major: ${{ env.OPENVINO_VERSION_MAJOR }} version_full: ${{ env.OPENVINO_VERSION_FULL }} - name: Install OpenVINO dependencies run: | cd ./openvino_toolkit chmod +x ./install_dependencies/install_openvino_dependencies.sh echo "Y" | sudo -E ./install_dependencies/install_openvino_dependencies.sh - name: Build id: cmake_build run: | source ./openvino_toolkit/setupvars.sh cmake -B build/ReleaseOV -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DGGML_OPENVINO=ON time cmake --build build/ReleaseOV --config Release --parallel - name: Test (CPU) id: cmake_test_cpu # TODO: fix and re-enable the `test-llama-archs` test below run: | cd ${{ github.workspace }} ctest --test-dir build/ReleaseOV -L main -E "test-llama-archs" --verbose --timeout 2000 - name: Test (GPU) id: cmake_test_gpu # TODO: fix and re-enable the `test-llama-archs` test below run: | cd ${{ github.workspace }} export GGML_OPENVINO_DEVICE=GPU ctest --test-dir build/ReleaseOV -L main -E "test-llama-archs" --verbose --timeout 3000 openvino-windows-2022: runs-on: windows-2022 env: # Sync versions in build-openvino.yml, build-self-hosted.yml, release.yml, build-cache.yml, .devops/openvino.Dockerfile OPENVINO_VERSION_MAJOR: "2026.2" OPENVINO_VERSION_FULL: "2026.2.0.21903.52ddc073857" steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: ccache uses: ggml-org/ccache-action@v1.2.21 with: key: openvino-windows-2022 variant: ccache evict-old-files: 1d save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} - name: Setup Cache uses: actions/cache@v5 id: cache-openvino with: path: ./openvino_toolkit key: cache-gha-openvino-toolkit-v${{ env.OPENVINO_VERSION_FULL }}-${{ runner.os }} - name: Setup OpenVINO Toolkit if: steps.cache-openvino.outputs.cache-hit != 'true' uses: ./.github/actions/windows-setup-openvino with: path: ./openvino_toolkit version_major: ${{ env.OPENVINO_VERSION_MAJOR }} version_full: ${{ env.OPENVINO_VERSION_FULL }} - name: Install OpenCL using vcpkg shell: powershell run: | git clone https://github.com/microsoft/vcpkg C:\vcpkg C:\vcpkg\bootstrap-vcpkg.bat C:\vcpkg\vcpkg install opencl - name: Build id: cmake_build shell: cmd run: | REM Find extracted OpenVINO folder dynamically for /d %%i in (openvino_toolkit\*) do set OPENVINO_ROOT=%%i if not exist "%OPENVINO_ROOT%\runtime\cmake\OpenVINOConfig.cmake" ( echo ERROR: OpenVINOConfig.cmake not found exit /b 1 ) call "%OPENVINO_ROOT%\setupvars.bat" cmake -B build\ReleaseOV -G "Visual Studio 17 2022" ^ -A x64 ^ -DCMAKE_BUILD_TYPE=Release ^ -DGGML_OPENVINO=ON ^ -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake cmake --build build\ReleaseOV --config Release -- /m - name: Test (CPU) id: cmake_test_cpu shell: cmd # TODO: fix and re-enable the `test-llama-archs` test below run: | REM Find extracted OpenVINO folder dynamically for /d %%i in (openvino_toolkit\*) do set OPENVINO_ROOT=%%i call "%OPENVINO_ROOT%\setupvars.bat" cd build ctest --test-dir ReleaseOV -L main -E "test-llama-archs" -C Release --verbose --timeout 3000