From aeb217692a86bb4ad71fe9c8a6dd0c6bd554a92e Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Fri, 18 Sep 2026 12:53:21 +0530 Subject: [PATCH 1/3] Add CUDA 13.0.0 jobs to the native compile workflow. Extend the cublas matrix and Gather Binaries layout so a Compile run can produce cu13.0.0 artifacts next to cu12.4.0 without changing the managed loader or NuGet packages yet. --- .github/workflows/compile.yml | 37 +++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 51691dfc4..1f42b1b41 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -405,7 +405,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-22.04, windows-2022] - cuda: ['12.4.0'] + cuda: ['12.4.0', '13.0.0'] runs-on: ${{ matrix.os }} steps: - name: Clone @@ -417,7 +417,7 @@ jobs: ref: '${{ github.event.inputs.llama_cpp_commit }}' - uses: Jimver/cuda-toolkit@v0.2.15 - if: runner.os == 'Windows' + if: runner.os == 'Windows' && matrix.cuda == '12.4.0' id: cuda-toolkit-windows with: cuda: ${{ matrix.cuda }} @@ -425,13 +425,30 @@ jobs: sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' - uses: Jimver/cuda-toolkit@v0.2.15 - if: runner.os == 'Linux' + if: runner.os == 'Linux' && matrix.cuda == '12.4.0' id: cuda-toolkit-linux with: cuda: ${{ matrix.cuda }} method: 'network' linux-local-args: '["--toolkit"]' + - uses: Jimver/cuda-toolkit@v0.2.36 + if: runner.os == 'Windows' && matrix.cuda != '12.4.0' + id: cuda-toolkit-windows-13 + with: + cuda: ${{ matrix.cuda }} + method: 'network' + sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' + use-github-cache: false + + - uses: Jimver/cuda-toolkit@v0.2.36 + if: runner.os == 'Linux' && matrix.cuda != '12.4.0' + id: cuda-toolkit-linux-13 + with: + cuda: ${{ matrix.cuda }} + method: 'network' + linux-local-args: '["--toolkit"]' + - name: Build (Windows) if: runner.os == 'Windows' id: cmake_build_windows @@ -688,7 +705,7 @@ jobs: - name: Rearrange Files run: | # Make all directories at once - mkdir --parents deps/{noavx,avx,avx2,avx512,linux-arm64,musl-noavx,musl-avx,musl-avx2,musl-avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu12.4.0,vulkan,android-arm64-v8a,android-x86,android-x86_64,win-arm64} + mkdir --parents deps/{noavx,avx,avx2,avx512,linux-arm64,musl-noavx,musl-avx,musl-avx2,musl-avx512,osx-arm64,osx-x64,osx-x64-rosetta2,cu12.4.0,cu13.0.0,vulkan,android-arm64-v8a,android-x86,android-x86_64,win-arm64} # Linux cp artifacts/ggml-bin-linux-noavx-x64.so/libggml.so deps/noavx/libggml.so @@ -821,6 +838,12 @@ jobs: cp artifacts/llama-bin-win-cublas-cu12.4.0-x64.dll/llama.dll deps/cu12.4.0/llama.dll cp artifacts/mtmd-bin-win-cublas-cu12.4.0-x64.dll/mtmd.dll deps/cu12.4.0/mtmd.dll + cp artifacts/ggml-bin-win-cublas-cu13.0.0-x64.dll/ggml.dll deps/cu13.0.0/ggml.dll + cp artifacts/ggml-base-bin-win-cublas-cu13.0.0-x64.dll/ggml-base.dll deps/cu13.0.0/ggml-base.dll + cp artifacts/ggml-cuda-bin-win-cublas-cu13.0.0-x64.dll/ggml-cuda.dll deps/cu13.0.0/ggml-cuda.dll + cp artifacts/llama-bin-win-cublas-cu13.0.0-x64.dll/llama.dll deps/cu13.0.0/llama.dll + cp artifacts/mtmd-bin-win-cublas-cu13.0.0-x64.dll/mtmd.dll deps/cu13.0.0/mtmd.dll + # Linux CUDA cp artifacts/ggml-bin-linux-cublas-cu12.4.0-x64.so/libggml.so deps/cu12.4.0/libggml.so cp artifacts/ggml-base-bin-linux-cublas-cu12.4.0-x64.so/libggml-base.so deps/cu12.4.0/libggml-base.so @@ -828,6 +851,12 @@ jobs: cp artifacts/llama-bin-linux-cublas-cu12.4.0-x64.so/libllama.so deps/cu12.4.0/libllama.so cp artifacts/mtmd-bin-linux-cublas-cu12.4.0-x64.so/libmtmd.so deps/cu12.4.0/libmtmd.so + cp artifacts/ggml-bin-linux-cublas-cu13.0.0-x64.so/libggml.so deps/cu13.0.0/libggml.so + cp artifacts/ggml-base-bin-linux-cublas-cu13.0.0-x64.so/libggml-base.so deps/cu13.0.0/libggml-base.so + cp artifacts/ggml-cuda-bin-linux-cublas-cu13.0.0-x64.so/libggml-cuda.so deps/cu13.0.0/libggml-cuda.so + cp artifacts/llama-bin-linux-cublas-cu13.0.0-x64.so/libllama.so deps/cu13.0.0/libllama.so + cp artifacts/mtmd-bin-linux-cublas-cu13.0.0-x64.so/libmtmd.so deps/cu13.0.0/libmtmd.so + # Windows Vulkan cp artifacts/ggml-bin-win-vulkan-x64.dll/ggml.dll deps/vulkan/ggml.dll cp artifacts/ggml-base-bin-win-vulkan-x64.dll/ggml-base.dll deps/vulkan/ggml-base.dll From 2f6bc03186e7fc54a5ed15b39eabbe97070f1ef4 Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Wed, 23 Sep 2026 19:12:10 +0530 Subject: [PATCH 2/3] Use one cuda-toolkit step per OS for every CUDA version. --- .github/workflows/compile.yml | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 1f42b1b41..1f063c1c1 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -416,34 +416,17 @@ jobs: fetch-depth: 0 ref: '${{ github.event.inputs.llama_cpp_commit }}' - - uses: Jimver/cuda-toolkit@v0.2.15 - if: runner.os == 'Windows' && matrix.cuda == '12.4.0' - id: cuda-toolkit-windows - with: - cuda: ${{ matrix.cuda }} - method: 'network' - sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' - - - uses: Jimver/cuda-toolkit@v0.2.15 - if: runner.os == 'Linux' && matrix.cuda == '12.4.0' - id: cuda-toolkit-linux - with: - cuda: ${{ matrix.cuda }} - method: 'network' - linux-local-args: '["--toolkit"]' - - uses: Jimver/cuda-toolkit@v0.2.36 - if: runner.os == 'Windows' && matrix.cuda != '12.4.0' - id: cuda-toolkit-windows-13 + if: runner.os == 'Windows' + id: cuda-toolkit-windows with: cuda: ${{ matrix.cuda }} method: 'network' sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' - use-github-cache: false - uses: Jimver/cuda-toolkit@v0.2.36 - if: runner.os == 'Linux' && matrix.cuda != '12.4.0' - id: cuda-toolkit-linux-13 + if: runner.os == 'Linux' + id: cuda-toolkit-linux with: cuda: ${{ matrix.cuda }} method: 'network' From fb9ddaf418d9508accd24bb225cf14a6f72df292 Mon Sep 17 00:00:00 2001 From: Chandan Kumar Date: Wed, 23 Sep 2026 19:23:59 +0530 Subject: [PATCH 3/3] Install crt and nvvm for CUDA 13 on Windows. --- .github/workflows/compile.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index 1f063c1c1..f08920724 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -406,6 +406,11 @@ jobs: matrix: os: [ubuntu-22.04, windows-2022] cuda: ['12.4.0', '13.0.0'] + include: + - cuda: '12.4.0' + win-sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' + - cuda: '13.0.0' + win-sub-packages: '["nvcc", "crt", "nvvm", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' runs-on: ${{ matrix.os }} steps: - name: Clone @@ -422,7 +427,7 @@ jobs: with: cuda: ${{ matrix.cuda }} method: 'network' - sub-packages: '["nvcc", "cudart", "cublas", "cublas_dev", "thrust", "visual_studio_integration"]' + sub-packages: ${{ matrix.win-sub-packages }} - uses: Jimver/cuda-toolkit@v0.2.36 if: runner.os == 'Linux'