mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-11-15 07:19:53 +00:00
ggml: build musa backend library (cmake) (#10280)
Signed-off-by: Xiaodong Ye <xiaodong.ye@mthreads.com>
This commit is contained in:
parent
42eb364db5
commit
4a80bb95e7
@ -256,6 +256,7 @@ ggml_add_backend(METAL)
|
|||||||
ggml_add_backend(RPC)
|
ggml_add_backend(RPC)
|
||||||
ggml_add_backend(SYCL)
|
ggml_add_backend(SYCL)
|
||||||
ggml_add_backend(Vulkan)
|
ggml_add_backend(Vulkan)
|
||||||
|
ggml_add_backend(MUSA)
|
||||||
|
|
||||||
foreach (target ggml-base ggml)
|
foreach (target ggml-base ggml)
|
||||||
target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include> $<INSTALL_INTERFACE:include>)
|
target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include> $<INSTALL_INTERFACE:include>)
|
||||||
|
107
ggml/src/ggml-musa/CMakeLists.txt
Normal file
107
ggml/src/ggml-musa/CMakeLists.txt
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
if (NOT EXISTS $ENV{MUSA_PATH})
|
||||||
|
set(MUSA_PATH /usr/local/musa)
|
||||||
|
else()
|
||||||
|
set(MUSA_PATH $ENV{MUSA_PATH})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_C_COMPILER "${MUSA_PATH}/bin/clang")
|
||||||
|
set(CMAKE_C_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_CXX_COMPILER "${MUSA_PATH}/bin/clang++")
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${MUSA_PATH}/cmake")
|
||||||
|
|
||||||
|
find_package(MUSAToolkit)
|
||||||
|
|
||||||
|
if (MUSAToolkit_FOUND)
|
||||||
|
message(STATUS "MUSA Toolkit found")
|
||||||
|
|
||||||
|
file(GLOB GGML_HEADERS_MUSA "../ggml-cuda/*.cuh")
|
||||||
|
list(APPEND GGML_HEADERS_MUSA "../../include/ggml-cuda.h")
|
||||||
|
|
||||||
|
file(GLOB GGML_SOURCES_MUSA "../ggml-cuda/*.cu")
|
||||||
|
file(GLOB SRCS "../ggml-cuda/template-instances/fattn-wmma*.cu")
|
||||||
|
list(APPEND GGML_SOURCES_MUSA ${SRCS})
|
||||||
|
file(GLOB SRCS "../ggml-cuda/template-instances/mmq*.cu")
|
||||||
|
list(APPEND GGML_SOURCES_MUSA ${SRCS})
|
||||||
|
|
||||||
|
if (GGML_CUDA_FA_ALL_QUANTS)
|
||||||
|
file(GLOB SRCS "../ggml-cuda/template-instances/fattn-vec*.cu")
|
||||||
|
list(APPEND GGML_SOURCES_MUSA ${SRCS})
|
||||||
|
add_compile_definitions(GGML_CUDA_FA_ALL_QUANTS)
|
||||||
|
else()
|
||||||
|
file(GLOB SRCS "../ggml-cuda/template-instances/fattn-vec*q4_0-q4_0.cu")
|
||||||
|
list(APPEND GGML_SOURCES_MUSA ${SRCS})
|
||||||
|
file(GLOB SRCS "../ggml-cuda/template-instances/fattn-vec*q8_0-q8_0.cu")
|
||||||
|
list(APPEND GGML_SOURCES_MUSA ${SRCS})
|
||||||
|
file(GLOB SRCS "../ggml-cuda/template-instances/fattn-vec*f16-f16.cu")
|
||||||
|
list(APPEND GGML_SOURCES_MUSA ${SRCS})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_source_files_properties(${GGML_SOURCES_MUSA} PROPERTIES LANGUAGE CXX)
|
||||||
|
foreach(SOURCE ${GGML_SOURCES_MUSA})
|
||||||
|
set_property(SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS "-x musa -mtgpu --cuda-gpu-arch=mp_21 --cuda-gpu-arch=mp_22")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
add_library(ggml-musa
|
||||||
|
${GGML_HEADERS_MUSA}
|
||||||
|
${GGML_SOURCES_MUSA})
|
||||||
|
|
||||||
|
target_link_libraries(ggml-musa PRIVATE ggml-base)
|
||||||
|
target_include_directories(ggml-musa PRIVATE . ..)
|
||||||
|
|
||||||
|
# TODO: do not use CUDA definitions for MUSA
|
||||||
|
target_compile_definitions(ggml PUBLIC GGML_USE_CUDA)
|
||||||
|
|
||||||
|
add_compile_definitions(GGML_USE_MUSA)
|
||||||
|
add_compile_definitions(GGML_CUDA_DMMV_X=${GGML_CUDA_DMMV_X})
|
||||||
|
add_compile_definitions(GGML_CUDA_MMV_Y=${GGML_CUDA_MMV_Y})
|
||||||
|
add_compile_definitions(K_QUANTS_PER_ITERATION=${GGML_CUDA_KQUANTS_ITER})
|
||||||
|
add_compile_definitions(GGML_CUDA_PEER_MAX_BATCH_SIZE=${GGML_CUDA_PEER_MAX_BATCH_SIZE})
|
||||||
|
|
||||||
|
if (GGML_CUDA_GRAPHS)
|
||||||
|
add_compile_definitions(GGML_CUDA_USE_GRAPHS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_FORCE_DMMV)
|
||||||
|
add_compile_definitions(GGML_CUDA_FORCE_DMMV)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_FORCE_MMQ)
|
||||||
|
add_compile_definitions(GGML_CUDA_FORCE_MMQ)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_FORCE_CUBLAS)
|
||||||
|
add_compile_definitions(GGML_CUDA_FORCE_CUBLAS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_NO_VMM)
|
||||||
|
add_compile_definitions(GGML_CUDA_NO_VMM)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (DEFINED GGML_CUDA_DMMV_Y)
|
||||||
|
add_compile_definitions(GGML_CUDA_MMV_Y=${GGML_CUDA_DMMV_Y}) # for backwards compatibility
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_F16 OR GGML_CUDA_DMMV_F16)
|
||||||
|
add_compile_definitions(GGML_CUDA_F16)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_NO_PEER_COPY)
|
||||||
|
add_compile_definitions(GGML_CUDA_NO_PEER_COPY)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_STATIC)
|
||||||
|
target_link_libraries(ggml-musa PRIVATE MUSA::musart_static MUSA::mublas_static)
|
||||||
|
else()
|
||||||
|
target_link_libraries(ggml-musa PRIVATE MUSA::musart MUSA::mublas)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (GGML_CUDA_NO_VMM)
|
||||||
|
# No VMM requested, no need to link directly with the musa driver lib (libmusa.so)
|
||||||
|
else()
|
||||||
|
target_link_libraries(ggml-musa PRIVATE MUSA::musa_driver)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "MUSA Toolkit not found")
|
||||||
|
endif()
|
Loading…
Reference in New Issue
Block a user