From 029deafc3ac110a238f21dd85b09092d255be9d6 Mon Sep 17 00:00:00 2001 From: msy-kato <62578291+msy-kato@users.noreply.github.com> Date: Wed, 10 Jul 2024 11:34:17 +0900 Subject: [PATCH] ggml : Add GGML_USE_SVE macro to disable SVE by default --- ggml/src/CMakeLists.txt | 1 + ggml/src/ggml-impl.h | 2 +- ggml/src/ggml-quants.c | 4 ++-- ggml/src/ggml.c | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ggml/src/CMakeLists.txt b/ggml/src/CMakeLists.txt index c6694df67..dffc455f6 100644 --- a/ggml/src/CMakeLists.txt +++ b/ggml/src/CMakeLists.txt @@ -963,6 +963,7 @@ if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR list(APPEND ARCH_FLAGS -mno-unaligned-access) endif() if (GGML_SVE) + list(APPEND GGML_CDEF_PUBLIC GGML_USE_SVE) list(APPEND ARCH_FLAGS -march=armv8.6-a+sve) endif() endif() diff --git a/ggml/src/ggml-impl.h b/ggml/src/ggml-impl.h index 1d2336190..52f1aba2a 100644 --- a/ggml/src/ggml-impl.h +++ b/ggml/src/ggml-impl.h @@ -144,7 +144,7 @@ extern "C" { #endif #endif -#if defined(__ARM_FEATURE_SVE) +#if (defined(__ARM_FEATURE_SVE) && defined(GGML_USE_SVE)) #include #endif diff --git a/ggml/src/ggml-quants.c b/ggml/src/ggml-quants.c index 0eb52e485..4103d7d50 100644 --- a/ggml/src/ggml-quants.c +++ b/ggml/src/ggml-quants.c @@ -3813,7 +3813,7 @@ void ggml_vec_dot_q4_0_q8_0(int n, float * restrict s, size_t bs, const void * r return; } #endif -#if defined(__ARM_FEATURE_SVE) +#if (defined(__ARM_FEATURE_SVE) && defined(GGML_USE_SVE)) const svbool_t ptrueh = svptrue_pat_b8(SV_VL16); const svbool_t ptruel = svnot_b_z(svptrue_b8(), ptrueh); @@ -5421,7 +5421,7 @@ void ggml_vec_dot_q8_0_q8_0(int n, float * restrict s, size_t bs, const void * r return; } #endif -#if defined(__ARM_FEATURE_SVE) +#if (defined(__ARM_FEATURE_SVE) && defined(GGML_USE_SVE)) svfloat32_t sumv0 = svdup_n_f32(0.0f); svfloat32_t sumv1 = svdup_n_f32(0.0f); diff --git a/ggml/src/ggml.c b/ggml/src/ggml.c index bc91ac3a7..de90d7754 100644 --- a/ggml/src/ggml.c +++ b/ggml/src/ggml.c @@ -21758,7 +21758,7 @@ int ggml_cpu_has_neon(void) { } int ggml_cpu_has_sve(void) { -#if defined(__ARM_FEATURE_SVE) +#if (defined(__ARM_FEATURE_SVE) && defined(GGML_USE_SVE)) // TODO: Currently, SVE 256 bit is only supported. GGML_ASSERT(svcntb() == QK8_0); return 1;