]> git.djapps.eu Git - pkg/ggml/sources/ggml/commitdiff
cmake: Enable specifying exact PowerPC CPU architecture (#1138)
authorChristian Kastner <redacted>
Mon, 10 Mar 2025 18:19:58 +0000 (19:19 +0100)
committerGitHub <redacted>
Mon, 10 Mar 2025 18:19:58 +0000 (19:19 +0100)
In the process, guard automatic CPU detection with GGML_NATIVE.

https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html#index-mcpu-10

CMakeLists.txt
src/ggml-cpu/CMakeLists.txt

index 412d294dca42bfcbc3d0e921fc9568bce987f4fe..e94707ddaf0186e055250590ef81a061e2180202 100644 (file)
@@ -126,7 +126,8 @@ option(GGML_RVV              "ggml: enable rvv"              ON)
 option(GGML_VXE              "ggml: enable vxe"              ON)
 
 option(GGML_CPU_ALL_VARIANTS "ggml: build all variants of the CPU backend (requires GGML_BACKEND_DL)" OFF)
-set(GGML_CPU_ARM_ARCH "" CACHE STRING "ggml: CPU architecture for ARM")
+set(GGML_CPU_ARM_ARCH        "" CACHE STRING "ggml: CPU architecture for ARM")
+set(GGML_CPU_POWERPC_CPUTYPE "" CACHE STRING "ggml: CPU type for PowerPC")
 
 
 if (WIN32)
index d6c4a9c2992d7c83ca824cad563230478d67fd9a..913a440f2ed5ff019f43de60d00e21db47c96ffa 100644 (file)
@@ -289,15 +289,21 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
         endif()
     elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64")
         message(STATUS "PowerPC detected")
-        execute_process(COMMAND bash -c "grep POWER /proc/cpuinfo | head -n 1" OUTPUT_VARIABLE POWER_M)
-        if (${POWER_M} MATCHES "POWER10")
-            list(APPEND ARCH_FLAGS -mcpu=power10)
-        elseif (${POWER_M} MATCHES "POWER9")
-            list(APPEND ARCH_FLAGS -mcpu=power9)
-        elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le")
-            list(APPEND ARCH_FLAGS -mcpu=powerpc64le -mtune=native)
+        if (GGML_NATIVE)
+            execute_process(COMMAND bash -c "grep POWER /proc/cpuinfo | head -n 1" OUTPUT_VARIABLE POWER_M)
+            if (${POWER_M} MATCHES "POWER10")
+                list(APPEND ARCH_FLAGS -mcpu=power10)
+            elseif (${POWER_M} MATCHES "POWER9")
+                list(APPEND ARCH_FLAGS -mcpu=power9)
+            elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le")
+                list(APPEND ARCH_FLAGS -mcpu=powerpc64le -mtune=native)
+            else()
+                list(APPEND ARCH_FLAGS -mcpu=powerpc64 -mtune=native)
+            endif()
         else()
-            list(APPEND ARCH_FLAGS -mcpu=powerpc64 -mtune=native)
+            if (GGML_CPU_POWERPC_CPUTYPE)
+                list(APPEND ARCH_FLAGS -mcpu=${GGML_CPU_POWERPC_CPUTYPE})
+            endif()
         endif()
     elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64")
         message(STATUS "loongarch64 detected")