From: Jiahao Li Date: Sun, 23 Jul 2023 13:43:09 +0000 (+0800) Subject: cmake : sync metal compile scripts from llama.cpp (#407) X-Git-Tag: upstream/0.0.1642~1304 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=36582ce8093f3def2e61d6fd92597969273519c0;p=pkg%2Fggml%2Fsources%2Fggml cmake : sync metal compile scripts from llama.cpp (#407) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index ba89d536..0b774a43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ option(GGML_NO_ACCELERATE "ggml: disable Accelerate framework" OFF) option(GGML_OPENBLAS "ggml: use OpenBLAS" OFF) option(GGML_CLBLAST "ggml: use clBLAST" OFF) option(GGML_CUBLAS "ggml: use cuBLAS" OFF) +option(GGML_METAL "ggml: use Metal" OFF) # sanitizers diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2a1db244..6313b5e3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -203,6 +203,30 @@ if (GGML_CUBLAS) endif() endif() +if (GGML_METAL) + find_library(FOUNDATION_LIBRARY Foundation REQUIRED) + find_library(METAL_FRAMEWORK Metal REQUIRED) + find_library(METALKIT_FRAMEWORK MetalKit REQUIRED) + find_library(METALPERFORMANCE_FRAMEWORK MetalPerformanceShaders REQUIRED) + + set(GGML_METAL_SOURCES ggml-metal.m ggml-metal.h) + + add_compile_definitions(GGML_USE_METAL) + add_compile_definitions(GGML_METAL_NDEBUG) + + # get full path to the file + #add_compile_definitions(GGML_METAL_DIR_KERNELS="${CMAKE_CURRENT_SOURCE_DIR}/") + + # copy ggml-metal.metal to bin directory + configure_file(ggml-metal.metal ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.metal COPYONLY) + + set(GGML_EXTRA_LIBS ${GGML_EXTRA_LIBS} + ${FOUNDATION_LIBRARY} + ${METAL_FRAMEWORK} + ${METALKIT_FRAMEWORK} + ${METALPERFORMANCE_FRAMEWORK} + ) +endif() if (GGML_PERF) set(GGML_EXTRA_FLAGS ${GGML_EXTRA_FLAGS} -DGGML_PERF) @@ -212,7 +236,9 @@ add_library(${TARGET} ggml.c ../include/ggml/ggml.h ${GGML_CUDA_SOURCES} - ${GGML_OPENCL_SOURCES}) + ${GGML_OPENCL_SOURCES} + ${GGML_METAL_SOURCES} + ) target_include_directories(${TARGET} PUBLIC .