From c5bea751b19d56e42a096a04104df04f94b6276c Mon Sep 17 00:00:00 2001 From: Ahmed Hassan-Albanna <31392636+bannazz@users.noreply.github.com> Date: Sat, 25 Oct 2025 06:52:55 +0300 Subject: [PATCH 1/6] Add Ubuntu 22 CUDA to release.yml Adds a job to package a release for ubuntu 22.04 CUDA. --- .github/workflows/release.yml | 60 ++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cab3ba9e68..7c8b02215d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -242,7 +242,65 @@ jobs: with: path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip name: llama-bin-ubuntu-vulkan-x64.zip - + + ubuntu-22-cuda: + runs-on: ubuntu-22.04 + strategy: + matrix: + cuda: ['12.4'] + steps: + - name: Clone + id: checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: ccache + uses: ggml-org/ccache-action@v1.2.16 + with: + key: ubuntu-22-cmake-cuda-${{ matrix.cuda }} + evict-old-files: 1d + + - name: Dependencies + id: depends + run: | + wget -q https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb + sudo dpkg -i cuda-keyring_1.0-1_all.deb + sudo apt-get update -y + sudo apt-get install -y cuda-toolkit-${{ matrix.cuda }} build-essential libcurl4-openssl-dev + + - name: Build + id: cmake_build + run: | + export PATH=/usr/local/cuda-${{ matrix.cuda }}/bin:$PATH + export LD_LIBRARY_PATH=/usr/local/cuda-${{ matrix.cuda }}/lib64:$LD_LIBRARY_PATH + cmake -B build \ + -DCMAKE_INSTALL_RPATH='$ORIGIN' \ + -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ + -DGGML_BACKEND_DL=ON \ + -DGGML_NATIVE=OFF \ + -DGGML_CPU_ALL_VARIANTS=ON \ + -DGGML_CUDA=ON \ + -DCMAKE_CUDA_ARCHITECTURES="60;61;70;75;80;86;89;90" \ + ${{ env.CMAKE_ARGS }} + cmake --build build --config Release -j $(nproc) + + - name: Determine tag name + id: tag + uses: ./.github/actions/get-tag-name + + - name: Pack artifacts + id: pack_artifacts + run: | + cp LICENSE ./build/bin/ + zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip ./build/bin/* + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip + name: llama-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip + windows-cpu: runs-on: windows-2025 From 528b036326b0da5904fa1fe98cf0773681db4132 Mon Sep 17 00:00:00 2001 From: Ahmed Hassan-Albanna <31392636+bannazz@users.noreply.github.com> Date: Sat, 25 Oct 2025 06:56:44 +0300 Subject: [PATCH 2/6] make yml checker happy Removed white spaces. --- .github/workflows/release.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7c8b02215d..02e67b101d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -242,7 +242,7 @@ jobs: with: path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-vulkan-x64.zip name: llama-bin-ubuntu-vulkan-x64.zip - + ubuntu-22-cuda: runs-on: ubuntu-22.04 strategy: @@ -254,13 +254,13 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - + - name: ccache uses: ggml-org/ccache-action@v1.2.16 with: key: ubuntu-22-cmake-cuda-${{ matrix.cuda }} evict-old-files: 1d - + - name: Dependencies id: depends run: | @@ -268,7 +268,7 @@ jobs: sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt-get update -y sudo apt-get install -y cuda-toolkit-${{ matrix.cuda }} build-essential libcurl4-openssl-dev - + - name: Build id: cmake_build run: | @@ -284,23 +284,23 @@ jobs: -DCMAKE_CUDA_ARCHITECTURES="60;61;70;75;80;86;89;90" \ ${{ env.CMAKE_ARGS }} cmake --build build --config Release -j $(nproc) - + - name: Determine tag name id: tag uses: ./.github/actions/get-tag-name - + - name: Pack artifacts id: pack_artifacts run: | cp LICENSE ./build/bin/ zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip ./build/bin/* - + - name: Upload artifacts uses: actions/upload-artifact@v4 with: path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip name: llama-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip - + windows-cpu: runs-on: windows-2025 From 6c837e8cb27f780004756698a7646550e711c6d2 Mon Sep 17 00:00:00 2001 From: Ahmed Hassan-Albanna <31392636+bannazz@users.noreply.github.com> Date: Sun, 26 Oct 2025 06:25:03 +0300 Subject: [PATCH 3/6] add standalone support adds a standalone release for ubuntu-22-cuda (works without having to download about 7 Gigs for nvidia's cuda toolkit and deps) --- .github/workflows/release.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 02e67b101d..82b7d3c362 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -294,7 +294,10 @@ jobs: run: | cp LICENSE ./build/bin/ zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip ./build/bin/* - + cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublas.so.12 ./build/bin/ + cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublasLt.so.12 ./build/bin/ + cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcudart.so.12 ./build/bin/ + zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64-standalone.zip ./build/bin/* - name: Upload artifacts uses: actions/upload-artifact@v4 with: From 4471aefdbc6d95138dae2500e8f49304e7ba39cc Mon Sep 17 00:00:00 2001 From: Ahmed Hassan-Albanna <31392636+bannazz@users.noreply.github.com> Date: Sun, 26 Oct 2025 06:38:16 +0300 Subject: [PATCH 4/6] support cached builds adds support for building from cached builds --- .github/workflows/release.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 82b7d3c362..42370e7033 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -298,6 +298,10 @@ jobs: cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublasLt.so.12 ./build/bin/ cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcudart.so.12 ./build/bin/ zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64-standalone.zip ./build/bin/* + rm ./build/bin/libcublas.so.12 + rm ./build/bin/libcublasLt.so.12 + rm ./build/bin/libcudart.so.12 + - name: Upload artifacts uses: actions/upload-artifact@v4 with: From 86cf8f18f5f6a4604799ecf7e2ac48d4454e8987 Mon Sep 17 00:00:00 2001 From: Ahmed Hassan-Albanna <31392636+bannazz@users.noreply.github.com> Date: Sun, 26 Oct 2025 07:05:25 +0300 Subject: [PATCH 5/6] fix cudart release naming sticking to naming conventions to avoid upload script alterations --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 42370e7033..9f3ec01aa9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -297,7 +297,7 @@ jobs: cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublas.so.12 ./build/bin/ cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublasLt.so.12 ./build/bin/ cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcudart.so.12 ./build/bin/ - zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64-standalone.zip ./build/bin/* + zip -r cudart-llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip ./build/bin/* rm ./build/bin/libcublas.so.12 rm ./build/bin/libcublasLt.so.12 rm ./build/bin/libcudart.so.12 From f702cceb9796251ba5bb045fae9fa0392cf8dc26 Mon Sep 17 00:00:00 2001 From: Ahmed Hassan-Albanna <31392636+bannazz@users.noreply.github.com> Date: Sun, 26 Oct 2025 07:39:10 +0300 Subject: [PATCH 6/6] add separate upload and pack scripts for cudart fixes uploading after build for the cudart zip --- .github/workflows/release.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9f3ec01aa9..56f6cd8106 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -294,6 +294,15 @@ jobs: run: | cp LICENSE ./build/bin/ zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip ./build/bin/* + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip + name: llama-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip + + - name: Copy and pack Cuda runtime + run: | cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublas.so.12 ./build/bin/ cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcublasLt.so.12 ./build/bin/ cp /usr/local/cuda-${{ matrix.cuda }}/lib64/libcudart.so.12 ./build/bin/ @@ -302,11 +311,11 @@ jobs: rm ./build/bin/libcublasLt.so.12 rm ./build/bin/libcudart.so.12 - - name: Upload artifacts + - name: Upload Cuda runtime uses: actions/upload-artifact@v4 with: - path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip - name: llama-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip + path: cudart-llama-${{ steps.tag.outputs.name }}-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip + name: cudart-llama-bin-ubuntu-cuda-${{ matrix.cuda }}-x64.zip windows-cpu: runs-on: windows-2025