xctan commited on
Commit
de5e986
·
1 Parent(s): adf6b4b

ggml-cpu : rework weak alias on apple targets (llama/14146)

Browse files

* ggml-cpu : rework weak alias on apple targets

* fix powerpc detection

* fix ppc detection

* fix powerpc detection on darwin

ggml/cmake/common.cmake CHANGED
@@ -36,8 +36,7 @@ function(ggml_get_system_arch)
36
  (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
37
  CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64|amd64)$"))
38
  set(GGML_SYSTEM_ARCH "x86" PARENT_SCOPE)
39
- elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le " OR
40
- "${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "powerpc ")
41
  set(GGML_SYSTEM_ARCH "PowerPC" PARENT_SCOPE)
42
  elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64")
43
  set(GGML_SYSTEM_ARCH "loongarch64" PARENT_SCOPE)
 
36
  (NOT CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_GENERATOR_PLATFORM_LWR AND
37
  CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|i686|AMD64|amd64)$"))
38
  set(GGML_SYSTEM_ARCH "x86" PARENT_SCOPE)
39
+ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc|power")
 
40
  set(GGML_SYSTEM_ARCH "PowerPC" PARENT_SCOPE)
41
  elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "loongarch64")
42
  set(GGML_SYSTEM_ARCH "loongarch64" PARENT_SCOPE)
ggml/src/ggml-cpu/ggml-cpu-impl.h CHANGED
@@ -509,7 +509,7 @@ void ggml_barrier(struct ggml_threadpool * tp);
509
 
510
  #define GGML_DO_PRAGMA_(x) _Pragma (#x)
511
  #define GGML_DO_PRAGMA(x) GGML_DO_PRAGMA_(x)
512
- #if defined(GGML_CPU_GENERIC) || defined(__HIPCC__)
513
  // Note for Apple targets:
514
  // - clang: aliases are not supported on darwin
515
  // - all native kernels need to be implemented in both x86 and arm files
 
509
 
510
  #define GGML_DO_PRAGMA_(x) _Pragma (#x)
511
  #define GGML_DO_PRAGMA(x) GGML_DO_PRAGMA_(x)
512
+ #if defined(GGML_CPU_GENERIC) || defined(__HIPCC__) || defined(__APPLE__)
513
  // Note for Apple targets:
514
  // - clang: aliases are not supported on darwin
515
  // - all native kernels need to be implemented in both x86 and arm files
ggml/src/ggml-cpu/quants.c CHANGED
@@ -5,6 +5,10 @@
5
  #include "ggml-quants.h"
6
  #include "quants.h"
7
 
 
 
 
 
8
  #include <string.h>
9
  #include <assert.h>
10
  #include <float.h>
 
5
  #include "ggml-quants.h"
6
  #include "quants.h"
7
 
8
+ #if defined(__APPLE__)
9
+ #include "apple-fallback.h"
10
+ #endif
11
+
12
  #include <string.h>
13
  #include <assert.h>
14
  #include <float.h>
ggml/src/ggml-cpu/quants.h CHANGED
@@ -84,33 +84,6 @@ void ggml_vec_dot_iq1_m_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs,
84
  void ggml_vec_dot_iq4_nl_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, size_t bx, const void * GGML_RESTRICT vy, size_t by, int nrc);
85
  void ggml_vec_dot_iq4_xs_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, size_t bx, const void * GGML_RESTRICT vy, size_t by, int nrc);
86
 
87
- #if defined(GGML_CPU_GENERIC)
88
- #define quantize_row_q8_0_generic quantize_row_q8_0
89
- #define quantize_row_q8_1_generic quantize_row_q8_1
90
- #define quantize_row_q8_K_generic quantize_row_q8_K
91
- #define ggml_vec_dot_q4_0_q8_0_generic ggml_vec_dot_q4_0_q8_0
92
- #define ggml_vec_dot_q4_1_q8_1_generic ggml_vec_dot_q4_1_q8_1
93
- #define ggml_vec_dot_q5_0_q8_0_generic ggml_vec_dot_q5_0_q8_0
94
- #define ggml_vec_dot_q5_1_q8_1_generic ggml_vec_dot_q5_1_q8_1
95
- #define ggml_vec_dot_q8_0_q8_0_generic ggml_vec_dot_q8_0_q8_0
96
- #define ggml_vec_dot_tq1_0_q8_K_generic ggml_vec_dot_tq1_0_q8_K
97
- #define ggml_vec_dot_tq2_0_q8_K_generic ggml_vec_dot_tq2_0_q8_K
98
- #define ggml_vec_dot_q2_K_q8_K_generic ggml_vec_dot_q2_K_q8_K
99
- #define ggml_vec_dot_q3_K_q8_K_generic ggml_vec_dot_q3_K_q8_K
100
- #define ggml_vec_dot_q4_K_q8_K_generic ggml_vec_dot_q4_K_q8_K
101
- #define ggml_vec_dot_q5_K_q8_K_generic ggml_vec_dot_q5_K_q8_K
102
- #define ggml_vec_dot_q6_K_q8_K_generic ggml_vec_dot_q6_K_q8_K
103
- #define ggml_vec_dot_iq2_xxs_q8_K_generic ggml_vec_dot_iq2_xxs_q8_K
104
- #define ggml_vec_dot_iq2_xs_q8_K_generic ggml_vec_dot_iq2_xs_q8_K
105
- #define ggml_vec_dot_iq2_s_q8_K_generic ggml_vec_dot_iq2_s_q8_K
106
- #define ggml_vec_dot_iq3_xxs_q8_K_generic ggml_vec_dot_iq3_xxs_q8_K
107
- #define ggml_vec_dot_iq3_s_q8_K_generic ggml_vec_dot_iq3_s_q8_K
108
- #define ggml_vec_dot_iq1_s_q8_K_generic ggml_vec_dot_iq1_s_q8_K
109
- #define ggml_vec_dot_iq1_m_q8_K_generic ggml_vec_dot_iq1_m_q8_K
110
- #define ggml_vec_dot_iq4_nl_q8_0_generic ggml_vec_dot_iq4_nl_q8_0
111
- #define ggml_vec_dot_iq4_xs_q8_K_generic ggml_vec_dot_iq4_xs_q8_K
112
- #endif
113
-
114
  #ifdef __cplusplus
115
  }
116
  #endif
 
84
  void ggml_vec_dot_iq4_nl_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, size_t bx, const void * GGML_RESTRICT vy, size_t by, int nrc);
85
  void ggml_vec_dot_iq4_xs_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, size_t bx, const void * GGML_RESTRICT vy, size_t by, int nrc);
86
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  #ifdef __cplusplus
88
  }
89
  #endif
ggml/src/ggml-cpu/repack.cpp CHANGED
@@ -8,6 +8,10 @@
8
  #include "ggml-cpu-impl.h"
9
  #include "traits.h"
10
 
 
 
 
 
11
  #include <cmath>
12
  #include <cstring>
13
  #include <cassert>
 
8
  #include "ggml-cpu-impl.h"
9
  #include "traits.h"
10
 
11
+ #if defined(__APPLE__)
12
+ #include "apple-fallback.h"
13
+ #endif
14
+
15
  #include <cmath>
16
  #include <cstring>
17
  #include <cassert>
ggml/src/ggml-cpu/repack.h CHANGED
@@ -67,7 +67,7 @@ extern "C" {
67
  // Workaround for clang:
68
  // clang++ complains: ``error: call to 'ggml_gemm_q4_0_4x4_q8_0' is ambiguous''
69
  // repro: https://godbolt.org/z/oKdeWKonM (ICE), https://godbolt.org/z/1szq6P36v (ambiguous call)
70
- #if defined(GGML_CPU_CLANG_WORKAROUND) || !(defined(__GNUC__) && defined(__clang__)) || defined(__HIPCC__)
71
  void ggml_quantize_mat_q8_0_4x4(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
72
  void ggml_quantize_mat_q8_0_4x8(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
73
  void ggml_quantize_mat_q8_K_4x8(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
@@ -98,22 +98,6 @@ void ggml_gemm_q4_0_8x8_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs,
98
  void ggml_gemm_q4_K_8x8_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
99
  void ggml_gemm_iq4_nl_4x4_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
100
 
101
- #if defined(GGML_CPU_GENERIC)
102
- #define ggml_quantize_mat_q8_0_4x4_generic ggml_quantize_mat_q8_0_4x4
103
- #define ggml_quantize_mat_q8_0_4x8_generic ggml_quantize_mat_q8_0_4x8
104
- #define ggml_quantize_mat_q8_K_4x8_generic ggml_quantize_mat_q8_K_4x8
105
- #define ggml_gemv_q4_0_4x4_q8_0_generic ggml_gemv_q4_0_4x4_q8_0
106
- #define ggml_gemv_q4_0_4x8_q8_0_generic ggml_gemv_q4_0_4x8_q8_0
107
- #define ggml_gemv_q4_0_8x8_q8_0_generic ggml_gemv_q4_0_8x8_q8_0
108
- #define ggml_gemv_q4_K_8x8_q8_K_generic ggml_gemv_q4_K_8x8_q8_K
109
- #define ggml_gemv_iq4_nl_4x4_q8_0_generic ggml_gemv_iq4_nl_4x4_q8_0
110
- #define ggml_gemm_q4_0_4x4_q8_0_generic ggml_gemm_q4_0_4x4_q8_0
111
- #define ggml_gemm_q4_0_4x8_q8_0_generic ggml_gemm_q4_0_4x8_q8_0
112
- #define ggml_gemm_q4_0_8x8_q8_0_generic ggml_gemm_q4_0_8x8_q8_0
113
- #define ggml_gemm_q4_K_8x8_q8_K_generic ggml_gemm_q4_K_8x8_q8_K
114
- #define ggml_gemm_iq4_nl_4x4_q8_0_generic ggml_gemm_iq4_nl_4x4_q8_0
115
- #endif
116
-
117
  #if defined(__cplusplus)
118
  } // extern "C"
119
  #endif
 
67
  // Workaround for clang:
68
  // clang++ complains: ``error: call to 'ggml_gemm_q4_0_4x4_q8_0' is ambiguous''
69
  // repro: https://godbolt.org/z/oKdeWKonM (ICE), https://godbolt.org/z/1szq6P36v (ambiguous call)
70
+ #if defined(GGML_CPU_CLANG_WORKAROUND) || defined(__APPLE__) || !(defined(__GNUC__) && defined(__clang__)) || defined(__HIPCC__)
71
  void ggml_quantize_mat_q8_0_4x4(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
72
  void ggml_quantize_mat_q8_0_4x8(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
73
  void ggml_quantize_mat_q8_K_4x8(const float * GGML_RESTRICT x, void * GGML_RESTRICT vy, int64_t k);
 
98
  void ggml_gemm_q4_K_8x8_q8_K_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
99
  void ggml_gemm_iq4_nl_4x4_q8_0_generic(int n, float * GGML_RESTRICT s, size_t bs, const void * GGML_RESTRICT vx, const void * GGML_RESTRICT vy, int nr, int nc);
100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  #if defined(__cplusplus)
102
  } // extern "C"
103
  #endif