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

ggml : use svcntb() for SVE vector length detection (#17474)

Signed-off-by: Adrien Gallouët <angt@huggingface.co>
Adrien Gallouët 1 месяц назад
Родитель
Сommit
e148380c7c
1 измененных файлов с 5 добавлено и 13 удалено
  1. 5 13
      ggml/src/ggml-cpu/ggml-cpu.c

+ 5 - 13
ggml/src/ggml-cpu/ggml-cpu.c

@@ -683,22 +683,14 @@ bool ggml_is_numa(void) {
 }
 
 #if defined(__ARM_ARCH)
-
-#if defined(__linux__) && defined(__aarch64__)
-#include <sys/auxv.h>
-#endif
-
-static void ggml_init_arm_arch_features(void) {
 #if defined(__aarch64__) && defined(__ARM_FEATURE_SVE)
-#if defined(__linux__)
-    ggml_arm_arch_features.sve_cnt = PR_SVE_VL_LEN_MASK & prctl(PR_SVE_GET_VL);
+#include <arm_sve.h>
+static void ggml_init_arm_arch_features(void) {
+    ggml_arm_arch_features.sve_cnt = svcntb();
+}
 #else
-    // TODO: add support of SVE for non-linux systems
-#error "TODO: SVE is not supported on this platform. To use SVE, sve_cnt needs to be initialized here."
-#endif
+static void ggml_init_arm_arch_features(void) {}
 #endif
-}
-
 #endif // __ARM_ARCH
 
 struct ggml_tensor * ggml_new_i32(struct ggml_context * ctx, int32_t value) {