1- cmake_minimum_required (VERSION 3.14 ) # for add_link_options and implicit target directories.
1+ cmake_minimum_required (VERSION 3.14 ) # for add_link_options and implicit target directories.
22project ("llama.cpp" C CXX )
33include (CheckIncludeFileCXX )
44
@@ -77,6 +77,7 @@ option(LLAMA_AVX2 "llama: enable AVX2"
7777option (LLAMA_AVX512 "llama: enable AVX512" OFF )
7878option (LLAMA_AVX512_VBMI "llama: enable AVX512-VBMI" OFF )
7979option (LLAMA_AVX512_VNNI "llama: enable AVX512-VNNI" OFF )
80+ option (LLAMA_AVX512_BF16 "llama: enable AVX512-BF16" OFF )
8081option (LLAMA_FMA "llama: enable FMA" ${INS_ENB} )
8182# in MSVC F16C is implied with AVX2/AVX512
8283if (NOT MSVC )
@@ -122,7 +123,6 @@ set(LLAMA_METAL_MACOSX_VERSION_MIN "" CACHE STRING
122123 "llama: metal minimum macOS version" )
123124set (LLAMA_METAL_STD "" CACHE STRING "llama: metal standard version (-std flag)" )
124125option (LLAMA_KOMPUTE "llama: use Kompute" OFF )
125- option (LLAMA_MPI "llama: use MPI" OFF )
126126option (LLAMA_RPC "llama: use RPC" OFF )
127127option (LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF )
128128option (LLAMA_SYCL "llama: use SYCL" OFF )
@@ -134,6 +134,8 @@ set(LLAMA_SCHED_MAX_COPIES "4" CACHE STRING "llama: max input copies for pipeli
134134option (LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE} )
135135option (LLAMA_BUILD_EXAMPLES "llama: build examples" ${LLAMA_STANDALONE} )
136136option (LLAMA_BUILD_SERVER "llama: build server example" ON )
137+ option (LLAMA_LASX "llama: enable lasx" ON )
138+ option (LLAMA_LSX "llama: enable lsx" ON )
137139
138140# add perf arguments
139141option (LLAMA_PERF "llama: enable perf" OFF )
@@ -466,35 +468,6 @@ if (LLAMA_CUDA)
466468 endif ()
467469endif ()
468470
469- if (LLAMA_MPI)
470- cmake_minimum_required (VERSION 3.10 )
471- find_package (MPI )
472- if (MPI_C_FOUND)
473- message (STATUS "MPI found" )
474-
475- set (GGML_HEADERS_MPI ggml-mpi.h)
476- set (GGML_SOURCES_MPI ggml-mpi.c)
477-
478- add_compile_definitions (GGML_USE_MPI )
479- add_compile_definitions (${MPI_C_COMPILE_DEFINITIONS} )
480-
481- if (NOT MSVC )
482- add_compile_options (-Wno-cast-qual )
483- endif ()
484-
485- set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_C_LIBRARIES} )
486- set (LLAMA_EXTRA_INCLUDES ${LLAMA_EXTRA_INCLUDES} ${MPI_C_INCLUDE_DIRS} )
487-
488- # Even if you're only using the C header, C++ programs may bring in MPI
489- # C++ functions, so more linkage is needed
490- if (MPI_CXX_FOUND)
491- set (LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${MPI_CXX_LIBRARIES} )
492- endif ()
493- else ()
494- message (WARNING "MPI not found" )
495- endif ()
496- endif ()
497-
498471if (LLAMA_RPC)
499472 add_compile_definitions (GGML_USE_RPC )
500473
@@ -1090,6 +1063,10 @@ elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM_LW
10901063 add_compile_definitions ($<$<COMPILE_LANGUAGE :C >:__AVX512VNNI__ >)
10911064 add_compile_definitions ($<$<COMPILE_LANGUAGE :CXX >:__AVX512VNNI__ >)
10921065 endif ()
1066+ if (LLAMA_AVX512_BF16)
1067+ add_compile_definitions ($<$<COMPILE_LANGUAGE :C >:__AVX512BF16__ >)
1068+ add_compile_definitions ($<$<COMPILE_LANGUAGE :CXX >:__AVX512BF16__ >)
1069+ endif ()
10931070 elseif (LLAMA_AVX2)
10941071 list (APPEND ARCH_FLAGS /arch:AVX2)
10951072 elseif (LLAMA_AVX)
@@ -1121,6 +1098,9 @@ elseif (CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64" OR CMAKE_GENERATOR_PLATFORM_LW
11211098 if (LLAMA_AVX512_VNNI)
11221099 list (APPEND ARCH_FLAGS -mavx512vnni)
11231100 endif ()
1101+ if (LLAMA_AVX512_BF16)
1102+ list (APPEND ARCH_FLAGS -mavx512bf16)
1103+ endif ()
11241104 endif ()
11251105elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64" )
11261106 message (STATUS "PowerPC detected" )
@@ -1130,6 +1110,17 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64")
11301110 list (APPEND ARCH_FLAGS -mcpu=native -mtune=native)
11311111 #TODO: Add targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be)
11321112 endif ()
1113+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64" )
1114+ message (STATUS "loongarch64 detected" )
1115+
1116+ list (APPEND ARCH_FLAGS -march=loongarch64)
1117+ if (LLAMA_LASX)
1118+ list (APPEND ARCH_FLAGS -mlasx)
1119+ endif ()
1120+ if (LLAMA_LSX)
1121+ list (APPEND ARCH_FLAGS -mlsx)
1122+ endif ()
1123+
11331124else ()
11341125 message (STATUS "Unknown architecture" )
11351126endif ()
@@ -1218,7 +1209,6 @@ add_library(ggml OBJECT
12181209 ${GGML_SOURCES_CUDA} ${GGML_HEADERS_CUDA}
12191210 ${GGML_SOURCES_OPENCL} ${GGML_HEADERS_OPENCL}
12201211 ${GGML_SOURCES_METAL} ${GGML_HEADERS_METAL}
1221- ${GGML_SOURCES_MPI} ${GGML_HEADERS_MPI}
12221212 ${GGML_SOURCES_RPC} ${GGML_HEADERS_RPC}
12231213 ${GGML_SOURCES_EXTRA} ${GGML_HEADERS_EXTRA}
12241214 ${GGML_SOURCES_SYCL} ${GGML_HEADERS_SYCL}
@@ -1306,7 +1296,7 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/LlamaConfig.cmake
13061296
13071297set (GGML_PUBLIC_HEADERS "ggml.h" "ggml-alloc.h" "ggml-backend.h"
13081298 "${GGML_HEADERS_CUDA} " "${GGML_HEADERS_OPENCL} "
1309- "${GGML_HEADERS_METAL} " "${GGML_HEADERS_MPI} " " ${ GGML_HEADERS_EXTRA} " )
1299+ "${GGML_HEADERS_METAL} " "${GGML_HEADERS_EXTRA} " )
13101300
13111301set_target_properties (ggml PROPERTIES PUBLIC_HEADER "${GGML_PUBLIC_HEADERS} " )
13121302install (TARGETS ggml PUBLIC_HEADER )
0 commit comments