Skip to content

Commit 249cd93

Browse files
authored
mtgpu: Add MUSA_DOCKER_ARCH in Dockerfiles && update cmake and make (#10516)
Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com>
1 parent 904109e commit 249cd93

File tree

5 files changed

+39
-8
lines changed

5 files changed

+39
-8
lines changed

.devops/full-musa.Dockerfile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ ARG BASE_MUSA_DEV_CONTAINER=mthreads/musa:${MUSA_VERSION}-devel-ubuntu${UBUNTU_V
66

77
FROM ${BASE_MUSA_DEV_CONTAINER} AS build
88

9+
# MUSA architecture to build for (defaults to all supported archs)
10+
ARG MUSA_DOCKER_ARCH=default
11+
912
RUN apt-get update && \
1013
apt-get install -y build-essential cmake python3 python3-pip git libcurl4-openssl-dev libgomp1
1114

@@ -19,7 +22,11 @@ WORKDIR /app
1922

2023
COPY . .
2124

22-
RUN cmake -B build -DGGML_NATIVE=OFF -DGGML_MUSA=ON -DLLAMA_CURL=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \
25+
# Use the default MUSA archs if not specified
26+
RUN if [ "${MUSA_DOCKER_ARCH}" != "default" ]; then \
27+
export CMAKE_ARGS="-DMUSA_ARCHITECTURES=${MUSA_DOCKER_ARCH}"; \
28+
fi && \
29+
cmake -B build -DGGML_NATIVE=OFF -DGGML_MUSA=ON -DLLAMA_CURL=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \
2330
cmake --build build --config Release -j$(nproc) && \
2431
cp build/bin/* .
2532

.devops/llama-cli-musa.Dockerfile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,21 @@ ARG BASE_MUSA_RUN_CONTAINER=mthreads/musa:${MUSA_VERSION}-runtime-ubuntu${UBUNTU
88

99
FROM ${BASE_MUSA_DEV_CONTAINER} AS build
1010

11+
# MUSA architecture to build for (defaults to all supported archs)
12+
ARG MUSA_DOCKER_ARCH=default
13+
1114
RUN apt-get update && \
1215
apt-get install -y build-essential git cmake
1316

1417
WORKDIR /app
1518

1619
COPY . .
1720

18-
RUN cmake -B build -DGGML_NATIVE=OFF -DGGML_MUSA=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \
21+
# Use the default MUSA archs if not specified
22+
RUN if [ "${MUSA_DOCKER_ARCH}" != "default" ]; then \
23+
export CMAKE_ARGS="-DMUSA_ARCHITECTURES=${MUSA_DOCKER_ARCH}"; \
24+
fi && \
25+
cmake -B build -DGGML_NATIVE=OFF -DGGML_MUSA=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \
1926
cmake --build build --config Release --target llama-cli -j$(nproc) && \
2027
mkdir -p /app/lib && \
2128
find build -name "*.so" -exec cp {} /app/lib \;

.devops/llama-server-musa.Dockerfile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,21 @@ ARG BASE_MUSA_RUN_CONTAINER=mthreads/musa:${MUSA_VERSION}-runtime-ubuntu${UBUNTU
88

99
FROM ${BASE_MUSA_DEV_CONTAINER} AS build
1010

11+
# MUSA architecture to build for (defaults to all supported archs)
12+
ARG MUSA_DOCKER_ARCH=default
13+
1114
RUN apt-get update && \
1215
apt-get install -y build-essential git cmake libcurl4-openssl-dev
1316

1417
WORKDIR /app
1518

1619
COPY . .
1720

18-
RUN cmake -B build -DGGML_NATIVE=OFF -DGGML_MUSA=ON -DLLAMA_CURL=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \
21+
# Use the default MUSA archs if not specified
22+
RUN if [ "${MUSA_DOCKER_ARCH}" != "default" ]; then \
23+
export CMAKE_ARGS="-DMUSA_ARCHITECTURES=${MUSA_DOCKER_ARCH}"; \
24+
fi && \
25+
cmake -B build -DGGML_NATIVE=OFF -DGGML_MUSA=ON -DLLAMA_CURL=ON ${CMAKE_ARGS} -DCMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined . && \
1926
cmake --build build --config Release --target llama-server -j$(nproc) && \
2027
mkdir -p /app/lib && \
2128
find build -name "*.so" -exec cp {} /app/lib \;

Makefile

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ ifdef GGML_MUSA
815815
else
816816
MUSA_PATH ?= /opt/musa
817817
endif
818-
MTGPU_TARGETS ?= mp_21 mp_22
818+
MUSA_ARCHITECTURES ?= 21;22
819819

820820
MK_CPPFLAGS += -DGGML_USE_MUSA -DGGML_USE_CUDA
821821
MK_LDFLAGS += -L$(MUSA_PATH)/lib -Wl,-rpath=$(MUSA_PATH)/lib
@@ -834,7 +834,8 @@ ifdef GGML_MUSA
834834
CXX := $(MUSA_PATH)/bin/clang++
835835
MCC := $(CCACHE) $(MUSA_PATH)/bin/mcc
836836

837-
MUSAFLAGS += $(addprefix --cuda-gpu-arch=, $(MTGPU_TARGETS))
837+
MUSAFLAGS = -x musa -mtgpu
838+
MUSAFLAGS += $(foreach arch,$(subst ;, ,$(MUSA_ARCHITECTURES)),--cuda-gpu-arch=mp_$(arch))
838839

839840
ifdef GGML_CUDA_FORCE_MMQ
840841
MUSAFLAGS += -DGGML_CUDA_FORCE_MMQ
@@ -878,14 +879,14 @@ ggml/src/ggml-cuda/ggml-cuda.o: \
878879
ggml/src/ggml-backend-impl.h \
879880
ggml/src/ggml-common.h \
880881
$(wildcard ggml/src/ggml-cuda/*.cuh)
881-
$(MCC) $(CXXFLAGS) $(MUSAFLAGS) -x musa -mtgpu -c -o $@ $<
882+
$(MCC) $(CXXFLAGS) $(MUSAFLAGS) -c -o $@ $<
882883

883884
ggml/src/ggml-cuda/%.o: \
884885
ggml/src/ggml-cuda/%.cu \
885886
ggml/include/ggml.h \
886887
ggml/src/ggml-common.h \
887888
ggml/src/ggml-cuda/common.cuh
888-
$(MCC) $(CXXFLAGS) $(MUSAFLAGS) -x musa -mtgpu -c -o $@ $<
889+
$(MCC) $(CXXFLAGS) $(MUSAFLAGS) -c -o $@ $<
889890
endif # GGML_MUSA
890891

891892
ifdef GGML_METAL

ggml/src/ggml-musa/CMakeLists.txt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ find_package(MUSAToolkit)
2020
if (MUSAToolkit_FOUND)
2121
message(STATUS "MUSA Toolkit found")
2222

23+
if (NOT DEFINED MUSA_ARCHITECTURES)
24+
set(MUSA_ARCHITECTURES "21;22")
25+
endif()
26+
message(STATUS "Using MUSA architectures: ${MUSA_ARCHITECTURES}")
27+
2328
file(GLOB GGML_HEADERS_MUSA "../ggml-cuda/*.cuh")
2429
list(APPEND GGML_HEADERS_MUSA "../../include/ggml-cuda.h")
2530

@@ -44,7 +49,11 @@ if (MUSAToolkit_FOUND)
4449

4550
set_source_files_properties(${GGML_SOURCES_MUSA} PROPERTIES LANGUAGE CXX)
4651
foreach(SOURCE ${GGML_SOURCES_MUSA})
47-
set_property(SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS "-x musa -mtgpu --cuda-gpu-arch=mp_21 --cuda-gpu-arch=mp_22")
52+
set(COMPILE_FLAGS "-x musa -mtgpu")
53+
foreach(ARCH ${MUSA_ARCHITECTURES})
54+
set(COMPILE_FLAGS "${COMPILE_FLAGS} --cuda-gpu-arch=mp_${ARCH}")
55+
endforeach()
56+
set_property(SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
4857
endforeach()
4958

5059
ggml_add_backend_library(ggml-musa

0 commit comments

Comments
 (0)