Skip to content

Commit cadf515

Browse files
committed
metal : wip migrating ops
ggml-ci
1 parent d814b70 commit cadf515

File tree

4 files changed

+822
-565
lines changed

4 files changed

+822
-565
lines changed

ggml/src/ggml-metal/ggml-metal-context.h

Lines changed: 372 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ typedef struct ggml_metal_pipeline * ggml_metal_pipeline_t;
2727
ggml_metal_pipeline_t ggml_metal_pipeline_init(void);
2828
void ggml_metal_pipeline_free(ggml_metal_pipeline_t pipeline);
2929

30+
int ggml_metal_pipeline_max_theads_per_threadgroup(ggml_metal_pipeline_t pipeline);
31+
32+
// TODO: tmp
3033
void * ggml_metal_pipeline_get_obj(ggml_metal_pipeline_t pipeline);
3134

3235
// a collection of pipelines
@@ -38,6 +41,40 @@ void ggml_metal_pipelines_free(ggml_metal_pipelines_t ppls);
3841
void ggml_metal_pipelines_add(ggml_metal_pipelines_t ppls, const char * name, ggml_metal_pipeline_t pipeline);
3942
ggml_metal_pipeline_t ggml_metal_pipelines_get(ggml_metal_pipelines_t ppls, const char * name);
4043

44+
//
45+
// MTLCommandBuffer wrapper
46+
//
47+
48+
typedef void * ggml_metal_cmd_buf_t;
49+
50+
//
51+
// MTLComputeCommandEncoder wrapper
52+
//
53+
54+
typedef struct ggml_metal_encoder * ggml_metal_encoder_t;
55+
56+
ggml_metal_encoder_t ggml_metal_encoder_init(ggml_metal_cmd_buf_t cmd_buf_raw, bool concurrent);
57+
void ggml_metal_encoder_free(ggml_metal_encoder_t encoder);
58+
59+
void ggml_metal_encoder_debug_group_push(ggml_metal_encoder_t encoder, const char * name);
60+
void ggml_metal_encoder_debug_group_pop (ggml_metal_encoder_t encoder);
61+
62+
void ggml_metal_encoder_set_pipeline(ggml_metal_encoder_t encoder, ggml_metal_pipeline_t pipeline);
63+
64+
void ggml_metal_encoder_set_bytes (ggml_metal_encoder_t encoder, void * data, size_t size, int idx);
65+
void ggml_metal_encoder_set_buffer(ggml_metal_encoder_t encoder, struct ggml_metal_buffer_id buffer, int idx);
66+
67+
void ggml_metal_encoder_set_threadgroup_memory_size(ggml_metal_encoder_t encoder, size_t size, int idx);
68+
69+
void ggml_metal_encoder_dispatch_threadgroups(ggml_metal_encoder_t encoder, int tg0, int tg1, int tg2, int tptg0, int tptg1, int tptg2);
70+
71+
void ggml_metal_encoder_memory_barrier(ggml_metal_encoder_t encoder);
72+
73+
void ggml_metal_encoder_end_encoding(ggml_metal_encoder_t encoder);
74+
75+
// TODO: tmp
76+
void * ggml_metal_encoder_get_obj(ggml_metal_encoder_t encoder);
77+
4178
//
4279
// backend
4380
//
@@ -63,6 +100,341 @@ void ggml_metal_set_abort_callback (ggml_metal_t ctx, ggml_abort_callback abort
63100
bool ggml_metal_supports_family (ggml_metal_t ctx, int family);
64101
void ggml_metal_capture_next_compute(ggml_metal_t ctx);
65102

103+
//
104+
// graph encoder
105+
//
106+
107+
typedef struct ggml_metal_graph_encoder * ggml_metal_graph_encoder_t;
108+
109+
// TODO: tmp
110+
#include "ggml-metal-common.h"
111+
112+
// TODO: tmp
113+
struct ggml_metal_graph_encoder {
114+
ggml_metal_t ctx;
115+
116+
ggml_metal_encoder_t encoder;
117+
118+
ggml_mem_ranges_t mem_ranges;
119+
120+
struct ggml_cgraph * gf;
121+
122+
int idx_start;
123+
int idx_end;
124+
125+
bool use_fusion;
126+
127+
int debug_fusion;
128+
};
129+
130+
bool ggml_metal_graph_encoder_concurrency_reset(ggml_metal_graph_encoder_t ctx);
131+
bool ggml_metal_graph_encoder_concurrency_check(ggml_metal_graph_encoder_t ctx, const struct ggml_tensor * node);
132+
bool ggml_metal_graph_encoder_concurrency_add (ggml_metal_graph_encoder_t ctx, const struct ggml_tensor * node);
133+
134+
// TODO: tmp
135+
enum ggml_metal_pipeline_type {
136+
GGML_METAL_PIPELINE_TYPE_ADD_ID,
137+
GGML_METAL_PIPELINE_TYPE_REPEAT_F32,
138+
GGML_METAL_PIPELINE_TYPE_REPEAT_F16,
139+
GGML_METAL_PIPELINE_TYPE_REPEAT_I32,
140+
GGML_METAL_PIPELINE_TYPE_REPEAT_I16,
141+
GGML_METAL_PIPELINE_TYPE_SCALE,
142+
GGML_METAL_PIPELINE_TYPE_SCALE_4,
143+
GGML_METAL_PIPELINE_TYPE_CLAMP,
144+
GGML_METAL_PIPELINE_TYPE_TANH,
145+
GGML_METAL_PIPELINE_TYPE_RELU,
146+
GGML_METAL_PIPELINE_TYPE_SIGMOID,
147+
GGML_METAL_PIPELINE_TYPE_GELU,
148+
GGML_METAL_PIPELINE_TYPE_GELU_4,
149+
GGML_METAL_PIPELINE_TYPE_GELU_ERF,
150+
GGML_METAL_PIPELINE_TYPE_GELU_ERF_4,
151+
GGML_METAL_PIPELINE_TYPE_GELU_QUICK,
152+
GGML_METAL_PIPELINE_TYPE_GELU_QUICK_4,
153+
GGML_METAL_PIPELINE_TYPE_SILU,
154+
GGML_METAL_PIPELINE_TYPE_SILU_4,
155+
GGML_METAL_PIPELINE_TYPE_ELU,
156+
GGML_METAL_PIPELINE_TYPE_ABS,
157+
GGML_METAL_PIPELINE_TYPE_SGN,
158+
GGML_METAL_PIPELINE_TYPE_STEP,
159+
GGML_METAL_PIPELINE_TYPE_HARDSWISH,
160+
GGML_METAL_PIPELINE_TYPE_HARDSIGMOID,
161+
GGML_METAL_PIPELINE_TYPE_EXP,
162+
GGML_METAL_PIPELINE_TYPE_SOFT_MAX_F16,
163+
GGML_METAL_PIPELINE_TYPE_SOFT_MAX_F16_4,
164+
GGML_METAL_PIPELINE_TYPE_SOFT_MAX_F32,
165+
GGML_METAL_PIPELINE_TYPE_SOFT_MAX_F32_4,
166+
GGML_METAL_PIPELINE_TYPE_DIAG_MASK_INF,
167+
GGML_METAL_PIPELINE_TYPE_DIAG_MASK_INF_8,
168+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_F32,
169+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_F16,
170+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_BF16,
171+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q4_0,
172+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q4_1,
173+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q5_0,
174+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q5_1,
175+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q8_0,
176+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_MXFP4,
177+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q2_K,
178+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q3_K,
179+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q4_K,
180+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q5_K,
181+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_Q6_K,
182+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ2_XXS,
183+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ2_XS,
184+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ3_XXS,
185+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ3_S,
186+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ2_S,
187+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ1_S,
188+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ1_M,
189+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ4_NL,
190+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_IQ4_XS,
191+
GGML_METAL_PIPELINE_TYPE_GET_ROWS_I32,
192+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_F32,
193+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_F16,
194+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_BF16,
195+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_Q8_0,
196+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_Q4_0,
197+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_Q4_1,
198+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_Q5_0,
199+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_Q5_1,
200+
GGML_METAL_PIPELINE_TYPE_SET_ROWS_IQ4_NL,
201+
GGML_METAL_PIPELINE_TYPE_L2_NORM,
202+
GGML_METAL_PIPELINE_TYPE_GROUP_NORM,
203+
GGML_METAL_PIPELINE_TYPE_NORM,
204+
GGML_METAL_PIPELINE_TYPE_SSM_CONV_F32,
205+
GGML_METAL_PIPELINE_TYPE_SSM_SCAN_F32,
206+
GGML_METAL_PIPELINE_TYPE_SSM_SCAN_F32_GROUP,
207+
GGML_METAL_PIPELINE_TYPE_RWKV_WKV6_F32,
208+
GGML_METAL_PIPELINE_TYPE_RWKV_WKV7_F32,
209+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F32_F32,
210+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F32_F32_C4,
211+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F16_F32,
212+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F16_F32_C4,
213+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F16_F32_1ROW,
214+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F16_F32_L4,
215+
GGML_METAL_PIPELINE_TYPE_MUL_MV_F16_F16,
216+
GGML_METAL_PIPELINE_TYPE_MUL_MV_BF16_F32,
217+
GGML_METAL_PIPELINE_TYPE_MUL_MV_BF16_F32_C4,
218+
GGML_METAL_PIPELINE_TYPE_MUL_MV_BF16_F32_1ROW,
219+
GGML_METAL_PIPELINE_TYPE_MUL_MV_BF16_F32_L4,
220+
GGML_METAL_PIPELINE_TYPE_MUL_MV_BF16_BF16,
221+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q4_0_F32,
222+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q4_1_F32,
223+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q5_0_F32,
224+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q5_1_F32,
225+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q8_0_F32,
226+
GGML_METAL_PIPELINE_TYPE_MUL_MV_MXFP4_F32,
227+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F32_F32_R1_2,
228+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F32_F32_R1_3,
229+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F32_F32_R1_4,
230+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F32_F32_R1_5,
231+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F16_F32_R1_2,
232+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F16_F32_R1_3,
233+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F16_F32_R1_4,
234+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_F16_F32_R1_5,
235+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_0_F32_R1_2,
236+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_0_F32_R1_3,
237+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_0_F32_R1_4,
238+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_0_F32_R1_5,
239+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_1_F32_R1_2,
240+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_1_F32_R1_3,
241+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_1_F32_R1_4,
242+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_1_F32_R1_5,
243+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_0_F32_R1_2,
244+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_0_F32_R1_3,
245+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_0_F32_R1_4,
246+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_0_F32_R1_5,
247+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_1_F32_R1_2,
248+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_1_F32_R1_3,
249+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_1_F32_R1_4,
250+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_1_F32_R1_5,
251+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q8_0_F32_R1_2,
252+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q8_0_F32_R1_3,
253+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q8_0_F32_R1_4,
254+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q8_0_F32_R1_5,
255+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_MXFP4_F32_R1_2,
256+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_MXFP4_F32_R1_3,
257+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_MXFP4_F32_R1_4,
258+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_MXFP4_F32_R1_5,
259+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_K_F32_R1_2,
260+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_K_F32_R1_3,
261+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_K_F32_R1_4,
262+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q4_K_F32_R1_5,
263+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_K_F32_R1_2,
264+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_K_F32_R1_3,
265+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_K_F32_R1_4,
266+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q5_K_F32_R1_5,
267+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q6_K_F32_R1_2,
268+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q6_K_F32_R1_3,
269+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q6_K_F32_R1_4,
270+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_Q6_K_F32_R1_5,
271+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_IQ4_NL_F32_R1_2,
272+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_IQ4_NL_F32_R1_3,
273+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_IQ4_NL_F32_R1_4,
274+
GGML_METAL_PIPELINE_TYPE_MUL_MV_EXT_IQ4_NL_F32_R1_5,
275+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q2_K_F32,
276+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q3_K_F32,
277+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q4_K_F32,
278+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q5_K_F32,
279+
GGML_METAL_PIPELINE_TYPE_MUL_MV_Q6_K_F32,
280+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ2_XXS_F32,
281+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ2_XS_F32,
282+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ3_XXS_F32,
283+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ3_S_F32,
284+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ2_S_F32,
285+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ1_S_F32,
286+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ1_M_F32,
287+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ4_NL_F32,
288+
GGML_METAL_PIPELINE_TYPE_MUL_MV_IQ4_XS_F32,
289+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_F32_F32,
290+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_F16_F32,
291+
//GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_F16_F32_1ROW,
292+
//GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_F16_F32_L4,
293+
//GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_F16_F16,
294+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_BF16_F32,
295+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q4_0_F32,
296+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q4_1_F32,
297+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q5_0_F32,
298+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q5_1_F32,
299+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q8_0_F32,
300+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_MXFP4_F32,
301+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q2_K_F32,
302+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q3_K_F32,
303+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q4_K_F32,
304+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q5_K_F32,
305+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_Q6_K_F32,
306+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ2_XXS_F32,
307+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ2_XS_F32,
308+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ3_XXS_F32,
309+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ3_S_F32,
310+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ2_S_F32,
311+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ1_S_F32,
312+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ1_M_F32,
313+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ4_NL_F32,
314+
GGML_METAL_PIPELINE_TYPE_MUL_MV_ID_IQ4_XS_F32,
315+
GGML_METAL_PIPELINE_TYPE_MUL_MM_F32_F32,
316+
GGML_METAL_PIPELINE_TYPE_MUL_MM_F16_F32,
317+
GGML_METAL_PIPELINE_TYPE_MUL_MM_BF16_F32,
318+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q4_0_F32,
319+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q4_1_F32,
320+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q5_0_F32,
321+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q5_1_F32,
322+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q8_0_F32,
323+
GGML_METAL_PIPELINE_TYPE_MUL_MM_MXFP4_F32,
324+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q2_K_F32,
325+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q3_K_F32,
326+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q4_K_F32,
327+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q5_K_F32,
328+
GGML_METAL_PIPELINE_TYPE_MUL_MM_Q6_K_F32,
329+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ2_XXS_F32,
330+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ2_XS_F32,
331+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ3_XXS_F32,
332+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ3_S_F32,
333+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ2_S_F32,
334+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ1_S_F32,
335+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ1_M_F32,
336+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ4_NL_F32,
337+
GGML_METAL_PIPELINE_TYPE_MUL_MM_IQ4_XS_F32,
338+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_1,
339+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_2,
340+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_4,
341+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_6,
342+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_8,
343+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_10,
344+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MAP0_F16_NE20_16,
345+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_F32_F16,
346+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_F16_F16,
347+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_BF16_F16,
348+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q4_0_F16,
349+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q4_1_F16,
350+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q5_0_F16,
351+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q5_1_F16,
352+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q8_0_F16,
353+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_MXFP4_F16,
354+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q2_K_F16,
355+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q3_K_F16,
356+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q4_K_F16,
357+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q5_K_F16,
358+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_Q6_K_F16,
359+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ2_XXS_F16,
360+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ2_XS_F16,
361+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ3_XXS_F16,
362+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ3_S_F16,
363+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ2_S_F16,
364+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ1_S_F16,
365+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ1_M_F16,
366+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ4_NL_F16,
367+
GGML_METAL_PIPELINE_TYPE_MUL_MM_ID_IQ4_XS_F16,
368+
GGML_METAL_PIPELINE_TYPE_ROPE_NORM_F32,
369+
GGML_METAL_PIPELINE_TYPE_ROPE_NORM_F16,
370+
GGML_METAL_PIPELINE_TYPE_ROPE_MULTI_F32,
371+
GGML_METAL_PIPELINE_TYPE_ROPE_MULTI_F16,
372+
GGML_METAL_PIPELINE_TYPE_ROPE_VISION_F32,
373+
GGML_METAL_PIPELINE_TYPE_ROPE_VISION_F16,
374+
GGML_METAL_PIPELINE_TYPE_ROPE_NEOX_F32,
375+
GGML_METAL_PIPELINE_TYPE_ROPE_NEOX_F16,
376+
GGML_METAL_PIPELINE_TYPE_IM2COL_F16,
377+
GGML_METAL_PIPELINE_TYPE_IM2COL_F32,
378+
GGML_METAL_PIPELINE_TYPE_IM2COL_EXT_F16,
379+
GGML_METAL_PIPELINE_TYPE_IM2COL_EXT_F32,
380+
GGML_METAL_PIPELINE_TYPE_CONV_TRANSPOSE_1D_F32_F32,
381+
GGML_METAL_PIPELINE_TYPE_CONV_TRANSPOSE_1D_F16_F32,
382+
GGML_METAL_PIPELINE_TYPE_UPSCALE_F32,
383+
GGML_METAL_PIPELINE_TYPE_PAD_F32,
384+
GGML_METAL_PIPELINE_TYPE_PAD_REFLECT_1D_F32,
385+
GGML_METAL_PIPELINE_TYPE_ARANGE_F32,
386+
GGML_METAL_PIPELINE_TYPE_TIMESTEP_EMBEDDING_F32,
387+
GGML_METAL_PIPELINE_TYPE_ARGSORT_F32_I32_ASC,
388+
GGML_METAL_PIPELINE_TYPE_ARGSORT_F32_I32_DESC,
389+
GGML_METAL_PIPELINE_TYPE_LEAKY_RELU_F32,
390+
GGML_METAL_PIPELINE_TYPE_CPY_F32_F32,
391+
GGML_METAL_PIPELINE_TYPE_CPY_F32_F16,
392+
GGML_METAL_PIPELINE_TYPE_CPY_F32_BF16,
393+
GGML_METAL_PIPELINE_TYPE_CPY_F16_F16,
394+
GGML_METAL_PIPELINE_TYPE_CPY_F16_F32,
395+
GGML_METAL_PIPELINE_TYPE_CPY_BF16_F32,
396+
GGML_METAL_PIPELINE_TYPE_CPY_BF16_BF16,
397+
GGML_METAL_PIPELINE_TYPE_CPY_F32_I32,
398+
GGML_METAL_PIPELINE_TYPE_CPY_I32_F32,
399+
GGML_METAL_PIPELINE_TYPE_CPY_F32_Q8_0,
400+
GGML_METAL_PIPELINE_TYPE_CPY_F32_Q4_0,
401+
GGML_METAL_PIPELINE_TYPE_CPY_F32_Q4_1,
402+
GGML_METAL_PIPELINE_TYPE_CPY_F32_Q5_0,
403+
GGML_METAL_PIPELINE_TYPE_CPY_F32_Q5_1,
404+
GGML_METAL_PIPELINE_TYPE_CPY_F32_IQ4_NL,
405+
GGML_METAL_PIPELINE_TYPE_CPY_Q4_0_F32,
406+
GGML_METAL_PIPELINE_TYPE_CPY_Q4_0_F16,
407+
GGML_METAL_PIPELINE_TYPE_CPY_Q4_1_F32,
408+
GGML_METAL_PIPELINE_TYPE_CPY_Q4_1_F16,
409+
GGML_METAL_PIPELINE_TYPE_CPY_Q5_0_F32,
410+
GGML_METAL_PIPELINE_TYPE_CPY_Q5_0_F16,
411+
GGML_METAL_PIPELINE_TYPE_CPY_Q5_1_F32,
412+
GGML_METAL_PIPELINE_TYPE_CPY_Q5_1_F16,
413+
GGML_METAL_PIPELINE_TYPE_CPY_Q8_0_F32,
414+
GGML_METAL_PIPELINE_TYPE_CPY_Q8_0_F16,
415+
GGML_METAL_PIPELINE_TYPE_CONCAT,
416+
GGML_METAL_PIPELINE_TYPE_SQR,
417+
GGML_METAL_PIPELINE_TYPE_SQRT,
418+
GGML_METAL_PIPELINE_TYPE_SIN,
419+
GGML_METAL_PIPELINE_TYPE_COS,
420+
GGML_METAL_PIPELINE_TYPE_NEG,
421+
GGML_METAL_PIPELINE_TYPE_REGLU,
422+
GGML_METAL_PIPELINE_TYPE_GEGLU,
423+
GGML_METAL_PIPELINE_TYPE_SWIGLU,
424+
GGML_METAL_PIPELINE_TYPE_SWIGLU_OAI,
425+
GGML_METAL_PIPELINE_TYPE_GEGLU_ERF,
426+
GGML_METAL_PIPELINE_TYPE_GEGLU_QUICK,
427+
GGML_METAL_PIPELINE_TYPE_SUM_ROWS,
428+
GGML_METAL_PIPELINE_TYPE_MEAN,
429+
GGML_METAL_PIPELINE_TYPE_POOL_2D_AVG_F32,
430+
GGML_METAL_PIPELINE_TYPE_POOL_2D_MAX_F32,
431+
GGML_METAL_PIPELINE_TYPE_ARGMAX,
432+
433+
GGML_METAL_PIPELINE_TYPE_COUNT
434+
};
435+
436+
ggml_metal_pipeline_t ggml_metal_get_pipeline_by_type(ggml_metal_t ctx, enum ggml_metal_pipeline_type type);
437+
66438
#ifdef __cplusplus
67439
}
68440
#endif

0 commit comments

Comments
 (0)