char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
5a4d0feca
char/aliceai-t5-moe
1function ( ggml_get_flags CCID CCVER ) 2set ( C_FLAGS "" ) 3set ( CXX_FLAGS "" ) 4 5if ( CCIDMATCHES "Clang" ) 6set ( C_FLAGS -Wunreachable-code-break -Wunreachable-code-return ) 7set ( CXX_FLAGS -Wunreachable-code-break -Wunreachable-code-return -Wmissing-prototypes -Wextra-semi ) 8 9if ( 10( CCIDSTREQUAL "Clang" AND CCVERVERSION_GREATER_EQUAL 3.8.0) OR 11( CCIDSTREQUAL "AppleClang" AND CCVERVERSION_GREATER_EQUAL 7.3.0) 12) 13list ( APPEND C_FLAGS -Wdouble-promotion ) 14endif () 15elseif ( CCIDSTREQUAL "GNU" ) 16set ( C_FLAGS -Wdouble-promotion ) 17set ( CXX_FLAGS -Wno-array-bounds ) 18 19if ( CCVERVERSION_GREATER_EQUAL 8.1.0) 20list ( APPEND CXX_FLAGS -Wextra-semi ) 21endif () 22endif () 23 24set ( GF_C_FLAGS ${ C_FLAGS } PARENT_SCOPE ) 25set ( GF_CXX_FLAGS ${ CXX_FLAGS } PARENT_SCOPE ) 26endfunction () 27 28function ( ggml_get_system_arch ) 29if ( CMAKE_OSX_ARCHITECTURESSTREQUAL "arm64" OR 30 CMAKE_GENERATOR_PLATFORM_LWRSTREQUAL "arm64" OR 31( NOT CMAKE_OSX_ARCHITECTURESAND NOT CMAKE_GENERATOR_PLATFORM_LWRAND 32 CMAKE_SYSTEM_PROCESSORMATCHES "^(aarch64|arm.*|ARM64) $ " )) 33set ( GGML_SYSTEM_ARCH "ARM" PARENT_SCOPE ) 34elseif ( CMAKE_OSX_ARCHITECTURESSTREQUAL "x86_64" OR 35 CMAKE_GENERATOR_PLATFORM_LWRMATCHES "^(x86_64|i686|amd64|x64|win32) $ " OR 36( NOT CMAKE_OSX_ARCHITECTURESAND NOT CMAKE_GENERATOR_PLATFORM_LWRAND 37 CMAKE_SYSTEM_PROCESSORMATCHES "^(x86_64|i686|AMD64|amd64) $ " )) 38set ( GGML_SYSTEM_ARCH "x86" PARENT_SCOPE ) 39elseif (${ CMAKE_SYSTEM_PROCESSOR } MATCHES "ppc|power" ) 40set ( GGML_SYSTEM_ARCH "PowerPC" PARENT_SCOPE ) 41elseif (${ CMAKE_SYSTEM_PROCESSOR } MATCHES "loongarch64" ) 42set ( GGML_SYSTEM_ARCH "loongarch64" PARENT_SCOPE ) 43elseif (${ CMAKE_SYSTEM_PROCESSOR } MATCHES "riscv64" ) 44set ( GGML_SYSTEM_ARCH "riscv64" PARENT_SCOPE ) 45elseif (${ CMAKE_SYSTEM_PROCESSOR } MATCHES "s390x" ) 46set ( GGML_SYSTEM_ARCH "s390x" PARENT_SCOPE ) 47else () 48set ( GGML_SYSTEM_ARCH "UNKNOWN" PARENT_SCOPE ) 49endif () 50endfunction () 51 52# Determines which FlashAttention vector kernel template instances to compile, returns them in OUT_SRCS. 53function ( ggml_cuda_fattn_vec_instances DIR OUT_SRCS ) 54set ( FA_TYPES q4_0 q4_1 q5_0 q5_1 q8_0 bf16 f16 ) 55 56string ( TOLOWER " ${ GGML_CUDA_FA_QUANTS } " FA_QUANTS ) 57string ( STRIP " ${ FA_QUANTS } " FA_QUANTS ) 58if ( GGML_CUDA_FA_ALL_QUANTS) 59message ( WARNING "GGML_CUDA_FA_ALL_QUANTS is deprecated, use GGML_CUDA_FA_QUANTS=all instead" ) 60set ( FA_QUANTS all ) 61endif () 62if ( NOT FA_QUANTS) 63message ( FATAL_ERROR "GGML_CUDA_FA_QUANTS must not be empty" ) 64endif () 65 66if ( FA_QUANTSSTREQUAL "all" ) 67set ( FA_COMBINATIONS "" ) 68foreach ( TYPE_V IN LISTS FA_TYPES) 69foreach ( TYPE_K IN LISTS FA_TYPES) 70list ( APPEND FA_COMBINATIONS ${ TYPE_K } - ${ TYPE_V }) 71endforeach () 72endforeach () 73else () 74set ( FA_COMBINATIONS f16-f16 ) 75 76string ( REPLACE "," ";" FA_SELECTED " ${ FA_QUANTS } " ) 77foreach ( COMBINATION IN LISTS FA_SELECTED) 78string ( STRIP " ${ COMBINATION } " COMBINATION ) 79if ( NOT COMBINATIONMATCHES "^([a-z0-9_]+)-([a-z0-9_]+) $ " ) 80message ( FATAL_ERROR "GGML_CUDA_FA_QUANTS: \" ${ COMBINATION } \" is not \"all\" or a <type_K>-<type_V> combination" ) 81endif () 82set ( TYPE_K ${ CMAKE_MATCH_1 }) 83set ( TYPE_V ${ CMAKE_MATCH_2 }) 84foreach ( TYPE${ TYPE_K } ${ TYPE_V }) 85if ( NOT TYPEIN_LIST FA_TYPES) 86message ( FATAL_ERROR 87"GGML_CUDA_FA_QUANTS: unknown type \" ${ TYPE } \" in \" ${ COMBINATION } \", must be one of: ${ FA_TYPES } " ) 88endif () 89endforeach () 90list ( APPEND FA_COMBINATIONS ${ TYPE_K } - ${ TYPE_V }) 91endforeach () 92endif () 93list ( REMOVE_DUPLICATES FA_COMBINATIONS ) 94 95string ( REPLACE ";" "," FA_QUANTS_DEFINE " ${ FA_QUANTS } " ) 96add_compile_definitions ( GGML_CUDA_FA_QUANTS= " ${ FA_QUANTS_DEFINE } " ) 97foreach ( TYPE_V IN LISTS FA_TYPES) 98foreach ( TYPE_K IN LISTS FA_TYPES) 99if ( " ${ TYPE_K } - ${ TYPE_V } " IN_LIST FA_COMBINATIONS) 100set ( COMPILED 1 ) 101else () 102set ( COMPILED 0 ) 103endif () 104string ( TOUPPER "GGML_CUDA_FA_ ${ TYPE_K } _ ${ TYPE_V } " COMBINATION_DEF ) 105add_compile_definitions ( $ { COMBINATION_DEF } = ${ COMPILED }) 106endforeach () 107endforeach () 108 109message ( STATUS "FlashAttention K-V type combinations: ${ FA_COMBINATIONS } " ) 110 111set ( SRCS "" ) 112foreach ( COMBINATION IN LISTS FA_COMBINATIONS) 113set ( SRC " ${ DIR } /template-instances/fattn-vec-instance- ${ COMBINATION } .cu" ) 114if ( NOT EXISTS " ${ SRC } " ) 115message ( FATAL_ERROR "FlashAttention template instance \" ${ SRC } \" does not exist" ) 116endif () 117list ( APPEND SRCS " ${ SRC } " ) 118endforeach () 119 120set ( $ { OUT_SRCS } ${ SRCS } PARENT_SCOPE ) 121endfunction ()