@@ -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,341 @@ 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+ // 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