@@ -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