char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
ae8de6d50
char/aliceai-t5-moe
1include ( CheckCSourceRuns ) 2 3set ( AVX_CODE " 4#include <immintrin.h> 5int main() 6{ 7__m256 a; 8a = _mm256_set1_ps(0); 9return 0; 10} 11" ) 12 13set ( AVX512_CODE " 14#include <immintrin.h> 15int main() 16{ 17__m512i a = _mm512_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0); 25__m512i b = a; 26__mmask64 equality_mask = _mm512_cmp_epi8_mask(a, b, _MM_CMPINT_EQ); 27return 0; 28} 29" ) 30 31set ( AVX2_CODE " 32#include <immintrin.h> 33int main() 34{ 35__m256i a = {0}; 36a = _mm256_abs_epi16(a); 37__m256i x; 38_mm256_extract_epi64(x, 0); // we rely on this in our AVX2 code 39return 0; 40} 41" ) 42 43set ( FMA_CODE " 44#include <immintrin.h> 45int main() 46{ 47__m256 acc = _mm256_setzero_ps(); 48const __m256 d = _mm256_setzero_ps(); 49const __m256 p = _mm256_setzero_ps(); 50acc = _mm256_fmadd_ps( d, p, acc ); 51return 0; 52} 53" ) 54 55macro ( check_sse type flags ) 56set ( __FLAG_I 1 ) 57set ( CMAKE_REQUIRED_FLAGS_SAVE ${ CMAKE_REQUIRED_FLAGS }) 58foreach ( __FLAG${ flags }) 59if ( NOT ${ type } _FOUND) 60set ( CMAKE_REQUIRED_FLAGS ${ __FLAG }) 61check_c_source_runs ( " ${ $ { type } _CODE } " HAS_ ${ type } _ ${ __FLAG_I }) 62if ( HAS_${ type } _${ __FLAG_I }) 63set ( $ { type } _FOUND TRUE CACHE BOOL " ${ type } support" ) 64set ( $ { type } _FLAGS " ${ __FLAG } " CACHE STRING " ${ type } flags" ) 65endif () 66math ( EXPR __FLAG_I " ${ __FLAG_I } +1" ) 67endif () 68endforeach () 69set ( CMAKE_REQUIRED_FLAGS ${ CMAKE_REQUIRED_FLAGS_SAVE }) 70 71if ( NOT ${ type } _FOUND) 72set ( $ { type } _FOUND FALSE CACHE BOOL " ${ type } support" ) 73set ( $ { type } _FLAGS "" CACHE STRING " ${ type } flags" ) 74endif () 75 76mark_as_advanced ( $ { type } _FOUND ${ type } _FLAGS ) 77endmacro () 78 79# flags are for MSVC only! 80check_sse ( "AVX" " ;/arch:AVX" ) 81if ( NOT ${ AVX_FOUND }) 82set ( GGML_AVX OFF ) 83else () 84set ( GGML_AVX ON ) 85endif () 86 87check_sse ( "AVX2" " ;/arch:AVX2" ) 88check_sse ( "FMA" " ;/arch:AVX2" ) 89if (( NOT ${ AVX2_FOUND }) OR ( NOT ${ FMA_FOUND })) 90set ( GGML_AVX2 OFF ) 91else () 92set ( GGML_AVX2 ON ) 93endif () 94 95check_sse ( "AVX512" " ;/arch:AVX512" ) 96if ( NOT ${ AVX512_FOUND }) 97set ( GGML_AVX512 OFF ) 98else () 99set ( GGML_AVX512 ON ) 100endif ()