summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Clayton <156335168+mattjcly@users.noreply.github.com>2024-03-29 03:27:42 -0400
committerGitHub <noreply@github.com>2024-03-29 09:27:42 +0200
commit809398709041ee854fbbad9b344bcfdcd3712d59 (patch)
tree691e25cbebe710f56ac818b02b368014bf7beebd
parent057400a3fd457f4f214684eeb171444663b47a23 (diff)
cmake : add explicit metal version options (#6370)
* cmake: add explicit metal version options * Update CMakeLists.txt --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
-rw-r--r--CMakeLists.txt13
1 files changed, 13 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4b590020..19fdfa46 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -113,6 +113,9 @@ option(LLAMA_METAL "llama: use Metal"
option(LLAMA_METAL_NDEBUG "llama: disable Metal debugging" OFF)
option(LLAMA_METAL_SHADER_DEBUG "llama: compile Metal with -fno-fast-math" OFF)
option(LLAMA_METAL_EMBED_LIBRARY "llama: embed Metal library" OFF)
+set(LLAMA_METAL_MACOSX_VERSION_MIN "" CACHE STRING
+ "llama: metal minimum macOS version")
+set(LLAMA_METAL_STD "" CACHE STRING "llama: metal standard version (-std flag)")
option(LLAMA_KOMPUTE "llama: use Kompute" OFF)
option(LLAMA_MPI "llama: use MPI" OFF)
option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF)
@@ -250,6 +253,16 @@ if (LLAMA_METAL)
set(XC_FLAGS -O3)
endif()
+ # Append macOS metal versioning flags
+ if (LLAMA_METAL_MACOSX_VERSION_MIN)
+ message(STATUS "Adding -mmacosx-version-min=${LLAMA_METAL_MACOSX_VERSION_MIN} flag to metal compilation")
+ list(APPEND XC_FLAGS -mmacosx-version-min=${LLAMA_METAL_MACOSX_VERSION_MIN})
+ endif()
+ if (LLAMA_METAL_STD)
+ message(STATUS "Adding -std=${LLAMA_METAL_STD} flag to metal compilation")
+ list(APPEND XC_FLAGS -std=${LLAMA_METAL_STD})
+ endif()
+
add_custom_command(
OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/default.metallib
COMMAND xcrun -sdk macosx metal ${XC_FLAGS} -c ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.metal -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ggml-metal.air