Spaces:
Runtime error
Runtime error
| cmake_minimum_required(VERSION 3.8) | |
| project("vicuna.cpp") | |
| set(CMAKE_CXX_STANDARD 20) | |
| set(CMAKE_CXX_STANDARD_REQUIRED true) | |
| set(CMAKE_C_STANDARD 11) | |
| if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE) | |
| set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) | |
| set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") | |
| endif() | |
| option(LLAMA_ALL_WARNINGS "llama: enable all compiler warnings" ON) | |
| option(LLAMA_ALL_WARNINGS_3RD_PARTY "llama: enable all compiler warnings in 3rd party libs" OFF) | |
| option(LLAMA_SANITIZE_THREAD "llama: enable thread sanitizer" OFF) | |
| option(LLAMA_SANITIZE_ADDRESS "llama: enable address sanitizer" OFF) | |
| option(LLAMA_SANITIZE_UNDEFINED "llama: enable undefined sanitizer" OFF) | |
| if (APPLE) | |
| option(LLAMA_NO_ACCELERATE "llama: disable Accelerate framework" OFF) | |
| option(LLAMA_NO_AVX "llama: disable AVX" OFF) | |
| option(LLAMA_NO_AVX2 "llama: disable AVX2" OFF) | |
| option(LLAMA_NO_FMA "llama: disable FMA" OFF) | |
| endif() | |
| if (NOT MSVC) | |
| if (LLAMA_SANITIZE_THREAD) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread") | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread") | |
| endif() | |
| if (LLAMA_SANITIZE_ADDRESS) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer") | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") | |
| endif() | |
| if (LLAMA_SANITIZE_UNDEFINED) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined") | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined") | |
| endif() | |
| endif() | |
| if (APPLE AND NOT LLAMA_NO_ACCELERATE) | |
| find_library(ACCELERATE_FRAMEWORK Accelerate) | |
| if (ACCELERATE_FRAMEWORK) | |
| message(STATUS "Accelerate framework found") | |
| set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} ${ACCELERATE_FRAMEWORK}) | |
| set(LLAMA_EXTRA_FLAGS ${LLAMA_EXTRA_FLAGS} -DGGML_USE_ACCELERATE) | |
| else() | |
| message(WARNING "Accelerate framework not found") | |
| endif() | |
| endif() | |
| if (LLAMA_ALL_WARNINGS) | |
| if (NOT MSVC) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \ | |
| -Wall \ | |
| -Wextra \ | |
| -Wpedantic \ | |
| -Wshadow \ | |
| -Wcast-qual \ | |
| -Wstrict-prototypes \ | |
| -Wpointer-arith \ | |
| -Wno-unused-function \ | |
| ") | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ | |
| -Wall \ | |
| -Wextra \ | |
| -Wpedantic \ | |
| -Wcast-qual \ | |
| ") | |
| else() | |
| # todo : msvc | |
| endif() | |
| endif() | |
| message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") | |
| if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") | |
| message(STATUS "ARM detected") | |
| else() | |
| message(STATUS "x86 detected") | |
| if (MSVC) | |
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") | |
| set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /arch:AVX2") | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX2") | |
| else() | |
| if(NOT LLAMA_NO_AVX) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx") | |
| endif() | |
| if(NOT LLAMA_NO_AVX2) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2") | |
| endif() | |
| if(NOT LLAMA_NO_FMA) | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfma") | |
| endif() | |
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mf16c") | |
| endif() | |
| endif() | |
| # if (LLAMA_PERF) | |
| # set(LLAMA_EXTRA_FLAGS ${LLAMA_EXTRA_FLAGS} -DGGML_PERF) | |
| # endif() | |
| add_executable(chat | |
| chat.cpp | |
| utils.cpp | |
| utils.h) | |
| add_executable(quantize | |
| quantize.cpp | |
| utils.cpp | |
| utils.h) | |
| add_library(ggml | |
| ggml.c | |
| ggml.h) | |
| target_compile_definitions(ggml PUBLIC ${LLAMA_EXTRA_FLAGS}) | |
| target_compile_definitions(chat PUBLIC ${LLAMA_EXTRA_FLAGS}) | |
| target_compile_definitions(quantize PUBLIC ${LLAMA_EXTRA_FLAGS}) | |
| target_link_libraries(ggml PRIVATE ${LLAMA_EXTRA_LIBS}) | |
| target_include_directories(ggml PUBLIC .) | |
| target_link_libraries(quantize PRIVATE ggml pthread) | |
| target_link_libraries(chat PRIVATE ggml pthread) | |