Skip to content

Commit 4eb8735

Browse files
committed
Add GGML_MUSA in CMake
Signed-off-by: Xiaodong Ye <[email protected]>
1 parent 434438f commit 4eb8735

File tree

2 files changed

+56
-8
lines changed

2 files changed

+56
-8
lines changed

ggml/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ set(GGML_BLAS_VENDOR ${GGML_BLAS_VENDOR_DEFAULT} CACHE STRING
107107
option(GGML_LLAMAFILE "ggml: use ggml SGEMM" OFF)
108108

109109
option(GGML_CUDA "ggml: use CUDA" OFF)
110+
option(GGML_MUSA "ggml: use MUSA" OFF)
110111
option(GGML_CUDA_FORCE_DMMV "ggml: use dmmv instead of mmvq CUDA kernels" OFF)
111112
option(GGML_CUDA_FORCE_MMQ "ggml: use mmq kernels instead of cuBLAS" OFF)
112113
option(GGML_CUDA_FORCE_CUBLAS "ggml: always use cuBLAS instead of mmq kernels" OFF)

ggml/src/CMakeLists.txt

Lines changed: 55 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,20 @@ if (GGML_METAL)
139139
)
140140
endif()
141141

142+
if (GGML_MUSA)
143+
set(CMAKE_C_COMPILER clang)
144+
set(CMAKE_C_EXTENSIONS OFF)
145+
set(CMAKE_CXX_COMPILER clang++)
146+
set(CMAKE_CXX_EXTENSIONS OFF)
147+
148+
set(GGML_CUDA ON)
149+
set(GGML_OPENMP OFF)
150+
151+
list(APPEND GGML_CDEF_PUBLIC GGML_USE_MUSA)
152+
153+
add_compile_definitions(GGML_USE_MUSA)
154+
endif()
155+
142156
if (GGML_OPENMP)
143157
find_package(OpenMP)
144158
if (OpenMP_FOUND)
@@ -249,7 +263,13 @@ endif()
249263
if (GGML_CUDA)
250264
cmake_minimum_required(VERSION 3.18) # for CMAKE_CUDA_ARCHITECTURES
251265

252-
find_package(CUDAToolkit)
266+
if (GGML_MUSA)
267+
list(APPEND CMAKE_MODULE_PATH "/usr/local/musa/cmake/")
268+
find_package(MUSAToolkit)
269+
set(CUDAToolkit_FOUND ${MUSAToolkit_FOUND})
270+
else()
271+
find_package(CUDAToolkit)
272+
endif()
253273

254274
if (CUDAToolkit_FOUND)
255275
message(STATUS "CUDA found")
@@ -268,7 +288,11 @@ if (GGML_CUDA)
268288
endif()
269289
message(STATUS "Using CUDA architectures: ${CMAKE_CUDA_ARCHITECTURES}")
270290

271-
enable_language(CUDA)
291+
if (GGML_MUSA)
292+
set(CMAKE_CUDA_COMPILER ${MUSAToolkit_MCC_EXECUTABLE})
293+
else()
294+
enable_language(CUDA)
295+
endif()
272296

273297
file(GLOB GGML_HEADERS_CUDA "ggml-cuda/*.cuh")
274298
list(APPEND GGML_HEADERS_CUDA "../include/ggml-cuda.h")
@@ -332,21 +356,40 @@ if (GGML_CUDA)
332356
add_compile_definitions(GGML_CUDA_NO_PEER_COPY)
333357
endif()
334358

359+
if (GGML_MUSA)
360+
set_source_files_properties(${GGML_SOURCES_CUDA} PROPERTIES LANGUAGE CXX)
361+
foreach(SOURCE ${GGML_SOURCES_CUDA})
362+
set_property(SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS "-x musa -mtgpu --cuda-gpu-arch=mp_22")
363+
endforeach()
364+
endif()
365+
335366
if (GGML_STATIC)
336367
if (WIN32)
337368
# As of 12.3.1 CUDA Toolkit for Windows does not offer a static cublas library
338369
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas CUDA::cublasLt)
339370
else ()
340-
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static)
371+
if (GGML_MUSA)
372+
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} MUSA::musart_static MUSA::mublas_static)
373+
else()
374+
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cudart_static CUDA::cublas_static CUDA::cublasLt_static)
375+
endif()
341376
endif()
342377
else()
343-
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt)
378+
if (GGML_MUSA)
379+
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} MUSA::musart MUSA::mublas)
380+
else()
381+
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cudart CUDA::cublas CUDA::cublasLt)
382+
endif()
344383
endif()
345384

346385
if (GGML_CUDA_NO_VMM)
347386
# No VMM requested, no need to link directly with the cuda driver lib (libcuda.so)
348387
else()
349-
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cuda_driver) # required by cuDeviceGetAttribute(), cuMemGetAllocationGranularity(...), ...
388+
if (GGML_MUSA)
389+
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} MUSA::musa_driver) # required by muDeviceGetAttribute(), muMemGetAllocationGranularity(...), ...
390+
else()
391+
set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} CUDA::cuda_driver) # required by cuDeviceGetAttribute(), cuMemGetAllocationGranularity(...), ...
392+
endif()
350393
endif()
351394
else()
352395
message(WARNING "CUDA not found")
@@ -757,8 +800,10 @@ function(get_flags CCID CCVER)
757800
set(C_FLAGS -Wdouble-promotion)
758801
set(CXX_FLAGS -Wno-array-bounds)
759802
760-
if (CCVER VERSION_GREATER_EQUAL 7.1.0)
761-
list(APPEND CXX_FLAGS -Wno-format-truncation)
803+
if (NOT GGML_MUSA)
804+
if (CCVER VERSION_GREATER_EQUAL 7.1.0)
805+
list(APPEND CXX_FLAGS -Wno-format-truncation)
806+
endif()
762807
endif()
763808
if (CCVER VERSION_GREATER_EQUAL 8.1.0)
764809
list(APPEND CXX_FLAGS -Wextra-semi)
@@ -1059,7 +1104,9 @@ if (GGML_CUDA)
10591104
list(JOIN CUDA_CXX_FLAGS " " CUDA_CXX_FLAGS_JOINED) # pass host compiler flags as a single argument
10601105

10611106
if (NOT CUDA_CXX_FLAGS_JOINED STREQUAL "")
1062-
list(APPEND CUDA_FLAGS -Xcompiler ${CUDA_CXX_FLAGS_JOINED})
1107+
# list(APPEND CUDA_FLAGS -Xcompiler ${CUDA_CXX_FLAGS_JOINED})
1108+
# XXX: Removed flags: -Xcompiler
1109+
list(APPEND CUDA_FLAGS ${CUDA_CXX_FLAGS_JOINED})
10631110
endif()
10641111

10651112
add_compile_options("$<$<COMPILE_LANGUAGE:CUDA>:${CUDA_FLAGS}>")

0 commit comments

Comments
 (0)