Skip to content

Commit 93dbb61

Browse files
committed
Support gfx*-generic targets
1 parent cd6e35f commit 93dbb61

File tree

8 files changed

+65
-14
lines changed

8 files changed

+65
-14
lines changed

.devops/rocm.Dockerfile

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
ARG UBUNTU_VERSION=24.04
22

33
# This needs to generally match the container host's environment.
4-
ARG ROCM_VERSION=7.0
5-
ARG AMDGPU_VERSION=7.0
4+
ARG ROCM_VERSION=7.1
5+
ARG AMDGPU_VERSION=30.20
66

77
# Target the ROCm build image
88
ARG BASE_ROCM_DEV_CONTAINER=rocm/dev-ubuntu-${UBUNTU_VERSION}:${ROCM_VERSION}-complete
@@ -16,8 +16,7 @@ FROM ${BASE_ROCM_DEV_CONTAINER} AS build
1616
# gfx803, gfx900, gfx906, gfx1032, gfx1101, gfx1102,not officialy supported
1717
# check https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.4.1/reference/system-requirements.html
1818

19-
ARG ROCM_DOCKER_ARCH='gfx803;gfx900;gfx906;gfx908;gfx90a;gfx942;gfx1010;gfx1030;gfx1032;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201;gfx1151'
20-
#ARG ROCM_DOCKER_ARCH='gfx1151'
19+
ARG ROCM_DOCKER_ARCH='gfx10-1-generic;gfx10-3-generic;gfx11-generic;gfx12-generic'
2120

2221
# Set ROCm architectures
2322
ENV AMDGPU_TARGETS=${ROCM_DOCKER_ARCH}
@@ -39,7 +38,7 @@ RUN HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" \
3938
cmake -S . -B build \
4039
-DGGML_HIP=ON \
4140
-DGGML_HIP_ROCWMMA_FATTN=ON \
42-
-DAMDGPU_TARGETS="$ROCM_DOCKER_ARCH" \
41+
-DCMAKE_HIP_ARCHITECTURES="$ROCM_DOCKER_ARCH" \
4342
-DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON \
4443
-DCMAKE_BUILD_TYPE=Release -DLLAMA_BUILD_TESTS=OFF \
4544
&& cmake --build build --config Release -j$(nproc)

.github/workflows/docker.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ jobs:
3939
# Note: the arm64 images are failing, which prevents the amd64 images from being built
4040
# https://github.com/ggml-org/llama.cpp/issues/11888
4141
#- { tag: "cpu", dockerfile: ".devops/cpu.Dockerfile", platforms: "linux/amd64,linux/arm64", full: true, light: true, server: true, free_disk_space: false }
42-
- { tag: "cpu", dockerfile: ".devops/cpu.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: false, runs_on: "ubuntu-22.04" }
43-
- { tag: "cuda", dockerfile: ".devops/cuda.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
44-
- { tag: "musa", dockerfile: ".devops/musa.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
45-
- { tag: "intel", dockerfile: ".devops/intel.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
46-
- { tag: "vulkan", dockerfile: ".devops/vulkan.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: false, runs_on: "ubuntu-22.04" }
47-
- { tag: "s390x", dockerfile: ".devops/s390x.Dockerfile", platforms: "linux/s390x", full: true, light: true, server: true, free_disk_space: false, runs_on: "ubuntu-22.04-s390x" }
42+
#- { tag: "cpu", dockerfile: ".devops/cpu.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: false, runs_on: "ubuntu-22.04" }
43+
#- { tag: "cuda", dockerfile: ".devops/cuda.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
44+
#- { tag: "musa", dockerfile: ".devops/musa.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
45+
#- { tag: "intel", dockerfile: ".devops/intel.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
46+
#- { tag: "vulkan", dockerfile: ".devops/vulkan.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: false, runs_on: "ubuntu-22.04" }
47+
#- { tag: "s390x", dockerfile: ".devops/s390x.Dockerfile", platforms: "linux/s390x", full: true, light: true, server: true, free_disk_space: false, runs_on: "ubuntu-22.04-s390x" }
4848
# Note: the rocm images are failing due to a compiler error and are disabled until this is fixed to allow the workflow to complete
49-
#- {tag: "rocm", dockerfile: ".devops/rocm.Dockerfile", platforms: "linux/amd64,linux/arm64", full: true, light: true, server: true, free_disk_space: true }
49+
- {tag: "rocm", dockerfile: ".devops/rocm.Dockerfile", platforms: "linux/amd64", full: true, light: true, server: true, free_disk_space: true, runs_on: "ubuntu-22.04" }
5050
steps:
5151
- name: Check out the repo
5252
uses: actions/checkout@v4

ggml/src/ggml-cuda/argsort.cu

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33
#ifdef GGML_CUDA_USE_CUB
44
#if defined(GGML_USE_HIP)
55

6+
// Workaround for gfx*-generic
7+
#if defined(__gfx10_1_generic__)
8+
#define __gfx1010__ __gfx10_1_generic__
9+
#elif defined(__gfx10_3_generic__)
10+
#define __gfx1030__ __gfx10_3_generic__
11+
#elif defined(__gfx11_generic__)
12+
#define __gfx1100__ __gfx11_generic__
13+
#elif defined(__gfx12_generic__)
14+
#define __gfx1201__ __gfx12_generic__
15+
#endif
616

717
#include <hipcub/hipcub.hpp>
818
using namespace hipcub;

ggml/src/ggml-cuda/fattn-wmma-f16.cu

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ namespace wmma = mtmusa::wmma;
1515
namespace wmma = nvcuda::wmma;
1616
#endif // GGML_USE_MUSA
1717
#elif defined(GGML_USE_HIP)
18+
// Workaround for gfx*-generic
19+
#if defined(__gfx11_generic__)
20+
#define __gfx1100__ __gfx11_generic__
21+
#elif defined(__gfx12_generic__)
22+
#define __gfx1201__ __gfx12_generic__
23+
#endif
1824
#include <rocwmma/rocwmma.hpp>
1925
namespace wmma = rocwmma;
2026
#endif // !defined(GGML_USE_HIP)

ggml/src/ggml-cuda/mean.cu

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@
44
#ifdef GGML_CUDA_USE_CUB
55

66
#if defined(GGML_USE_HIP)
7+
8+
// Workaround for gfx*-generic
9+
#if defined(__gfx10_1_generic__)
10+
#define __gfx1010__ __gfx10_1_generic__
11+
#elif defined(__gfx10_3_generic__)
12+
#define __gfx1030__ __gfx10_3_generic__
13+
#elif defined(__gfx11_generic__)
14+
#define __gfx1100__ __gfx11_generic__
15+
#elif defined(__gfx12_generic__)
16+
#define __gfx1201__ __gfx12_generic__
17+
#endif
18+
719
#include <hipcub/hipcub.hpp>
820
using namespace hipcub;
921
#else

ggml/src/ggml-cuda/ssm-scan.cu

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@
55
#ifdef USE_CUB
66

77
#if defined(GGML_USE_HIP)
8+
9+
// Workaround for gfx*-generic
10+
#if defined(__gfx10_1_generic__)
11+
#define __gfx1010__ __gfx10_1_generic__
12+
#elif defined(__gfx10_3_generic__)
13+
#define __gfx1030__ __gfx10_3_generic__
14+
#elif defined(__gfx11_generic__)
15+
#define __gfx1100__ __gfx11_generic__
16+
#elif defined(__gfx12_generic__)
17+
#define __gfx1201__ __gfx12_generic__
18+
#endif
19+
820
#include <hipcub/hipcub.hpp>
921
using namespace hipcub;
1022
#else

ggml/src/ggml-cuda/sum.cu

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@
44
#ifdef GGML_CUDA_USE_CUB
55

66
#if defined(GGML_USE_HIP)
7+
// Workaround for gfx*-generic
8+
#if defined(__gfx10_1_generic__)
9+
#define __gfx1010__ __gfx10_1_generic__
10+
#elif defined(__gfx10_3_generic__)
11+
#define __gfx1030__ __gfx10_3_generic__
12+
#elif defined(__gfx11_generic__)
13+
#define __gfx1100__ __gfx11_generic__
14+
#elif defined(__gfx12_generic__)
15+
#define __gfx1201__ __gfx12_generic__
16+
#endif
17+
718
#include <hipcub/hipcub.hpp>
819
using namespace hipcub;
920
#else

ggml/src/ggml-cuda/vendors/hip.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,12 @@
202202
#endif // defined(__GFX11__)
203203

204204
#if defined(__gfx1030__) || defined(__gfx1031__) || defined(__gfx1032__) || defined(__gfx1033__) || \
205-
defined(__gfx1034__) || defined(__gfx1035__) || defined(__gfx1036__) || defined(__gfx1037__)
205+
defined(__gfx1034__) || defined(__gfx1035__) || defined(__gfx1036__) || defined(__gfx1037__) || \
206+
defined(__gfx10_3_generic__)
206207
#define RDNA2
207208
#endif
208209

209-
#if defined(__gfx1010__) || defined(__gfx1012__)
210+
#if defined(__gfx1010__) || defined(__gfx1012__) || defined(__gfx10_1_generic__)
210211
#define RDNA1
211212
#endif // defined(__gfx1010__) || defined(__gfx1012__)
212213

0 commit comments

Comments
 (0)