mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2026-08-12 22:31:11 +04:00
178 lines
6.0 KiB
YAML
178 lines
6.0 KiB
YAML
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:
|
|
GH_TOKEN: ${{ github.token }}
|
|
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
|
|
|
|
permissions:
|
|
actions: write
|
|
|
|
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 }}
|
|
|
|
- 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-clear
|
|
uses: ./.github/actions/ccache-clear
|
|
with:
|
|
key: release-windows-2022-x64-cuda-${{ matrix.cuda }}
|
|
|
|
hip:
|
|
runs-on: windows-2022
|
|
|
|
permissions:
|
|
actions: write
|
|
|
|
env:
|
|
# Make sure this is in sync with build-cache.yml
|
|
ROCM_VERSION: "7.14.0"
|
|
|
|
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: Cache ROCm Installation
|
|
# uses: actions/cache@v5
|
|
# id: cache-rocm
|
|
# with:
|
|
# path: C:\TheRock\build
|
|
# key: rocm-wheels-${{ env.ROCM_VERSION }}-multi-arch-${{ runner.os }}
|
|
|
|
- name: Setup ROCm
|
|
# if: steps.cache-rocm.outputs.cache-hit != 'true'
|
|
uses: ./.github/actions/windows-setup-rocm
|
|
with:
|
|
version: ${{ env.ROCM_VERSION }}
|
|
|
|
- name: Setup ROCm Environment
|
|
run: |
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
# Activate venv from cache or fresh install
|
|
& C:\TheRock\build\.venv\Scripts\Activate.ps1
|
|
|
|
# Expand the devel tree (idempotent; no-op if already done during install)
|
|
rocm-sdk init
|
|
if ($LASTEXITCODE -ne 0) { throw "rocm-sdk init failed with exit code $LASTEXITCODE" }
|
|
|
|
# Get ROCm installation paths using the rocm-sdk CLI tool
|
|
$rocmPath = (rocm-sdk path --root)
|
|
if (-not $rocmPath) { throw "rocm-sdk path --root returned empty - devel package may not be installed" }
|
|
$rocmPath = $rocmPath.Trim()
|
|
$cmakePath = (rocm-sdk path --cmake).Trim()
|
|
$binPath = (rocm-sdk path --bin).Trim()
|
|
write-host "ROCm root: $rocmPath"
|
|
|
|
echo "HIP_PATH=$rocmPath" >> $env:GITHUB_ENV
|
|
echo "CMAKE_PREFIX_PATH=$cmakePath" >> $env:GITHUB_ENV
|
|
echo "HIP_DEVICE_LIB_PATH=$rocmPath\lib\llvm\amdgcn\bitcode" >> $env:GITHUB_ENV
|
|
echo "HIP_PLATFORM=amd" >> $env:GITHUB_ENV
|
|
echo "LLVM_PATH=$rocmPath\lib\llvm" >> $env:GITHUB_ENV
|
|
echo "$binPath" >> $env:GITHUB_PATH
|
|
|
|
# Keep venv in PATH for subsequent steps
|
|
echo "C:\TheRock\build\.venv\Scripts" >> $env:GITHUB_PATH
|
|
|
|
- name: Verify ROCm
|
|
id: verify
|
|
run: |
|
|
# Test the ROCm clang shipped in the installed wheel
|
|
& "${env:HIP_PATH}\lib\llvm\bin\clang.exe" --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.ROCM_VERSION }}-${{ matrix.name }}
|
|
key: cuda-windows-2022-x64-hip-${{ env.ROCM_VERSION }}-${{ matrix.name }}
|
|
|
|
- name: Build
|
|
id: cmake_build
|
|
run: |
|
|
cmake -G "Unix Makefiles" -B build -S . `
|
|
-DCMAKE_PREFIX_PATH="${env:HIP_PATH}" `
|
|
-DCMAKE_C_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang.exe" `
|
|
-DCMAKE_CXX_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang++.exe" `
|
|
-DCMAKE_HIP_COMPILER="${env:HIP_PATH}\lib\llvm\bin\clang.exe" `
|
|
-DCMAKE_BUILD_TYPE=Release `
|
|
-DLLAMA_BUILD_BORINGSSL=ON `
|
|
-DHIP_PATH="${env:HIP_PATH}" `
|
|
-DGGML_HIP=ON `
|
|
-DGPU_TARGETS="gfx1100" `
|
|
-DGGML_RPC=ON
|
|
cmake --build build -j ${env:NUMBER_OF_PROCESSORS}
|
|
|
|
- name: ccache-clear
|
|
uses: ./.github/actions/ccache-clear
|
|
with:
|
|
#key: release-windows-2022-x64-hip-${{ env.ROCM_VERSION }}-${{ matrix.name }}
|
|
key: cuda-windows-2022-x64-hip-${{ env.ROCM_VERSION }}-${{ matrix.name }}
|