From f9deafe8259590bf837b3a0fb1273601d27c4439 Mon Sep 17 00:00:00 2001 From: Roger Meier Date: Sun, 5 Nov 2023 18:32:58 +0100 Subject: [PATCH] build: support ppc64le build for make and CMake --- CMakeLists.txt | 8 ++++++-- Makefile | 8 ++++++++ ggml-quants.c | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b4eb18403c0b..cbe7cf543642e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -565,8 +565,12 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE endif() elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") 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() message(STATUS "Unknown architecture") endif() diff --git a/Makefile b/Makefile index 300c1e6c7e127..07771e0691724 100644 --- a/Makefile +++ b/Makefile @@ -337,6 +337,12 @@ ifneq ($(filter ppc64%,$(UNAME_M)),) endif endif +ifneq ($(filter ppc64le%,$(UNAME_M)),) + MK_CFLAGS += -mcpu=powerpc64le + MK_CXXFLAGS += -mcpu=powerpc64le + CUDA_POWER_ARCH = 1 +endif + else MK_CFLAGS += -march=rv64gcv -mabi=lp64d MK_CXXFLAGS += -march=rv64gcv -mabi=lp64d @@ -387,6 +393,8 @@ else endif #LLAMA_CUDA_NVCC ifdef CUDA_DOCKER_ARCH NVCCFLAGS += -Wno-deprecated-gpu-targets -arch=$(CUDA_DOCKER_ARCH) +else ifdef CUDA_POWER_ARCH + NVCCFLAGS += else NVCCFLAGS += -arch=native endif # CUDA_DOCKER_ARCH diff --git a/ggml-quants.c b/ggml-quants.c index 740be6dc5c798..3cbeb51e2d46e 100644 --- a/ggml-quants.c +++ b/ggml-quants.c @@ -39,7 +39,7 @@ inline static int32_t vaddvq_s32(int32x4_t v) { #ifdef __wasm_simd128__ #include #else -#ifdef __POWER9_VECTOR__ +#ifdef __powerpc64__ #include #undef bool #define bool _Bool