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