|
46 | 46 | #undef GGML_USE_LLAMAFILE |
47 | 47 | #endif |
48 | 48 |
|
| 49 | +#if defined(__ARM_FEATURE_SVE) |
| 50 | +#include <arm_sve.h> |
| 51 | +#endif |
| 52 | + |
49 | 53 | #ifdef GGML_USE_LLAMAFILE |
50 | 54 | #include "llamafile/sgemm.h" |
51 | 55 | #endif |
|
75 | 79 | // precomputed f32 table for f16 (256 KB) (simd-mappings.h) |
76 | 80 | float ggml_table_f32_f16[1 << 16]; |
77 | 81 |
|
78 | | -#if defined(__ARM_ARCH) |
79 | | -struct ggml_arm_arch_features_type { |
80 | | - int sve_cnt; |
81 | | -} ggml_arm_arch_features = { 0 }; |
82 | | -#endif |
83 | | - |
84 | | - |
85 | 82 | #if defined(_WIN32) |
86 | 83 |
|
87 | 84 | #define WIN32_LEAN_AND_MEAN |
@@ -682,25 +679,6 @@ bool ggml_is_numa(void) { |
682 | 679 | return g_state.numa.n_nodes > 1; |
683 | 680 | } |
684 | 681 |
|
685 | | -#if defined(__ARM_ARCH) |
686 | | - |
687 | | -#if defined(__linux__) && defined(__aarch64__) |
688 | | -#include <sys/auxv.h> |
689 | | -#endif |
690 | | - |
691 | | -static void ggml_init_arm_arch_features(void) { |
692 | | -#if defined(__aarch64__) && defined(__ARM_FEATURE_SVE) |
693 | | -#if defined(__linux__) |
694 | | - ggml_arm_arch_features.sve_cnt = PR_SVE_VL_LEN_MASK & prctl(PR_SVE_GET_VL); |
695 | | -#else |
696 | | - // TODO: add support of SVE for non-linux systems |
697 | | -#error "TODO: SVE is not supported on this platform. To use SVE, sve_cnt needs to be initialized here." |
698 | | -#endif |
699 | | -#endif |
700 | | -} |
701 | | - |
702 | | -#endif // __ARM_ARCH |
703 | | - |
704 | 682 | struct ggml_tensor * ggml_new_i32(struct ggml_context * ctx, int32_t value) { |
705 | 683 | GGML_ASSERT(!ggml_get_no_alloc(ctx)); |
706 | 684 |
|
@@ -3556,7 +3534,7 @@ int ggml_cpu_has_matmul_int8(void) { |
3556 | 3534 |
|
3557 | 3535 | int ggml_cpu_get_sve_cnt(void) { |
3558 | 3536 | #if defined(__ARM_ARCH) && defined(__ARM_FEATURE_SVE) |
3559 | | - return ggml_arm_arch_features.sve_cnt; |
| 3537 | + return svcntb(); |
3560 | 3538 | #else |
3561 | 3539 | return 0; |
3562 | 3540 | #endif |
@@ -3620,10 +3598,6 @@ void ggml_cpu_init(void) { |
3620 | 3598 | #endif |
3621 | 3599 | } |
3622 | 3600 |
|
3623 | | -#if defined(__ARM_ARCH) |
3624 | | - ggml_init_arm_arch_features(); |
3625 | | -#endif |
3626 | | - |
3627 | 3601 | is_first_call = false; |
3628 | 3602 | } |
3629 | 3603 |
|
|
0 commit comments