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