name: CI (sycl) on: workflow_dispatch: # allows manual triggering push: branches: - master paths: [ '.github/workflows/build-sycl.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp' ] pull_request: types: [opened, synchronize, reopened] paths: [ '.github/workflows/build-sycl.yml', 'ggml/src/ggml-sycl/**' ] cache-mode: none permissions: contents: read 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-sycl: strategy: matrix: build: [fp32, fp16] include: - build: fp32 fp16: OFF - build: fp16 fp16: ON runs-on: ubuntu-24.04 env: ONEAPI_ROOT: /opt/intel/oneapi/ ONEAPI_INSTALLER_VERSION: "2026.1" LEVEL_ZERO_VERSION: "1.33.1" LEVEL_ZERO_UBUNTU_VERSION: "u24.04" continue-on-error: true steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: Download & Install oneAPI shell: bash run: | cd /tmp echo "Download oneAPI Deep Learning Essentials installation package" wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/b5c100a7-8052-4e88-90e2-63d9916a998b/intel-deep-learning-essentials-2026.1.4.17_offline.sh -O intel-deep-learning-essentials_offline.sh echo "Install oneAPI Deep Learning Essentials components" sudo bash intel-deep-learning-essentials_offline.sh -s -a --silent --eula accept echo "Download oneDNN installation package" wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/94c3dbac-0852-45be-a57d-21c204cada3e/intel-onednn-2026.0.2.46_offline.sh -O intel-onednn_offline.sh echo "Install oneDNN components" sudo bash intel-onednn_offline.sh -s -a --silent --eula accept - name: Install Level Zero SDK shell: bash run: | cd /tmp # v1.33.x renamed the Debian packages to libze1 / libze-dev wget -q "https://github.com/oneapi-src/level-zero/releases/download/v${LEVEL_ZERO_VERSION}/libze1_${LEVEL_ZERO_VERSION}%2B${LEVEL_ZERO_UBUNTU_VERSION}_amd64.deb" -O libze1.deb wget -q "https://github.com/oneapi-src/level-zero/releases/download/v${LEVEL_ZERO_VERSION}/libze-dev_${LEVEL_ZERO_VERSION}%2B${LEVEL_ZERO_UBUNTU_VERSION}_amd64.deb" -O libze-dev.deb sudo apt-get install -y ./libze1.deb ./libze-dev.deb - name: Dependencies id: depends run: | sudo apt-get update sudo apt-get install -y libssl-dev - name: ccache uses: ggml-org/ccache-action@v1.2.24 with: restore: false save: false - name: ccache-buckets-restore uses: ./.github/actions/ccache-buckets env: HF_TOKEN: ${{ secrets.HF_TOKEN_CI }} with: key: sycl-ubuntu-24-${{ matrix.build }} folder: llama.cpp hf_bucket: ggml-org/cache - name: Build id: cmake_build run: | source /opt/intel/oneapi/setvars.sh cmake -B build \ -G "Ninja" \ -DCMAKE_BUILD_TYPE=Release \ -DGGML_SYCL=ON \ -DCMAKE_C_COMPILER=icx \ -DCMAKE_CXX_COMPILER=icpx \ -DGGML_NATIVE=OFF \ -DGGML_SYCL_F16=${{ matrix.fp16 }} \ -DGGML_SYCL_SUPPORT_LEVEL_ZERO_API=ON \ -DGGML_SYCL_DNN=ON \ -DCMAKE_CXX_FLAGS="-fsycl-unnamed-lambda" \ -DCMAKE_EXE_LINKER_FLAGS="-fsycl-unnamed-lambda" time cmake --build build --config Release -j $(nproc) - name: ccache-buckets-save if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} uses: ./.github/actions/ccache-buckets env: HF_TOKEN: ${{ secrets.HF_TOKEN_CACHE_OUTPUT }} with: key: sycl-ubuntu-24-${{ matrix.build }} folder: llama.cpp evict-old-files: 1d hf_bucket: ggml-org/cache save: true windows-latest-sycl: runs-on: windows-2022 cache-mode: write permissions: actions: write contents: read defaults: run: shell: bash env: WINDOWS_DLE_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/a51104eb-6f4a-4a0e-9dae-1b81b0c81ae1/intel-deep-learning-essentials-2026.1.4.16_offline.exe WINDOWS_ONEDNN_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/34e28083-d04b-46a3-826c-8c1d00bf1e1c/intel-onednn-2026.0.2.47_offline.exe WINDOWS_DPCPP_MKL: intel.oneapi.win.cpp-dpcpp-common:intel.oneapi.win.mkl.devel:intel.oneapi.win.tbb.devel WINDOWS_DNNL: intel.oneapi.win.dnnl LEVEL_ZERO_SDK_URL: https://github.com/oneapi-src/level-zero/releases/download/v1.33.1/level-zero-win-sdk-1.33.1.zip ONEAPI_ROOT: "C:/Program Files (x86)/Intel/oneAPI" ONEAPI_INSTALLER_VERSION: "2026.1" steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: Download & Install oneAPI shell: bash run: | scripts/install-oneapi.bat $WINDOWS_DLE_URL $WINDOWS_DPCPP_MKL scripts/install-oneapi.bat $WINDOWS_ONEDNN_URL $WINDOWS_DNNL - name: Install Level Zero SDK shell: pwsh run: | Invoke-WebRequest -Uri "${{ env.LEVEL_ZERO_SDK_URL }}" -OutFile "level-zero-win-sdk.zip" Expand-Archive -Path "level-zero-win-sdk.zip" -DestinationPath "C:/level-zero-sdk" -Force "LEVEL_ZERO_V1_SDK_PATH=C:/level-zero-sdk" | Out-File -FilePath $env:GITHUB_ENV -Append - name: ccache uses: ggml-org/ccache-action@v1.2.24 with: key: sycl-windows-latest variant: ccache evict-old-files: 1d save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} # TODO: add ssl support ; we will also need to modify win-build-sycl.bat to accept user-specified args - name: Build id: cmake_build run: examples/sycl/win-build-sycl.bat - name: ccache-clear uses: ./.github/actions/ccache-clear env: GH_TOKEN: ${{ github.token }} with: key: sycl-windows-latest older: 5m min: 1 dry-run: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master' }}