Просмотр исходного кода

build : support ppc64le build for make and CMake (#3963)

* build: support ppc64le build for make and CMake

* build: keep __POWER9_VECTOR__ ifdef and extend with __powerpc64__

Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>

---------

Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Roger Meier 2 лет назад
Родитель
Сommit
8e9361089d
3 измененных файлов с 15 добавлено и 3 удалено
  1. 6 2
      CMakeLists.txt
  2. 8 0
      Makefile
  3. 1 1
      ggml-quants.c

+ 6 - 2
CMakeLists.txt

@@ -574,8 +574,12 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE
     endif()
     endif()
 elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64")
 elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64")
     message(STATUS "PowerPC detected")
     message(STATUS "PowerPC detected")
-    add_compile_options(-mcpu=native -mtune=native)
-    #TODO: Add  targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be)
+    if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le")
+        add_compile_options(-mcpu=powerpc64le)
+    else()
+        add_compile_options(-mcpu=native -mtune=native)
+        #TODO: Add  targets for Power8/Power9 (Altivec/VSX) and Power10(MMA) and query for big endian systems (ppc64/le/be)
+    endif()
 else()
 else()
     message(STATUS "Unknown architecture")
     message(STATUS "Unknown architecture")
 endif()
 endif()

+ 8 - 0
Makefile

@@ -342,6 +342,12 @@ ifneq ($(filter ppc64%,$(UNAME_M)),)
 	endif
 	endif
 endif
 endif
 
 
+ifneq ($(filter ppc64le%,$(UNAME_M)),)
+	MK_CFLAGS   += -mcpu=powerpc64le
+	MK_CXXFLAGS += -mcpu=powerpc64le
+	CUDA_POWER_ARCH = 1
+endif
+
 else
 else
 	MK_CFLAGS   += -march=rv64gcv -mabi=lp64d
 	MK_CFLAGS   += -march=rv64gcv -mabi=lp64d
 	MK_CXXFLAGS += -march=rv64gcv -mabi=lp64d
 	MK_CXXFLAGS += -march=rv64gcv -mabi=lp64d
@@ -392,6 +398,8 @@ else
 endif #LLAMA_CUDA_NVCC
 endif #LLAMA_CUDA_NVCC
 ifdef CUDA_DOCKER_ARCH
 ifdef CUDA_DOCKER_ARCH
 	NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
 	NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH)
+else ifdef CUDA_POWER_ARCH
+	NVCCFLAGS +=
 else
 else
 	NVCCFLAGS += -arch=native
 	NVCCFLAGS += -arch=native
 endif # CUDA_DOCKER_ARCH
 endif # CUDA_DOCKER_ARCH

+ 1 - 1
ggml-quants.c

@@ -19,7 +19,7 @@
 #ifdef __wasm_simd128__
 #ifdef __wasm_simd128__
 #include <wasm_simd128.h>
 #include <wasm_simd128.h>
 #else
 #else
-#ifdef __POWER9_VECTOR__
+#if defined(__POWER9_VECTOR__) || defined(__powerpc64__)
 #include <altivec.h>
 #include <altivec.h>
 #undef bool
 #undef bool
 #define bool _Bool
 #define bool _Bool