LLAMA_ARG_LOG_TIMESTAMPS: 1
jobs:
- android:
+ default:
runs-on: ubuntu-latest
steps:
cd examples/llama.android
./gradlew build --no-daemon
- android-ndk:
+ ndk:
runs-on: ubuntu-latest
container:
image: 'ghcr.io/snapdragon-toolchain/arm64-android:v0.3'
name: llama-cpp-android-arm64-cpu
path: pkg-adb/llama.cpp
- android-arm64:
+ arm64:
runs-on: ubuntu-latest
env:
id: checkout
uses: actions/checkout@v6
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: android-arm64
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+ # note : disabled to spare some cache space (https://github.com/ggml-org/llama.cpp/pull/23789)
+ # for some reason, the ccache does not improve the build time in this case
+ # example:
+ # cache off: https://github.com/ggerganov/tmp2/actions/runs/26534713799/job/78160400831
+ # cache on: https://github.com/ggerganov/tmp2/actions/runs/26534713799/job/78224189394
+ #
+ #- name: ccache
+ # uses: ggml-org/ccache-action@v1.2.21
+ # with:
+ # key: android-ubuntu-arm64
+ # evict-old-files: 1d
+ # save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
- name: Set up JDK
uses: actions/setup-java@v5
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-arm64
+ key: apple-arm64
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-x64
+ key: apple-x64
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
id: checkout
uses: actions/checkout@v6
+ # TODO: this likely does not do anything - if yes, remove it
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-ios
+ key: apple-ios
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
id: checkout
uses: actions/checkout@v6
+ # TODO: this likely does not do anything - if yes, remove it
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-tvos
+ key: apple-tvos
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
id: checkout
uses: actions/checkout@v6
+ # TODO: this likely does not do anything - if yes, remove it
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: apple-visionos
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
- name: Build
id: cmake_build
run: |
id: checkout
uses: actions/checkout@v6
+ # TODO: this likely does not do anything - if yes, remove it
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-swift
+ key: apple-swift
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
--- /dev/null
+name: CI (cpu)
+
+on:
+ workflow_dispatch: # allows manual triggering
+ push:
+ branches:
+ - master
+ paths: [
+ '.github/workflows/build-cpu.yml',
+ '.github/workflows/build-cmake-pkg.yml',
+ '**/CMakeLists.txt',
+ '**/.cmake',
+ '**/*.h',
+ '**/*.hpp',
+ '**/*.c',
+ '**/*.cpp',
+ '**/*.cu',
+ '**/*.cuh',
+ '**/*.swift',
+ '**/*.m',
+ '**/*.metal',
+ '**/*.comp',
+ '**/*.glsl',
+ '**/*.wgsl'
+ ]
+
+ pull_request:
+ types: [opened, synchronize, reopened]
+ paths: [
+ '.github/workflows/build-cpu.yml',
+ '.github/workflows/build-cmake-pkg.yml',
+ '**/CMakeLists.txt',
+ '**/.cmake',
+ '**/*.h',
+ '**/*.hpp',
+ '**/*.c',
+ '**/*.cpp',
+ '**/*.cu',
+ '**/*.cuh',
+ '**/*.swift',
+ '**/*.m',
+ '**/*.metal',
+ '**/*.comp',
+ '**/*.glsl',
+ '**/*.wgsl'
+ ]
+
+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:
+ build-cmake-pkg:
+ uses: ./.github/workflows/build-cmake-pkg.yml
+
+ ubuntu:
+ strategy:
+ matrix:
+ include:
+ - build: 'x64'
+ os: ubuntu-22.04
+ - build: 'arm64'
+ os: ubuntu-24.04-arm
+
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: cpu-${{ matrix.os }}
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
+ - name: Build Dependencies
+ id: build_depends
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y --no-install-recommends \
+ python3 python3-pip python3-dev python3-wheel \
+ libjpeg-dev build-essential libssl-dev \
+ git-lfs
+
+ - name: Toolchain workaround (GCC 14)
+ if: ${{ contains(matrix.os, 'ubuntu-24.04') }}
+ run: |
+ sudo apt-get install -y gcc-14 g++-14
+ echo "CC=gcc-14" >> "$GITHUB_ENV"
+ echo "CXX=g++-14" >> "$GITHUB_ENV"
+
+ - name: Python Dependencies
+ id: python_depends
+ run: |
+ export PIP_BREAK_SYSTEM_PACKAGES="1"
+ python3 -m pip install --upgrade pip setuptools
+ pip3 install ./gguf-py
+
+ - name: Build
+ id: cmake_build
+ run: |
+ cmake -B build \
+ -DLLAMA_FATAL_WARNINGS=ON \
+ -DGGML_RPC=ON
+ time cmake --build build --config Release -j $(nproc)
+
+ - name: Test
+ id: cmake_test
+ run: |
+ cd build
+ ctest -L main --verbose --timeout 900
+
+ - name: Test llama2c conversion
+ id: llama2c_test
+ run: |
+ cd build
+ echo "Fetch tokenizer"
+ wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories260K/tok512.bin
+ echo "Fetch llama2c model"
+ wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories260K/stories260K.bin
+ ./bin/llama-convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf
+ ./bin/llama-completion -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256
+
+ windows:
+ runs-on: windows-2025
+
+ env:
+ OPENBLAS_VERSION: 0.3.23
+ SDE_VERSION: 9.33.0-2024-01-07
+ VULKAN_VERSION: 1.4.313.2
+
+ strategy:
+ matrix:
+ include:
+ - build: 'x64-cpu-static'
+ arch: 'x64'
+ defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DBUILD_SHARED_LIBS=OFF'
+ - build: 'x64-openblas'
+ arch: 'x64'
+ defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_OPENMP=OFF -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'
+ - build: 'x64-vulkan'
+ arch: 'x64'
+ defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_VULKAN=ON'
+ - build: 'arm64'
+ arch: 'arm64'
+ defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON'
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: cpu-windows-2025-${{ matrix.build }}
+ variant: ccache
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
+ - name: Download OpenBLAS
+ id: get_openblas
+ if: ${{ matrix.build == 'x64-openblas' }}
+ run: |
+ curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
+ curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
+ mkdir $env:RUNNER_TEMP/openblas
+ tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
+ $vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
+ $msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
+ $lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
+ & $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
+
+ - name: Install Vulkan SDK
+ id: get_vulkan
+ if: ${{ matrix.build == 'x64-vulkan' }}
+ run: |
+ curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/vulkansdk-windows-X64-${env:VULKAN_VERSION}.exe"
+ & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install
+ Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}"
+ Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin"
+
+ - name: Install Ninja
+ id: install_ninja
+ run: |
+ choco install ninja
+
+ - name: Build
+ id: cmake_build
+ run: |
+ cmake -S . -B build ${{ matrix.defines }} `
+ -DLLAMA_BUILD_BORINGSSL=ON
+ cmake --build build --config Release -j ${env:NUMBER_OF_PROCESSORS}
+
+ - name: Add libopenblas.dll
+ id: add_libopenblas_dll
+ if: ${{ matrix.build == 'x64-openblas' }}
+ run: |
+ cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build/bin/Release/openblas.dll
+ cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt
+
+ - name: Test
+ id: cmake_test
+ if: ${{ matrix.arch == 'x64' }}
+ run: |
+ cd build
+ ctest -L main -C Release --verbose --timeout 900
+
+ # TODO: disabled for now, consider adding tests for all CPU variants instead
+ # - name: Test (Intel SDE)
+ # id: cmake_test_sde
+ # if: ${{ matrix.build == 'avx512-x64' && env.HAS_AVX512F == '0' }} # use Intel SDE for AVX-512 emulation
+ # run: |
+ # curl.exe -o $env:RUNNER_TEMP/sde.tar.xz -L "https://downloadmirror.intel.com/813591/sde-external-${env:SDE_VERSION}-win.tar.xz"
+ # # for some weird reason windows tar doesn't like sde tar.xz
+ # 7z x "-o${env:RUNNER_TEMP}" $env:RUNNER_TEMP/sde.tar.xz
+ # 7z x "-o${env:RUNNER_TEMP}" $env:RUNNER_TEMP/sde.tar
+ # $sde = $(join-path $env:RUNNER_TEMP sde-external-${env:SDE_VERSION}-win/sde.exe)
+ # cd build
+ # $env:LLAMA_SKIP_TESTS_SLOW_ON_EMULATOR = 1
+ # & $sde -future -- ctest -L main -C Release --verbose --timeout 900
--- /dev/null
+name: CI (CUDA, ubuntu)
+
+on:
+ workflow_dispatch: # allows manual triggering
+ push:
+ branches:
+ - master
+ paths: [
+ '.github/workflows/build-cuda-ubuntu.yml',
+ '**/CMakeLists.txt',
+ '**/.cmake',
+ '**/*.h',
+ '**/*.hpp',
+ '**/*.c',
+ '**/*.cpp',
+ '**/*.cu',
+ '**/*.cuh'
+ ]
+
+ pull_request:
+ types: [opened, synchronize, reopened]
+ paths: [
+ '.github/workflows/build-cuda-ubuntu.yml',
+ 'ggml/src/ggml-cuda/**'
+ ]
+
+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:
+ cuda:
+ runs-on: ubuntu-24.04
+ container: nvidia/cuda:12.6.2-devel-ubuntu24.04
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: Install dependencies
+ env:
+ DEBIAN_FRONTEND: noninteractive
+ run: |
+ apt update
+ apt install -y cmake build-essential ninja-build libgomp1 git libssl-dev
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: cuda-ubuntu-24.04-cuda
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
+ - name: Build with CMake
+ # TODO: Remove GGML_CUDA_CUB_3DOT2 flag once CCCL 3.2 is bundled within CTK and that CTK version is used in this project
+ run: |
+ cmake -S . -B build -G Ninja \
+ -DLLAMA_FATAL_WARNINGS=ON \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_CUDA_ARCHITECTURES=89-real \
+ -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined \
+ -DGGML_NATIVE=OFF \
+ -DGGML_CUDA=ON \
+ -DGGML_CUDA_CUB_3DOT2=ON
+ cmake --build build
+
+ hip:
+ runs-on: ubuntu-22.04
+ container: rocm/dev-ubuntu-22.04:6.1.2
+
+ 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 git cmake rocblas-dev hipblas-dev libssl-dev rocwmma-dev
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: cuda-ubuntu-22.04-hip
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
+ - name: Build with native CMake HIP support
+ id: cmake_build
+ run: |
+ cmake -B build -S . \
+ -DCMAKE_HIP_COMPILER="$(hipconfig -l)/clang" \
+ -DGGML_HIP_ROCWMMA_FATTN=ON \
+ -DGPU_TARGETS="gfx1030" \
+ -DGGML_HIP=ON
+ cmake --build build --config Release -j $(nproc)
+
+ musa:
+ runs-on: ubuntu-22.04
+ container: mthreads/musa:rc4.3.0-devel-ubuntu22.04-amd64
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: Dependencies
+ id: depends
+ run: |
+ apt-get update
+ apt-get install -y build-essential git cmake libssl-dev
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: cuda-ubuntu-22.04-musa
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
+ - name: Build with native CMake MUSA support
+ id: cmake_build
+ run: |
+ cmake -B build -S . \
+ -DGGML_MUSA=ON
+ time cmake --build build --config Release -j $(nproc)
--- /dev/null
+name: CI (CUDA, windows)
+
+# TODO: this workflow is only triggered manually because it is very heavy on the CI
+# when we provision dedicated windows runners, we can enable it for pushes too
+# note: running this workflow manually will populate the ccache for the release builds
+# this can be used before merging a PR to speed up the release workflow
+on:
+ workflow_dispatch: # allows manual triggering
+
+# note: this will run in queue with the release workflow
+concurrency:
+ group: release
+ queue: max
+
+env:
+ GGML_NLOOP: 3
+ GGML_N_THREADS: 1
+ LLAMA_ARG_LOG_COLORS: 1
+ LLAMA_ARG_LOG_PREFIX: 1
+ LLAMA_ARG_LOG_TIMESTAMPS: 1
+
+jobs:
+ cuda:
+ runs-on: windows-2022
+
+ strategy:
+ matrix:
+ cuda: ['12.4', '13.3']
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: release-windows-2022-x64-cuda-${{ matrix.cuda }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
+
+ - name: Install Cuda Toolkit
+ uses: ./.github/actions/windows-setup-cuda
+ with:
+ cuda_version: ${{ matrix.cuda }}
+
+ - name: Install Ninja
+ id: install_ninja
+ run: |
+ choco install ninja
+
+ - name: Build
+ id: cmake_build
+ shell: cmd
+ # TODO: Remove GGML_CUDA_CUB_3DOT2 flag once CCCL 3.2 is bundled within CTK and that CTK version is used in this project
+ run: |
+ call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
+ cmake -S . -B build -G "Ninja Multi-Config" ^
+ -DLLAMA_BUILD_SERVER=ON ^
+ -DLLAMA_BUILD_BORINGSSL=ON ^
+ -DGGML_NATIVE=OFF ^
+ -DGGML_BACKEND_DL=ON ^
+ -DGGML_CPU_ALL_VARIANTS=ON ^
+ -DGGML_CUDA=ON ^
+ -DGGML_RPC=ON ^
+ -DGGML_CUDA_CUB_3DOT2=ON
+ set /A NINJA_JOBS=%NUMBER_OF_PROCESSORS%-1
+ cmake --build build --config Release -j %NINJA_JOBS% -t ggml
+ cmake --build build --config Release
+
+ hip:
+ runs-on: windows-2022
+
+ env:
+ # Make sure this is in sync with build-cache.yml
+ HIPSDK_INSTALLER_VERSION: "26.Q1"
+
+ strategy:
+ matrix:
+ include:
+ # sync with release.yml
+ - name: "radeon"
+ gpu_targets: "gfx1150;gfx1151;gfx1200;gfx1201;gfx1100;gfx1101;gfx1102;gfx1030;gfx1031;gfx1032"
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: Grab rocWMMA package
+ id: grab_rocwmma
+ run: |
+ curl -o rocwmma.deb "https://repo.radeon.com/rocm/apt/7.2.1/pool/main/r/rocwmma-dev/rocwmma-dev_2.2.0.70201-81~24.04_amd64.deb"
+ 7z x rocwmma.deb
+ 7z x data.tar
+
+ - name: Use ROCm Installation Cache
+ uses: actions/cache@v5
+ id: cache-rocm
+ with:
+ path: C:\Program Files\AMD\ROCm
+ key: cache-gha-rocm-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ runner.os }}
+
+ - name: Setup ROCm
+ if: steps.cache-rocm.outputs.cache-hit != 'true'
+ uses: ./.github/actions/windows-setup-rocm
+ with:
+ version: ${{ env.HIPSDK_INSTALLER_VERSION }}
+
+ - name: Verify ROCm
+ id: verify
+ run: |
+ # Find and test ROCm installation
+ $clangPath = Get-ChildItem 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | Select-Object -First 1
+ if (-not $clangPath) {
+ Write-Error "ROCm installation not found"
+ exit 1
+ }
+ & $clangPath.FullName --version
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ # TODO: this build does not match the build in release.yml, so we use a different cache key
+ # ideally, the builds should match, similar to the CUDA build above so that we would be able
+ # to populate the ccache for the release with manual runs of this workflow
+ #key: release-windows-2022-x64-hip-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ matrix.name }}
+ key: cuda-windows-2022-x64-hip-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ matrix.name }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
+
+ - name: Build
+ id: cmake_build
+ run: |
+ $env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)
+ $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}"
+ cmake -G "Unix Makefiles" -B build -S . `
+ -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" `
+ -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" `
+ -DCMAKE_CXX_FLAGS="-I$($PWD.Path.Replace('\', '/'))/opt/rocm-7.2.1/include/" `
+ -DCMAKE_BUILD_TYPE=Release `
+ -DLLAMA_BUILD_BORINGSSL=ON `
+ -DROCM_DIR="${env:HIP_PATH}" `
+ -DGGML_HIP=ON `
+ -DGGML_HIP_ROCWMMA_FATTN=ON `
+ -DGPU_TARGETS="gfx1100" `
+ -DGGML_RPC=ON
+ cmake --build build -j ${env:NUMBER_OF_PROCESSORS}
+++ /dev/null
-name: CI (hip)
-
-on:
- workflow_dispatch: # allows manual triggering
- push:
- branches:
- - master
- paths: [
- '.github/workflows/build-hip.yml',
- '**/CMakeLists.txt',
- '**/.cmake',
- '**/*.h',
- '**/*.hpp',
- '**/*.c',
- '**/*.cpp',
- '**/*.cu',
- '**/*.cuh'
- ]
-
- pull_request:
- types: [opened, synchronize, reopened]
- paths: [
- '.github/workflows/build-hip.yml',
- 'ggml/src/ggml-cuda/**'
- ]
-
-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-22-hip:
- runs-on: ubuntu-22.04
- container: rocm/dev-ubuntu-22.04:6.1.2
-
- 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 git cmake rocblas-dev hipblas-dev libssl-dev rocwmma-dev
-
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: ubuntu-22-hip
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Build with native CMake HIP support
- id: cmake_build
- run: |
- cmake -B build -S . \
- -DCMAKE_HIP_COMPILER="$(hipconfig -l)/clang" \
- -DGGML_HIP_ROCWMMA_FATTN=ON \
- -DGPU_TARGETS="gfx1030" \
- -DGGML_HIP=ON
- cmake --build build --config Release -j $(nproc)
-
- windows-latest-hip:
- runs-on: windows-2022
-
- env:
- # Make sure this is in sync with build-cache.yml
- HIPSDK_INSTALLER_VERSION: "26.Q1"
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: Grab rocWMMA package
- id: grab_rocwmma
- run: |
- curl -o rocwmma.deb "https://repo.radeon.com/rocm/apt/7.2.1/pool/main/r/rocwmma-dev/rocwmma-dev_2.2.0.70201-81~24.04_amd64.deb"
- 7z x rocwmma.deb
- 7z x data.tar
-
- - name: Use ROCm Installation Cache
- uses: actions/cache@v5
- id: cache-rocm
- with:
- path: C:\Program Files\AMD\ROCm
- key: cache-gha-rocm-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ runner.os }}
-
- - name: Setup ROCm
- if: steps.cache-rocm.outputs.cache-hit != 'true'
- uses: ./.github/actions/windows-setup-rocm
- with:
- version: ${{ env.HIPSDK_INSTALLER_VERSION }}
-
- - name: Verify ROCm
- id: verify
- run: |
- # Find and test ROCm installation
- $clangPath = Get-ChildItem 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | Select-Object -First 1
- if (-not $clangPath) {
- Write-Error "ROCm installation not found"
- exit 1
- }
- & $clangPath.FullName --version
-
- - name: Install ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: ${{ github.job }}
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Build
- id: cmake_build
- run: |
- $env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path)
- $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}"
- cmake -G "Unix Makefiles" -B build -S . `
- -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" `
- -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" `
- -DCMAKE_CXX_FLAGS="-I$($PWD.Path.Replace('\', '/'))/opt/rocm-7.2.1/include/" `
- -DCMAKE_BUILD_TYPE=Release `
- -DLLAMA_BUILD_BORINGSSL=ON `
- -DROCM_DIR="${env:HIP_PATH}" `
- -DGGML_HIP=ON `
- -DGGML_HIP_ROCWMMA_FATTN=ON `
- -DGPU_TARGETS="gfx1100" `
- -DGGML_RPC=ON
- cmake --build build -j ${env:NUMBER_OF_PROCESSORS}
-
- ubuntu-22-musa:
- runs-on: ubuntu-22.04
- container: mthreads/musa:rc4.3.0-devel-ubuntu22.04-amd64
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: Dependencies
- id: depends
- run: |
- apt-get update
- apt-get install -y build-essential git cmake libssl-dev
-
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: ubuntu-22-musa
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Build with native CMake MUSA support
- id: cmake_build
- run: |
- cmake -B build -S . \
- -DGGML_MUSA=ON
- time cmake --build build --config Release -j $(nproc)
#- name: ccache
# uses: ggml-org/ccache-action@v1.2.16
# with:
- # key: windows-msys2
+ # key: msys-windows-2025-x64
# variant: ccache
# evict-old-files: 1d
# save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
LLAMA_ARG_LOG_TIMESTAMPS: 1
jobs:
-
- windows-latest-opencl-adreno:
+ windows-2025-opencl-adreno:
runs-on: windows-2025
steps:
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: windows-latest-llvm-arm64-opencl-adreno
+ key: opencl-windows-2025-x64
variant: ccache
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
if: runner.environment == 'github-hosted'
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-24-openvino-${{ matrix.variant }}-no-preset-v1
+ key: openvino-ubuntu-24.04-${{ matrix.variant }}-no-preset-v1
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
#- name: ccache
# uses: ggml-org/ccache-action@afde29e5b5422e5da23cb1f639e8baecadeadfc3 # https://github.com/ggml-org/ccache-action/pull/1
# with:
- # key: ubuntu-cpu-riscv64-native
+ # key: riscv-ubuntu-native
# evict-old-files: 1d
# save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
#- name: ccache
# uses: ggml-org/ccache-action@afde29e5b5422e5da23cb1f639e8baecadeadfc3 # https://github.com/ggml-org/ccache-action/pull/1
# with:
- # key: ubuntu-riscv64-native-sanitizer-${{ matrix.sanitizer }}-${{ matrix.build_type }}
+ # key: riscv-ubuntu-native-sanitizer-${{ matrix.sanitizer }}-${{ matrix.build_type }}
# evict-old-files: 1d
# save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
LLAMA_ARG_LOG_TIMESTAMPS: 1
jobs:
-
ubuntu-latest-rpc:
runs-on: ubuntu-latest
id: checkout
uses: actions/checkout@v6
- #- name: ccache
- # uses: ggml-org/ccache-action@v1.2.21
- # with:
- # key: ubuntu-latest-sanitizer-${{ matrix.sanitizer }}
- # evict-old-files: 1d
- # save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- #- name: Dependencies
- # id: depends
- # run: |
- # sudo apt-get update
- # sudo apt-get install build-essential libssl-dev
-
# with UNDEFINED sanitizer, we have to build in Debug to avoid GCC 13 false-positive warnings
- name: Build (undefined)
id: cmake_build_undefined
sudo apt-get update
sudo apt-get install -y cmake
- # note: sparing some ccache since these jobs run on dedicated runners that are not part of the organitzation
- #- name: ccache
- # uses: ggml-org/ccache-action@v1.2.21
- # with:
- # key: arm64-cpu-kleidiai-graviton4
- # evict-old-files: 1d
- # save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- name: Test
id: ggml-ci
run: |
# - name: ccache
# uses: ggml-org/ccache-action@v1.2.21
# with:
-# key: ubuntu-24-sycl-${{ matrix.build }}
+# key: sycl-ubuntu-24-${{ matrix.build }}
# evict-old-files: 1d
# save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
#
# - name: ccache
# uses: ggml-org/ccache-action@v1.2.21
# with:
-# key: windows-latest-sycl
+# key: sycl-windows-latest
# variant: ccache
# evict-old-files: 1d
# save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
LLAMA_ARG_LOG_TIMESTAMPS: 1
jobs:
- ubuntu-24-vulkan-llvmpipe:
+ ubuntu:
+ strategy:
+ matrix:
+ include:
+ - build: 'x64'
+ os: ubuntu-24.04
+ - build: 'arm64'
+ os: ubuntu-24.04-arm
+
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v6
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.21
+ with:
+ key: vulkan-${{ matrix.os }}
+ variant: ccache
+ evict-old-files: 1d
+ save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+
+ - name: Dependencies
+ id: depends
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y gcc-14 g++-14 build-essential glslc libvulkan-dev spirv-headers libssl-dev ninja-build
+ echo "CC=gcc-14" >> "$GITHUB_ENV"
+ echo "CXX=g++-14" >> "$GITHUB_ENV"
+
+ - name: Configure
+ id: cmake_configure
+ run: |
+ cmake -B build \
+ -G "Ninja" \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DGGML_BACKEND_DL=ON \
+ -DGGML_CPU_ALL_VARIANTS=ON \
+ -DGGML_VULKAN=ON
+
+ - name: Build
+ id: cmake_build
+ run: |
+ time cmake --build build -j $(nproc)
+
+ ubuntu-llvmpipe:
runs-on: ubuntu-24.04
steps:
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-24-vulkan-llvmpipe
+ key: vulkan-ubuntu-24.04-llvmpipe
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
LLAMA_ARG_LOG_TIMESTAMPS: 1
jobs:
- macos-latest-webgpu:
+ macos:
runs-on: macos-latest
steps:
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-webgpu
+ key: webgpu-macos-latest
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
cd build
ctest -L main --verbose --timeout 900
- ubuntu-24-webgpu:
+ ubuntu:
runs-on: ubuntu-24.04
steps:
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-24-webgpu
+ key: webgpu-ubuntu-24.04
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
# test-backend-ops is too slow on llvmpipe, skip it
ctest -L main -E test-backend-ops --verbose --timeout 900
- ubuntu-24-webgpu-wasm:
- runs-on: ${{ 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
+ ubuntu-wasm:
+ strategy:
+ matrix:
+ include:
+ - build: 'x64'
+ os: ubuntu-24.04
+ - build: 'arm64'
+ os: ubuntu-24.04-arm
+
+ runs-on: ${{ matrix.os }}
steps:
- name: Clone
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-24-webgpu-wasm
+ key: webgpu-${{ matrix.os }}-wasm
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+++ /dev/null
-name: CI
-
-on:
- workflow_dispatch: # allows manual triggering
- push:
- branches:
- - master
- paths: [
- '.github/workflows/build.yml',
- '.github/workflows/build-cmake-pkg.yml',
- '**/CMakeLists.txt',
- '**/.cmake',
- '**/*.h',
- '**/*.hpp',
- '**/*.c',
- '**/*.cpp',
- '**/*.cu',
- '**/*.cuh',
- '**/*.swift',
- '**/*.m',
- '**/*.metal',
- '**/*.comp',
- '**/*.glsl',
- '**/*.wgsl'
- ]
-
- pull_request:
- types: [opened, synchronize, reopened]
- paths: [
- '.github/workflows/build.yml',
- '.github/workflows/build-cmake-pkg.yml',
- '**/CMakeLists.txt',
- '**/.cmake',
- '**/*.h',
- '**/*.hpp',
- '**/*.c',
- '**/*.cpp',
- '**/*.cu',
- '**/*.cuh',
- '**/*.swift',
- '**/*.m',
- '**/*.metal',
- '**/*.comp',
- '**/*.glsl',
- '**/*.wgsl'
- ]
-
-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:
- build-cmake-pkg:
- uses: ./.github/workflows/build-cmake-pkg.yml
-
- ubuntu-cpu:
- strategy:
- matrix:
- include:
- - build: 'x64'
- os: ubuntu-22.04
- - build: 'arm64'
- os: ubuntu-24.04-arm
-
- runs-on: ${{ matrix.os }}
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: ubuntu-cpu-${{ matrix.build }}
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Build Dependencies
- id: build_depends
- run: |
- sudo apt-get update
- sudo apt-get install -y --no-install-recommends \
- python3 python3-pip python3-dev python3-wheel \
- libjpeg-dev build-essential libssl-dev \
- git-lfs
-
- - name: Toolchain workaround (GCC 14)
- if: ${{ contains(matrix.os, 'ubuntu-24.04') }}
- run: |
- sudo apt-get install -y gcc-14 g++-14
- echo "CC=gcc-14" >> "$GITHUB_ENV"
- echo "CXX=g++-14" >> "$GITHUB_ENV"
-
- - name: Python Dependencies
- id: python_depends
- run: |
- export PIP_BREAK_SYSTEM_PACKAGES="1"
- python3 -m pip install --upgrade pip setuptools
- pip3 install ./gguf-py
-
- - name: Build
- id: cmake_build
- run: |
- cmake -B build \
- -DLLAMA_FATAL_WARNINGS=ON \
- -DGGML_RPC=ON
- time cmake --build build --config Release -j $(nproc)
-
- - name: Test
- id: cmake_test
- run: |
- cd build
- ctest -L main --verbose --timeout 900
-
- - name: Test llama2c conversion
- id: llama2c_test
- run: |
- cd build
- echo "Fetch tokenizer"
- wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories260K/tok512.bin
- echo "Fetch llama2c model"
- wget https://huggingface.co/karpathy/tinyllamas/resolve/main/stories260K/stories260K.bin
- ./bin/llama-convert-llama2c-to-ggml --copy-vocab-from-model ./tok512.bin --llama2c-model stories260K.bin --llama2c-output-model stories260K.gguf
- ./bin/llama-completion -m stories260K.gguf -p "One day, Lily met a Shoggoth" -n 500 -c 256
-
- ubuntu-24-vulkan:
- strategy:
- matrix:
- include:
- - build: 'x64'
- os: ubuntu-24.04
- - build: 'arm64'
- os: ubuntu-24.04-arm
-
- runs-on: ${{ matrix.os }}
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: Dependencies
- id: depends
- run: |
- sudo apt-get update
- sudo apt-get install -y gcc-14 g++-14 build-essential glslc libvulkan-dev spirv-headers libssl-dev ninja-build
- echo "CC=gcc-14" >> "$GITHUB_ENV"
- echo "CXX=g++-14" >> "$GITHUB_ENV"
-
- - name: Configure
- id: cmake_configure
- run: |
- cmake -B build \
- -G "Ninja" \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DGGML_BACKEND_DL=ON \
- -DGGML_CPU_ALL_VARIANTS=ON \
- -DGGML_VULKAN=ON
-
- - name: Build
- id: cmake_build
- run: |
- time cmake --build build -j $(nproc)
-
- windows-latest:
- runs-on: windows-2025
-
- env:
- OPENBLAS_VERSION: 0.3.23
- SDE_VERSION: 9.33.0-2024-01-07
- VULKAN_VERSION: 1.4.313.2
-
- strategy:
- matrix:
- include:
- - build: 'x64-cpu-static'
- arch: 'x64'
- defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DBUILD_SHARED_LIBS=OFF'
- - build: 'x64-openblas'
- arch: 'x64'
- defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_OPENMP=OFF -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'
- - build: 'x64-vulkan'
- arch: 'x64'
- defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/x64-windows-llvm.cmake -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DGGML_VULKAN=ON'
- - build: 'arm64'
- arch: 'arm64'
- defines: '-G "Ninja Multi-Config" -D CMAKE_TOOLCHAIN_FILE=cmake/arm64-windows-llvm.cmake -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON'
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: windows-latest-${{ matrix.build }}
- variant: ccache
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Download OpenBLAS
- id: get_openblas
- if: ${{ matrix.build == 'x64-openblas' }}
- run: |
- curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
- curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
- mkdir $env:RUNNER_TEMP/openblas
- tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
- $vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
- $msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
- $lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
- & $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll
-
- - name: Install Vulkan SDK
- id: get_vulkan
- if: ${{ matrix.build == 'x64-vulkan' }}
- run: |
- curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/vulkansdk-windows-X64-${env:VULKAN_VERSION}.exe"
- & "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install
- Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}"
- Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin"
-
- - name: Install Ninja
- id: install_ninja
- run: |
- choco install ninja
-
- - name: Build
- id: cmake_build
- run: |
- cmake -S . -B build ${{ matrix.defines }} `
- -DLLAMA_BUILD_BORINGSSL=ON
- cmake --build build --config Release -j ${env:NUMBER_OF_PROCESSORS}
-
- - name: Add libopenblas.dll
- id: add_libopenblas_dll
- if: ${{ matrix.build == 'x64-openblas' }}
- run: |
- cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build/bin/Release/openblas.dll
- cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt
-
- - name: Test
- id: cmake_test
- if: ${{ matrix.arch == 'x64' }}
- run: |
- cd build
- ctest -L main -C Release --verbose --timeout 900
-
- # TODO: disabled for now, consider adding tests for all CPU variants instead
- # - name: Test (Intel SDE)
- # id: cmake_test_sde
- # if: ${{ matrix.build == 'avx512-x64' && env.HAS_AVX512F == '0' }} # use Intel SDE for AVX-512 emulation
- # run: |
- # curl.exe -o $env:RUNNER_TEMP/sde.tar.xz -L "https://downloadmirror.intel.com/813591/sde-external-${env:SDE_VERSION}-win.tar.xz"
- # # for some weird reason windows tar doesn't like sde tar.xz
- # 7z x "-o${env:RUNNER_TEMP}" $env:RUNNER_TEMP/sde.tar.xz
- # 7z x "-o${env:RUNNER_TEMP}" $env:RUNNER_TEMP/sde.tar
- # $sde = $(join-path $env:RUNNER_TEMP sde-external-${env:SDE_VERSION}-win/sde.exe)
- # cd build
- # $env:LLAMA_SKIP_TESTS_SLOW_ON_EMULATOR = 1
- # & $sde -future -- ctest -L main -C Release --verbose --timeout 900
-
- ubuntu-latest-cuda:
- runs-on: ubuntu-latest
- container: nvidia/cuda:12.6.2-devel-ubuntu24.04
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: Install dependencies
- env:
- DEBIAN_FRONTEND: noninteractive
- run: |
- apt update
- apt install -y cmake build-essential ninja-build libgomp1 git libssl-dev
-
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: ubuntu-latest-cuda
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Build with CMake
- # TODO: Remove GGML_CUDA_CUB_3DOT2 flag once CCCL 3.2 is bundled within CTK and that CTK version is used in this project
- run: |
- cmake -S . -B build -G Ninja \
- -DLLAMA_FATAL_WARNINGS=ON \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_CUDA_ARCHITECTURES=89-real \
- -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined \
- -DGGML_NATIVE=OFF \
- -DGGML_CUDA=ON \
- -DGGML_CUDA_CUB_3DOT2=ON
- cmake --build build
-
- windows-2022-cuda:
- runs-on: windows-2022
-
- strategy:
- matrix:
- cuda: ['12.4']
-
- steps:
- - name: Clone
- id: checkout
- uses: actions/checkout@v6
-
- - name: Install ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: windows-cuda-${{ matrix.cuda }}
- variant: ccache
- evict-old-files: 1d
- save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
-
- - name: Install Cuda Toolkit
- uses: ./.github/actions/windows-setup-cuda
- with:
- cuda_version: ${{ matrix.cuda }}
-
- - name: Install Ninja
- id: install_ninja
- run: |
- choco install ninja
-
- - name: Build
- id: cmake_build
- shell: cmd
- # TODO: Remove GGML_CUDA_CUB_3DOT2 flag once CCCL 3.2 is bundled within CTK and that CTK version is used in this project
- run: |
- call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
- cmake -S . -B build -G "Ninja Multi-Config" ^
- -DLLAMA_BUILD_SERVER=ON ^
- -DLLAMA_BUILD_BORINGSSL=ON ^
- -DGGML_NATIVE=OFF ^
- -DGGML_BACKEND_DL=ON ^
- -DGGML_CPU_ALL_VARIANTS=ON ^
- -DGGML_CUDA=ON ^
- -DGGML_RPC=ON ^
- -DGGML_CUDA_CUB_3DOT2=ON
- set /A NINJA_JOBS=%NUMBER_OF_PROCESSORS%-1
- cmake --build build --config Release -j %NINJA_JOBS% -t ggml
- cmake --build build --config Release
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-22-hip-quality-check
+ key: hip-quality-check-ubuntu-22.04
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
'**/*.glsl'
]
-concurrency:
- group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
- cancel-in-progress: true
-
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
CMAKE_ARGS: "-DLLAMA_BUILD_EXAMPLES=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=ON -DLLAMA_BUILD_SERVER=ON -DGGML_RPC=ON"
-jobs:
+# note: run this workflow one at a time for better cache reuse
+concurrency:
+ group: release
+ queue: max
+jobs:
check_release:
- runs-on: [self-hosted, fast]
+ runs-on: ubuntu-slim
outputs:
should_release: ${{ steps.check.outputs.should_release }}
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: macos-latest-${{ matrix.arch }}
- evict-old-files: 1d
+ key: release-${{ matrix.os }}-${{ matrix.arch }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Build
id: cmake_build
if: ${{ matrix.build != 's390x' }}
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-cpu-${{ matrix.build }}
- evict-old-files: 1d
+ key: release-${{ matrix.os }}-cpu
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Dependencies
id: depends
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-vulkan-${{ matrix.build }}
- evict-old-files: 1d
+ key: release-${{ matrix.os }}-vulkan
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Dependencies
id: depends
cache: "npm"
cache-dependency-path: "tools/ui/package-lock.json"
- - name: ccache
- uses: ggml-org/ccache-action@v1.2.21
- with:
- key: android-arm64
- evict-old-files: 1d
+ # note : disabled to spare some cache space (https://github.com/ggml-org/llama.cpp/pull/23789)
+ # for some reason, the ccache does not improve the build time in this case
+ # example:
+ # cache off: https://github.com/ggerganov/tmp2/actions/runs/26534713799/job/78160400831
+ # cache on: https://github.com/ggerganov/tmp2/actions/runs/26534713799/job/78224189394
+ #
+ #- name: ccache
+ # uses: ggml-org/ccache-action@v1.2.21
+ # with:
+ # key: release-android-arm64
+ # append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Set up JDK
uses: actions/setup-java@v5
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-24-openvino-release-no-preset-v1
- evict-old-files: 1d
+ key: release-ubuntu-24.04-openvino-release-no-preset-v1
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Dependencies
run: |
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: windows-latest-cpu-${{ matrix.arch }}
- variant: ccache
- evict-old-files: 1d
+ key: release-windows-2025-${{ matrix.arch }}-cpu
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Install Ninja
run: |
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: windows-latest-${{ matrix.backend }}-${{ matrix.arch }}
- variant: ccache
- evict-old-files: 1d
+ key: release-windows-2025-${{ matrix.arch }}-${{ matrix.backend }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Install Vulkan SDK
id: get_vulkan
cache: "npm"
cache-dependency-path: "tools/ui/package-lock.json"
- - name: Install ccache
+ - name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: windows-cuda-${{ matrix.cuda }}
- variant: ccache
- evict-old-files: 1d
+ key: release-windows-2022-x64-cuda-${{ matrix.cuda }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Install Cuda Toolkit
uses: ./.github/actions/windows-setup-cuda
# - name: ccache
# uses: ggml-org/ccache-action@v1.2.21
# with:
-# key: windows-latest-sycl
-# variant: ccache
-# evict-old-files: 1d
+# key: release-windows-2022-x64-sycl
+# append-timestamp: false # note: use this only with non-concurrent jobs!
#
# - name: Build
# id: cmake_build
# - name: ccache
# uses: ggml-org/ccache-action@v1.2.21
# with:
-# key: ubuntu-24-sycl-${{ matrix.build }}
-# evict-old-files: 1d
-# save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
+# key: release-ubuntu-24.04-sycl
+# append-timestamp: false # note: use this only with non-concurrent jobs!
#
# - name: Build
# id: cmake_build
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: ubuntu-rocm-${{ matrix.ROCM_VERSION }}-${{ matrix.build }}
- evict-old-files: 1d
+ key: release-ubuntu-22.04-rocm-${{ matrix.ROCM_VERSION }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Dependencies
id: depends
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: windows-latest-hip-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ matrix.name }}-x64
- evict-old-files: 1d
+ key: release-windows-2022-x64-hip-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ matrix.name }}
+ append-timestamp: false # note: use this only with non-concurrent jobs!
- name: Install ROCm
if: steps.cache-rocm.outputs.cache-hit != 'true'
jobs:
ubuntu:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-24.04
name: ubuntu (${{ matrix.wf_name }})
strategy:
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: server-ubuntu-default
+ key: server-ubuntu-24.04-x64
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
- name: ccache
uses: ggml-org/ccache-action@v1.2.21
with:
- key: server-windows-default
+ key: server-windows-2025-x64
evict-old-files: 1d
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}