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)