From 90a478bd4d97683cd18643cee35e0521fd42dc28 Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Wed, 8 Jan 2025 17:50:26 +0000 Subject: [PATCH] Package linux cuda releases for various caps --- .github/workflows/build.yml | 85 ++++++++++++++++++++++++++++++++++++- ggml/src/kompute | 1 + 2 files changed, 84 insertions(+), 2 deletions(-) create mode 160000 ggml/src/kompute diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a377eff38..df9abf304 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -809,7 +809,52 @@ jobs: ubuntu-latest-cmake-cuda: runs-on: ubuntu-latest - container: nvidia/cuda:12.6.2-devel-ubuntu24.04 + + strategy: + matrix: + cuda: + # Colab and lightning.ai currently use CUDA 12.2 (test w/ `nvidia-smi | grep "CUDA Version: "`) + # Capabilities of GPUs are listed on https://developer.nvidia.com/cuda-gpus, can test w/ `nvidia-smi --query-gpu=compute_cap --format=csv` + # See available containers at https://hub.docker.com/r/nvidia/cuda/tags + - version: 12.2 + container: nvidia/cuda:12.2.2-devel-ubuntu24.04 + cap: 7.5 + arch: 75-real + example: 'T4' + package: true + - version: 12.2 + container: nvidia/cuda:12.2.2-devel-ubuntu24.04 + cap: 8.0 + arch: 80-real + example: 'A100' + package: true + - version: 12.2 + container: nvidia/cuda:12.2.2-devel-ubuntu24.04 + cap: 8.6 + arch: 86-real + example: 'A10' + package: true + - version: 12.2 + container: nvidia/cuda:12.2.2-devel-ubuntu24.04 + cap: 8.9 + arch: 89-real + example: 'L4, L40S' + - version: 12.2 + container: nvidia/cuda:12.2.2-devel-ubuntu24.04 + cap: 9.0 + arch: 90-real + example: 'H100' + package: true + # Build only, don't package. + - version: 12.6 + container: nvidia/cuda:12.6.2-devel-ubuntu24.04 + cap: 8.9 + arch: 89-real + package: false + + container: nvidia/cuda:${{ matrix.cuda.version }}-devel-ubuntu24.04 + + name: Linux CUDA ${{ matrix.cuda.version }} Cap ${{ matrix.cuda.cap }} (e.g. ${{ matrix.cuda_cap.example_gpu }}) steps: - name: Clone @@ -825,9 +870,45 @@ jobs: - name: Build with CMake run: | - cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=89-real -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined -DLLAMA_FATAL_WARNINGS=ON + cmake -S . -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release \ + -DGGML_NATIVE=OFF \ + -DGGML_CUDA=ON \ + -DCMAKE_CUDA_ARCHITECTURES=${{ matrix.cuda.arch }} \ + -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined \ + -DLLAMA_CURL=ON \ + -DLLAMA_FATAL_WARNINGS=ON cmake --build build + - name: Determine tag name + if: ${{ matrix.cuda.package }} + id: tag + shell: bash + run: | + BUILD_NUMBER="$(git rev-list --count HEAD)" + SHORT_HASH="$(git rev-parse --short=7 HEAD)" + if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then + echo "name=b${BUILD_NUMBER}" >> $GITHUB_OUTPUT + else + SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') + echo "name=${SAFE_NAME}-b${BUILD_NUMBER}-${SHORT_HASH}" >> $GITHUB_OUTPUT + fi + echo "cuda_name=cuda-${{ matrix.cuda.short_version }}-cap-${{ matrix.cuda.cap }}" >> $GITHUB_OUTPUT + + - name: Pack artifacts + id: pack_artifacts + if: ${{ matrix.cuda.package && (( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true') }} + run: | + cp LICENSE ./build/bin/ + zip -r llama-${{ steps.tag.outputs.name }}-bin-ubuntu-x64-${{ steps.tag.outputs.cuda_name }}.zip ./build/bin/* + + - name: Upload artifacts + if: ${{ matrix.cuda.package && (( github.event_name == 'push' && github.ref == 'refs/heads/master' ) || github.event.inputs.create_release == 'true') }} + uses: actions/upload-artifact@v4 + with: + path: llama-${{ steps.tag.outputs.name }}-bin-ubuntu-x64-${{ steps.tag.outputs.cuda_name }}.zip + name: llama-bin-ubuntu-x64.zip + windows-2019-cmake-cuda: runs-on: windows-2019 diff --git a/ggml/src/kompute b/ggml/src/kompute new file mode 160000 index 000000000..4565194ed --- /dev/null +++ b/ggml/src/kompute @@ -0,0 +1 @@ +Subproject commit 4565194ed7c32d1d2efa32ceab4d3c6cae006306