name: CI (hip) on: workflow_dispatch: # allows manual triggering push: branches: - master paths: [ '.github/workflows/build-hip.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh' ] pull_request: types: [opened, synchronize, reopened] paths: [ '.github/workflows/build-hip.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: ubuntu-22-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: ubuntu-22-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) windows-latest-hip: runs-on: windows-2022 env: # Make sure this is in sync with build-cache.yml HIPSDK_INSTALLER_VERSION: "26.Q1" steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: Grab rocWMMA package id: grab_rocwmma run: | curl -o rocwmma.deb "https://repo.radeon.com/rocm/apt/7.2.1/pool/main/r/rocwmma-dev/rocwmma-dev_2.2.0.70201-81~24.04_amd64.deb" 7z x rocwmma.deb 7z x data.tar - name: Use ROCm Installation Cache uses: actions/cache@v5 id: cache-rocm with: path: C:\Program Files\AMD\ROCm key: cache-gha-rocm-${{ env.HIPSDK_INSTALLER_VERSION }}-${{ runner.os }} - name: Setup ROCm if: steps.cache-rocm.outputs.cache-hit != 'true' uses: ./.github/actions/windows-setup-rocm with: version: ${{ env.HIPSDK_INSTALLER_VERSION }} - name: Verify ROCm id: verify run: | # Find and test ROCm installation $clangPath = Get-ChildItem 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | Select-Object -First 1 if (-not $clangPath) { Write-Error "ROCm installation not found" exit 1 } & $clangPath.FullName --version - name: Install ccache uses: ggml-org/ccache-action@v1.2.21 with: key: ${{ github.job }} evict-old-files: 1d save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} - name: Build id: cmake_build run: | $env:HIP_PATH=$(Resolve-Path 'C:\Program Files\AMD\ROCm\*\bin\clang.exe' | split-path | split-path) $env:CMAKE_PREFIX_PATH="${env:HIP_PATH}" cmake -G "Unix Makefiles" -B build -S . ` -DCMAKE_C_COMPILER="${env:HIP_PATH}\bin\clang.exe" ` -DCMAKE_CXX_COMPILER="${env:HIP_PATH}\bin\clang++.exe" ` -DCMAKE_CXX_FLAGS="-I$($PWD.Path.Replace('\', '/'))/opt/rocm-7.2.1/include/" ` -DCMAKE_BUILD_TYPE=Release ` -DLLAMA_BUILD_BORINGSSL=ON ` -DROCM_DIR="${env:HIP_PATH}" ` -DGGML_HIP=ON ` -DGGML_HIP_ROCWMMA_FATTN=ON ` -DGPU_TARGETS="gfx1100" ` -DGGML_RPC=ON cmake --build build -j ${env:NUMBER_OF_PROCESSORS} ubuntu-22-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: ubuntu-22-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)