char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Piotr Wilkin (ilintar)CUDA: replace GGML_FA_ALL_QUANTS with GGML_FA_QUANTS, more control over what is compiled (#28079)5a4d0feca

char/aliceai-t5-moe
3.7 KiB114 linesraw
1if (NOT EXISTS $ENV{MUSA_PATH})
2    if (NOT EXISTS /opt/musa)
3        set(MUSA_PATH /usr/local/musa)
4    else()
5        set(MUSA_PATH /opt/musa)
6    endif()
7else()
8    set(MUSA_PATH $ENV{MUSA_PATH})
9endif()
10
11set(CMAKE_C_COMPILER "${MUSA_PATH}/bin/clang")
12set(CMAKE_C_EXTENSIONS OFF)
13set(CMAKE_CXX_COMPILER "${MUSA_PATH}/bin/clang++")
14set(CMAKE_CXX_EXTENSIONS OFF)
15
16list(APPEND CMAKE_MODULE_PATH "${MUSA_PATH}/cmake")
17
18find_package(MUSAToolkit)
19
20if (MUSAToolkit_FOUND)
21    message(STATUS "MUSA Toolkit found")
22
23    if (NOT DEFINED MUSA_ARCHITECTURES)
24        set(MUSA_ARCHITECTURES "21;22;31")
25    endif()
26    message(STATUS "Using MUSA architectures: ${MUSA_ARCHITECTURES}")
27
28    file(GLOB   GGML_HEADERS_MUSA "../ggml-cuda/*.cuh")
29    list(APPEND GGML_HEADERS_MUSA "../../include/ggml-cuda.h")
30    list(APPEND GGML_HEADERS_MUSA "../ggml-musa/mudnn.cuh")
31
32    file(GLOB   GGML_SOURCES_MUSA "../ggml-cuda/*.cu")
33    file(GLOB   SRCS "../ggml-cuda/template-instances/fattn-tile*.cu")
34    list(APPEND GGML_SOURCES_MUSA ${SRCS})
35    file(GLOB   SRCS "../ggml-cuda/template-instances/fattn-mma*.cu")
36    list(APPEND GGML_SOURCES_MUSA ${SRCS})
37    file(GLOB   SRCS "../ggml-cuda/template-instances/mmq*.cu")
38    list(APPEND GGML_SOURCES_MUSA ${SRCS})
39
40    if (GGML_MUSA_MUDNN_COPY)
41        file(GLOB   SRCS "../ggml-musa/*.cu")
42        list(APPEND GGML_SOURCES_MUSA ${SRCS})
43        add_compile_definitions(GGML_MUSA_MUDNN_COPY)
44    endif()
45
46    ggml_cuda_fattn_vec_instances(${CMAKE_CURRENT_SOURCE_DIR}/../ggml-cuda SRCS)
47    list(APPEND GGML_SOURCES_MUSA ${SRCS})
48
49    set_source_files_properties(${GGML_SOURCES_MUSA} PROPERTIES LANGUAGE CXX)
50    foreach(SOURCE ${GGML_SOURCES_MUSA})
51        set(COMPILE_FLAGS "-Od3 -fno-strict-aliasing -ffast-math -fsigned-char -x musa -mtgpu -fmusa-flush-denormals-to-zero")
52        foreach(ARCH ${MUSA_ARCHITECTURES})
53            set(COMPILE_FLAGS "${COMPILE_FLAGS} --cuda-gpu-arch=mp_${ARCH}")
54        endforeach()
55        set_property(SOURCE ${SOURCE} PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS})
56    endforeach()
57
58    ggml_add_backend_library(ggml-musa
59                             ${GGML_HEADERS_MUSA}
60                             ${GGML_SOURCES_MUSA}
61                            )
62
63    # TODO: do not use CUDA definitions for MUSA
64    if (NOT GGML_BACKEND_DL)
65        target_compile_definitions(ggml PUBLIC GGML_USE_CUDA)
66    endif()
67
68    add_compile_definitions(GGML_USE_MUSA)
69
70    if (GGML_MUSA_GRAPHS)
71        add_compile_definitions(GGML_MUSA_GRAPHS)
72    endif()
73
74    if (GGML_CUDA_FORCE_MMQ)
75        add_compile_definitions(GGML_CUDA_FORCE_MMQ)
76    endif()
77
78    if (GGML_CUDA_FORCE_CUBLAS)
79        add_compile_definitions(GGML_CUDA_FORCE_CUBLAS)
80    endif()
81
82    if (GGML_CUDA_NO_VMM)
83        add_compile_definitions(GGML_CUDA_NO_VMM)
84    endif()
85
86    if (NOT GGML_CUDA_FA)
87        add_compile_definitions(GGML_CUDA_NO_FA)
88    endif()
89
90    if (GGML_CUDA_NO_PEER_COPY)
91        add_compile_definitions(GGML_CUDA_NO_PEER_COPY)
92    endif()
93
94    if (GGML_STATIC)
95        target_link_libraries(ggml-musa PRIVATE MUSA::musart_static MUSA::mublas_static)
96        # TODO: mudnn has not provided static libraries yet
97        # if (GGML_MUSA_MUDNN_COPY)
98        #     target_link_libraries(ggml-musa PRIVATE mudnn_static)
99        # endif()
100    else()
101        target_link_libraries(ggml-musa PRIVATE MUSA::musart MUSA::mublas)
102        if (GGML_MUSA_MUDNN_COPY)
103            target_link_libraries(ggml-musa PRIVATE mudnn)
104        endif()
105    endif()
106
107    if (GGML_CUDA_NO_VMM)
108        # No VMM requested, no need to link directly with the musa driver lib (libmusa.so)
109    else()
110        target_link_libraries(ggml-musa PRIVATE MUSA::musa_driver)
111    endif()
112else()
113    message(FATAL_ERROR "MUSA Toolkit not found")
114endif()