1#ifndef CKERNEL_ENGINE_H
2#define CKERNEL_ENGINE_H
29 void (*sgemm)(
int M,
int N,
int K,
30 const float *A,
int lda,
31 const float *B,
int ldb,
70 const float *norm_weight,
71 const uint16_t *mix_down_weight,
72 const uint16_t *mix_up_weight,
73 const uint16_t *inject_weight,
75 float *injection_output,
76 float *normalized_scratch,
77 float *dynamic_scratch,
86 const float *norm_weight,
87 const void *mix_down_weight,
88 const void *mix_up_weight,
89 const void *inject_weight,
91 float *injection_output,
92 float *normalized_scratch,
93 float *dynamic_scratch,
102 const float *norm_weight,
103 const void *mix_down_weight,
104 const void *mix_up_weight,
105 const void *inject_weight,
107 float *injection_output,
108 float *normalized_scratch,
109 float *dynamic_scratch,
118 const float *block_output,
119 const float *injection_weight,
125 const float *block_output,
126 const float *injection_weight,
133 const uint16_t *embedding,
134 const int64_t *layer_multipliers,
135 const int64_t *head_offsets,
136 const int64_t *head_vocab_sizes,
138 const float *token_state_in,
139 float *token_state_out,
147 const void *embedding,
148 const int64_t *layer_multipliers,
149 const int64_t *head_offsets,
150 const int64_t *head_vocab_sizes,
152 const float *token_state_in,
153 float *token_state_out,
161 const float *hyper_input,
162 const float *key_projected,
163 const float *value_projected,
164 const float *norm_key_weight,
165 const float *norm_query_weight,
166 const float *norm_conv_weight,
167 const uint16_t *conv_weight,
169 float *key_norm_scratch,
170 float *query_norm_scratch,
171 float *gated_scratch,
172 float *conv_norm_scratch,
173 const float *conv_state_in,
174 float *conv_state_out,
182 const float *hyper_input,
183 const float *key_projected,
184 const float *value_projected,
185 const float *norm_key_weight,
186 const float *norm_query_weight,
187 const float *norm_conv_weight,
188 const uint16_t *conv_weight,
190 float *key_norm_scratch,
191 float *query_norm_scratch,
192 float *gated_scratch,
193 float *conv_norm_scratch,
194 const float *conv_state_in,
195 float *conv_state_out,
203 const float *hyper_input,
204 const float *key_projected,
205 const float *value_projected,
206 const float *norm_key_weight,
207 const float *norm_query_weight,
208 const float *norm_conv_weight,
209 const uint16_t *conv_weight,
211 float *key_norm_scratch,
212 float *query_norm_scratch,
213 float *gated_scratch,
214 float *conv_norm_scratch,
215 const float *conv_state_in,
216 float *conv_state_out,
224 const float *projected_qk,
const float *index_key_cache_in,
225 const float *q_norm_weight,
const float *k_norm_weight,
226 float *selected_indices,
float *index_key_cache_out,
227 float *q_norm_scratch,
float *pooled_key_scratch,
228 float *block_score_scratch, int32_t *block_index_scratch,
229 int rows,
int query_heads,
int index_head_dim,
int token_budget,
230 int compress_ratio,
int rotary_dim,
int context_length,
231 int position,
float rope_theta,
float eps);
237 int aligned_embed_dim);
243 int aligned_embed_dim);
249 int aligned_embed_dim);
254 int aligned_embed_dim);
261 int M,
int N,
int K);
266 int M,
int N,
int K);
272 int M,
int N,
int K);
278 int M,
int N,
int K);
284 int M,
int N,
int K);
290 int M,
int N,
int K);
306 int M,
int N,
int K);
349 float *
const *weights,
350 float *
const *m_states,
351 float *
const *v_states,
352 const size_t *numels,
364 const float *
const *srcs,
365 const size_t *numels,
370 const size_t *numels,
376 const uint16_t *bias,
378 int M,
int N,
int K);
382 const uint16_t *input,
383 const uint16_t *weight,
395 int M,
int N,
int K);
405 int M,
int N,
int K);
410 const float *input_min,
411 const float *input_max,
412 const float *output_min,
413 const float *output_max,
415 int M,
int N,
int K);
438 int M,
int N,
int K);
444 int row_begin,
int row_end);
449 int M,
int N,
int K);
454 int M,
int N,
int K);
460 int row_begin,
int row_end);
465 int M,
int N,
int K);
470 int M,
int N,
int K);
476 int row_begin,
int row_end);
481 int M,
int N,
int K);
487 int M,
int N,
int K);
492 int M,
int N,
int K);
499 size_t a_bf16_bytes);
504 int M,
int N,
int K);
506 const float *A,
const void *B,
const float *bias,
float *
C,
507 int M,
int N,
int K, uint16_t *a_bf16,
size_t a_bf16_bytes);
512 int M,
int N,
int K);
514 const float *A,
const void *B,
const float *bias,
float *
C,
515 int M,
int N,
int K);
517 const float *A,
const void *B,
const float *bias,
float *
C,
519 uint16_t *input_bf16,
size_t input_bf16_bytes,
520 uint16_t *output_bf16,
size_t output_bf16_bytes,
521 uint16_t *bias_bf16,
size_t bias_bf16_bytes);
523 const float *input,
const void *weights,
const float *bias,
float *output,
524 int batch,
int out_channels,
int in_channels,
int temporal,
525 int patch_h,
int patch_w);
527 const float *image,
const void *weights_t0,
const void *weights_t1,
528 const float *bias,
float *output,
int channels,
int image_h,
int image_w,
529 int patch_size,
int out_channels,
int merge_size);
532 const float *image,
const void *weights_t0,
const void *weights_t1,
533 const float *bias,
float *output,
int channels,
int image_h,
int image_w,
534 int patch_size,
int out_channels,
int merge_size);
538 const float *q,
const float *k,
const float *v,
float *output,
539 int num_heads,
int num_kv_heads,
int num_tokens,
540 int head_dim,
int aligned_head_dim,
int kv_stride_tokens);
542 const float *q,
const float *k,
const float *v,
float *output,
543 int num_heads,
int num_kv_heads,
int num_tokens,
544 int head_dim,
int aligned_head_dim,
int kv_stride_tokens);
571 int M,
int N,
int K);
577 int M,
int N,
int K);
589 int M,
int N,
int K);
595 int M,
int N,
int K);
598void gemm_nt_q4_0(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
599void gemm_nt_q4_1(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
600void gemm_nt_q5_0(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
601void gemm_nt_q5_1(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
602void gemm_nt_q5_1_q8_1(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
604void gemm_nt_q5_1_q8_1_m2(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
605void gemm_nt_q5_1_q8_1_ref(
const void *A_q8,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
606void gemm_nt_q5_k(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
607void gemm_nt_q5_k_q8_k(
const void *A_q8,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
608void gemm_nt_q5_k_q8_k_m2(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
609void gemm_nt_q8_0(
const float *A,
const void *B,
const float *bias,
float *
C,
int M,
int N,
int K);
614void gemv_q4_0(
float *y,
const void *W,
const float *x,
int M,
int K);
615void gemv_q5_0(
float *y,
const void *W,
const float *x,
int M,
int K);
616void gemv_q5_1(
float *y,
const void *W,
const float *x,
int M,
int K);
617void gemv_q5_1_q8_1(
float *y,
const void *W,
const float *x,
int M,
int K);
619void gemv_q5_k(
float *y,
const void *W,
const float *x,
int M,
int K);
620void gemv_q5_k_q8_k(
float *y,
const void *W,
const void *x_q8,
int M,
int K);
621void gemv_q8_0(
float *y,
const void *W,
const float *x,
int M,
int K);
627 int M,
int K,
int ith,
int nth);
629 int M,
int K,
int ith,
int nth);
652void gemv_q5_0_q8_0(
float *y,
const void *W,
const void *x_q8,
int M,
int K);
655void gemv_q8_0_q8_0(
float *y,
const void *W,
const void *x_q8,
int M,
int K);
659 const float *bias,
int M,
int K);
663 const float *bias,
int M,
int K);
671 int num_rows,
int k);
704 int M,
int N,
int K);
710 int M,
int N,
int K);
724 int M,
int K,
int ith,
int nth);
726 int M,
int K,
int ith,
int nth);
731 int M,
int N,
int K);
737 int M,
int N,
int K);
756 const float *bias,
float *
C,
int M,
int N,
int K);
762 int M,
int N,
int K);
768 int M,
int N,
int K);
774 int M,
int N,
int K);
779 int M,
int N,
int K,
int ldc);
788 int M,
int N,
int K);
794 int M,
int N,
int K);
801 int M,
int N,
int K);
807 int M,
int N,
int K);
831 int tokens,
int heads,
int head_dim);
833 int heads,
int tokens,
int head_dim);
842 int M,
int N,
int K);
848 int M,
int N,
int K);
854 int M,
int N,
int K);
861 int M,
int N,
int K);
867 int M,
int N,
int K);
873 int M,
int N,
int K);
884 int M,
int N,
int K);
979 const float *Wq,
const float *Bq,
980 const float *Wk,
const float *Bk,
981 const float *Wv,
const float *Bv,
987 int aligned_embed_dim,
991 int aligned_head_dim,
992 int kv_stride_tokens,
1004 const void *Wq,
const float *Bq,
CKDataType wq_dt,
1005 const void *Wk,
const float *Bk,
CKDataType wk_dt,
1006 const void *Wv,
const float *Bv,
CKDataType wv_dt,
1012 int aligned_embed_dim,
1016 int aligned_head_dim,
1017 int kv_stride_tokens,
1053 const float *W_gate,
1055 const float *W_down,
1067 const float *W_gate,
1069 const float *W_down,
1070 const float *B_gate,
1072 const float *B_down,
1099 int aligned_embed_dim,
1100 int intermediate_dim,
1101 int aligned_intermediate_dim,
1106 int aligned_intermediate_dim);
1115 int M,
int N,
int K,
1122 int M,
int N,
int K);
1128 int M,
int N,
int K);
1135 int M,
int N,
int K);
1144 int tokens,
int d_model,
int aligned_embed_dim,
1148 const float *__restrict gamma,
1149 const float *__restrict beta,
1150 float *__restrict output_slice_base,
1151 float *__restrict mean_cache_slice,
1152 float *__restrict rstd_cache_slice,
1153 int num_tokens_in_slice,
1155 int aligned_embed_dim,
1160 const float *__restrict gamma,
1161 const float *__restrict beta,
1162 uint16_t *__restrict output_slice_base,
1163 float *__restrict mean_cache_slice,
1164 float *__restrict rstd_cache_slice,
1165 int num_tokens_in_slice,
1167 int aligned_embed_dim,
1169 float *scratch_input,
1170 float *scratch_output);
1173 const float *__restrict gamma,
1174 const float *__restrict beta,
1175 float *__restrict output_slice_base,
1176 float *__restrict mean_cache_slice,
1177 float *__restrict rstd_cache_slice,
1178 int num_tokens_in_slice,
1184 const float *__restrict gamma,
1185 const float *__restrict beta,
1186 uint16_t *__restrict output_slice_base,
1187 float *__restrict mean_cache_slice,
1188 float *__restrict rstd_cache_slice,
1189 int num_tokens_in_slice,
1192 float *scratch_input,
1193 float *scratch_output);
1201 int tokens,
int d_model,
float eps);
1208 int tokens,
int d_model,
float eps);
1215 int tokens,
int d_model,
float eps);
1225 int tokens,
int d_model,
int aligned_embed_dim);
1229 const uint16_t *input,
1236 int tokens,
int d_model,
int aligned_embed_dim,
1237 float *scratch_d_output,
1238 float *scratch_input,
1239 float *scratch_d_input);
1246 int dst_feature_offset);
1249 const float *branch_input,
1253 int branch_slice_dim,
1254 int num_branch_slices);
1263 int aligned_embed_dim,
1272 int aligned_embed_dim,
1280 int aligned_embed_dim,
1288 int aligned_embed_dim,
1296 int aligned_embed_dim,
1313 int aligned_embed_dim,
1317 const float *zero_centered_weight,
1322 int aligned_embed_dim,
1326 const float *weight,
1331 int aligned_embed_dim,
1339 int aligned_embed_dim,
1347 int aligned_embed_dim,
1364 int aligned_embed_dim,
1371 int aligned_embed_dim,
1378 int aligned_embed_dim,
1398 const float *rstd_cache,
1403 int aligned_embed_dim);
1408 const float *q_gamma,
1409 const float *k_gamma,
1417 const float *q_gamma,
1418 const float *k_gamma,
1427 const float *q_gamma,
1428 const float *k_gamma,
1436 const float *q_gamma,
1437 const float *k_gamma,
1445 const float *q_gamma,
1446 const float *k_gamma,
1454 const float *q_gamma,
1455 const float *k_gamma,
1463 const float *q_gamma,
1464 const float *k_gamma,
1480 const float *q_gamma,
const float *k_gamma,
1481 int num_heads,
int num_kv_heads,
1482 int num_tokens,
int head_dim,
float eps);
1484 const float *q_gamma,
const float *k_gamma,
1485 int num_heads,
int num_kv_heads,
1486 int num_tokens,
int head_dim,
float eps);
1488 const float *q_gamma,
1496 const float *hidden,
1497 const int32_t *token_ids,
1498 const void *per_layer_token_emb,
1499 const uint16_t *per_layer_model_proj,
1500 const float *per_layer_proj_norm,
1509 const float *hidden,
1510 const int32_t *token_ids,
1511 const uint16_t *per_layer_token_emb,
1512 const uint16_t *per_layer_model_proj,
1513 const float *per_layer_proj_norm,
1522 const float *per_layer_input,
1523 const float *inp_gate,
1525 const float *post_norm,
1526 const float *out_scale,
1533 const int *segment_lengths,
1535 int singleton_tail);
1559 const float *d_k_out,
1562 const float *q_gamma,
1563 const float *k_gamma,
1583 int aligned_embed_dim,
1587 const uint16_t *input,
1589 const float *rstd_cache,
1594 int aligned_embed_dim);
1603 int aligned_embed_dim,
1605 float *scratch_input,
1606 float *scratch_output);
1610 const int8_t *input,
1612 const float *rstd_cache,
1617 int aligned_embed_dim,
1618 float *scratch_d_output,
1619 float *scratch_input,
1620 float *scratch_d_input);
1629 int aligned_embed_dim,
1631 float *scratch_input,
1632 float *scratch_output);
1636 const uint8_t *input,
1638 const float *rstd_cache,
1643 int aligned_embed_dim,
1644 float *scratch_d_output,
1645 float *scratch_input,
1646 float *scratch_d_input);
1666 const float *d_output,
1673 const float *d_output,
1678 const float *d_output,
1686 const uint16_t *d_output,
1689 float *scratch_input,
1690 float *scratch_d_output,
1691 float *scratch_d_input);
1693 const uint16_t *d_output,
1696 float *scratch_input,
1697 float *scratch_d_output,
1698 float *scratch_d_input);
1707void geglu_forward_bf16(
const uint16_t *x, uint16_t *out,
int tokens,
int dim,
float *scratch);
1714 const uint16_t *d_out,
1720 void relu_forward(
const float *input,
float *output,
size_t n);
1723 const float *d_output,
1726 void relu2_forward(
const float *input,
float *output,
size_t n);
1728 const float *d_output,
1735 const uint16_t *d_output,
1743 int aligned_context_window);
1750 int aligned_context_window);
1753 const float *weights,
1756 int aligned_context_window);
1762 int aligned_context_window,
1767 const uint16_t *weights,
1770 int aligned_context_window,
1771 float *scratch_d_scores,
1772 float *scratch_weights);
1786 int aligned_head_dim,
1787 int aligned_context_window);
1798 int aligned_head_dim,
1799 int aligned_context_window);
1811 int aligned_head_dim,
1812 int aligned_context_window);
1824 int aligned_head_dim,
1825 int aligned_context_window);
1837 int aligned_head_dim,
1838 int aligned_context_window,
1856 int aligned_head_dim);
1867 int aligned_head_dim);
1890 size_t scores_bytes);
1902 size_t scores_bytes);
1915 size_t scores_bytes);
1927 size_t scores_bytes);
1952 const float *k_cache,
1953 const float *v_cache,
1963 const float *k_cache,
1964 const float *v_cache,
1975 size_t scores_bytes);
1977 const float *k_cache,
1978 const float *v_cache,
1989 size_t scores_bytes);
1999 int aligned_head_dim,
2000 int kv_stride_tokens);
2002 const float *q,
const float *k,
const float *v,
float *output,
2003 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2004 int aligned_head_dim,
int kv_stride_tokens,
2005 float *scores,
size_t scores_bytes,
2006 uint16_t *key_rows,
size_t key_rows_bytes,
2007 uint16_t *value_columns,
size_t value_columns_bytes,
2008 uint16_t *gemm_rows,
size_t gemm_rows_bytes,
2009 uint16_t *gemm_scores,
size_t gemm_scores_bytes);
2011 const float *q,
const float *k,
const float *v,
float *output,
2012 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2013 int aligned_head_dim,
int kv_stride_tokens,
int sliding_window,
2014 float *scores,
size_t scores_bytes,
2015 uint16_t *key_rows,
size_t key_rows_bytes,
2016 uint16_t *value_columns,
size_t value_columns_bytes,
2017 uint16_t *gemm_rows,
size_t gemm_rows_bytes,
2018 uint16_t *gemm_scores,
size_t gemm_scores_bytes);
2029 int aligned_head_dim,
2030 int kv_stride_tokens);
2040 int aligned_head_dim,
2041 int kv_stride_tokens);
2052 int aligned_head_dim,
2053 int kv_stride_tokens);
2064 int aligned_head_dim,
2065 int kv_stride_tokens);
2076 int aligned_head_dim,
2077 int kv_stride_tokens);
2080 const float *q,
const float *k,
const float *v,
float *output,
2081 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2082 int aligned_head_dim,
int kv_stride_tokens);
2085 const float *q,
const float *k,
const float *v,
float *output,
2086 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2087 int aligned_head_dim,
int kv_stride_tokens);
2097 int aligned_head_dim,
2098 int kv_stride_tokens);
2100 const float *q,
const float *k,
const float *v,
float *output,
2101 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2102 int aligned_head_dim,
int kv_stride_tokens);
2108 int aligned_head_dim,
2109 int kv_stride_tokens);
2119 int aligned_head_dim,
2120 int kv_stride_tokens);
2130 int aligned_head_dim,
2131 int kv_stride_tokens,
2135 const float *q,
const float *k,
const float *v,
float *output,
2136 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2137 int aligned_head_dim,
int kv_stride_tokens,
int visual_start,
2151 int aligned_head_dim,
2152 int kv_stride_tokens);
2165 int aligned_head_dim,
2166 int kv_stride_tokens);
2168 const float *q,
const float *k,
const float *v,
float *output,
2169 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2170 int aligned_head_dim,
int kv_stride_tokens,
2171 float *score_rows,
size_t score_rows_bytes,
2172 float *v_columns,
size_t v_columns_bytes,
2173 float *probability_row,
size_t probability_row_bytes);
2184 int aligned_head_dim,
2185 int kv_stride_tokens);
2187 const float *q,
const float *k,
const float *v,
float *output,
2188 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2189 int aligned_head_dim,
int kv_stride_tokens,
2190 float *rounded_kv,
size_t rounded_kv_bytes);
2197 const float *k_cache,
2198 const float *v_cache,
2205 int aligned_head_dim);
2207 const float *q_token,
const float *k_cache,
const float *v_cache,
2208 float *out_token,
int num_heads,
int num_kv_heads,
int kv_tokens,
2209 int cache_capacity,
int head_dim,
int aligned_head_dim,
2210 float *scores,
size_t scores_bytes,
2211 uint16_t *key_rows,
size_t key_rows_bytes,
2212 uint16_t *value_columns,
size_t value_columns_bytes,
2213 uint16_t *gemm_rows,
size_t gemm_rows_bytes,
2214 uint16_t *gemm_scores,
size_t gemm_scores_bytes);
2216 const float *q_token,
const float *k_cache,
const float *v_cache,
2217 float *out_token,
int num_heads,
int num_kv_heads,
int kv_tokens,
2218 int cache_capacity,
int head_dim,
int aligned_head_dim,
int sliding_window,
2219 float *scores,
size_t scores_bytes,
2220 uint16_t *key_rows,
size_t key_rows_bytes,
2221 uint16_t *value_columns,
size_t value_columns_bytes,
2222 uint16_t *gemm_rows,
size_t gemm_rows_bytes,
2223 uint16_t *gemm_scores,
size_t gemm_scores_bytes);
2225 const float *k_cache,
2226 const float *v_cache,
2233 int aligned_head_dim);
2235 const float *k_cache,
2236 const float *v_cache,
2242 int aligned_head_dim);
2248 const float *k_cache,
2249 const float *v_cache,
2257 int aligned_head_dim);
2261 const float *k_cache,
2262 const float *v_cache,
2269 int aligned_head_dim);
2272 const uint16_t *k_cache,
2273 const uint16_t *v_cache,
2280 int aligned_head_dim);
2314 const float *q_token,
2315 const uint16_t *k_cache,
2316 const uint16_t *v_cache,
2323 int aligned_head_dim,
2326 const float *q_token,
2327 const uint16_t *k_cache,
2328 const uint16_t *v_cache,
2335 int aligned_head_dim,
2339 const uint16_t *key_cache,
2340 const uint16_t *value_cache,
2341 const float *selected_indices,
2343 float *score_scratch,
2348 int selection_width,
2362 const uint16_t *k_cache,
2363 const uint16_t *v_cache,
2371 int aligned_head_dim,
2375 const uint16_t *k_cache,
2376 const uint16_t *v_cache,
2384 int aligned_head_dim,
2386 float *token_workspace,
2387 size_t token_workspace_bytes);
2389 const float *q,
const uint16_t *k_cache,
const uint16_t *v_cache,
2390 float *output,
int num_heads,
int num_kv_heads,
int q_tokens,
2391 int past_tokens,
int cache_capacity,
int head_dim,
int aligned_head_dim,
2393 size_t token_workspace_bytes);
2395 const float *q,
const uint16_t *k_cache,
const uint16_t *v_cache,
2396 float *output,
int num_heads,
int num_kv_heads,
int q_tokens,
2397 int past_tokens,
int cache_capacity,
int head_dim,
int aligned_head_dim,
2399 float *token_workspace,
size_t token_workspace_bytes);
2401 const float *q,
const uint16_t *k_cache,
const uint16_t *v_cache,
2402 float *output,
int num_heads,
int num_kv_heads,
int q_tokens,
2403 int past_tokens,
int cache_capacity,
int head_dim,
int aligned_head_dim,
2405 float *token_workspace,
size_t token_workspace_bytes,
2406 const int *segment_lengths,
int num_segments);
2408 const float *q,
const uint16_t *k_cache,
const uint16_t *v_cache,
2409 float *output,
int num_heads,
int num_kv_heads,
int q_tokens,
2410 int past_tokens,
int cache_capacity,
int head_dim,
int aligned_head_dim,
2412 float *token_workspace,
size_t token_workspace_bytes,
2413 const int *segment_lengths,
int num_segments);
2415 const float *q_token,
const uint16_t *k_cache,
const uint16_t *v_cache,
2416 float *out_token,
int num_heads,
int num_kv_heads,
int kv_tokens,
2417 int cache_capacity,
int head_dim,
int aligned_head_dim,
2420 const float *q_token,
const uint16_t *k_cache,
const uint16_t *v_cache,
2421 float *out_token,
int num_heads,
int num_kv_heads,
int kv_tokens,
2422 int cache_capacity,
int head_dim,
int aligned_head_dim,
int sliding_window);
2424 const float *q_token,
const uint16_t *k_cache,
const uint16_t *v_cache,
2425 float *out_token,
int num_heads,
int num_kv_heads,
int kv_tokens,
2426 int cache_capacity,
int head_dim,
int aligned_head_dim,
int sliding_window,
2430 const uint16_t *k_cache,
2431 const uint16_t *v_cache,
2439 int aligned_head_dim,
2441 float *token_workspace,
2442 size_t token_workspace_bytes,
2443 void *gqa_workspace,
2444 size_t gqa_workspace_bytes,
2445 int route_num_heads,
2446 int route_num_kv_heads,
2448 int route_query_tokens,
2449 int route_min_kv_tokens,
2451 int route_query_tile_size,
2452 int route_concurrent_query_tiles);
2458 const uint16_t *k_cache,
2459 const uint16_t *v_cache,
2467 int aligned_head_dim,
2478 int query_tile_size,
2479 int concurrent_query_tiles);
2482 const uint16_t *k_cache,
2483 const uint16_t *v_cache,
2491 int aligned_head_dim,
2492 int query_tile_size,
2493 int concurrent_query_tiles,
2495 size_t workspace_bytes);
2498 const float *q,
const uint16_t *k_cache,
const uint16_t *v_cache,
2499 float *output,
int num_heads,
int num_kv_heads,
int q_tokens,
2500 int past_tokens,
int cache_capacity,
int head_dim,
int aligned_head_dim,
2502 size_t token_workspace_bytes,
const int *segment_lengths,
2506 const uint16_t *k_cache,
2507 const uint16_t *v_cache,
2515 int aligned_head_dim,
2519 const uint16_t *k_cache,
2520 const uint16_t *v_cache,
2528 int aligned_head_dim,
2530 float *token_workspace,
2531 size_t token_workspace_bytes);
2538 const uint16_t *k_cache,
2539 const uint16_t *v_cache,
2547 int aligned_head_dim,
2556 const uint16_t *k_cache,
2557 const uint16_t *v_cache,
2564 int aligned_head_dim,
2573 const float *k_cache,
2574 const float *v_cache,
2581 int aligned_head_dim);
2595 int aligned_head_dim,
2596 int kv_stride_tokens,
2597 int sliding_window);
2599 const float *q,
const float *k,
const float *v,
float *output,
2600 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
2601 int aligned_head_dim,
int kv_stride_tokens,
int sliding_window,
2602 float *scores,
size_t scores_bytes,
2603 float *value_columns,
size_t value_columns_bytes,
2604 float *scaled_scores,
size_t scaled_scores_bytes);
2606 const float *q,
const float *k,
const float *v,
float *output,
2607 int num_heads,
int num_kv_heads,
int live_tokens,
int kv_stride_tokens,
2608 int head_dim,
int aligned_head_dim,
int sliding_window,
2609 float *scores,
size_t scores_bytes,
2610 float *value_columns,
size_t value_columns_bytes,
2611 float *scaled_scores,
size_t scaled_scores_bytes);
2622 int aligned_head_dim,
2623 int kv_stride_tokens,
2624 int sliding_window);
2634 int aligned_head_dim,
2635 int kv_stride_tokens,
2636 int sliding_window);
2643 int aligned_head_dim,
2644 int kv_stride_tokens,
2645 int sliding_window);
2661 const float *kernel,
2668 const float *kernel,
2675 const float *kernel,
2682 const float *kernel,
2689 const float *kernel,
2704 const float *conv_x,
2705 const float *kernel,
2740 const float *d_gate,
2783 float *d_packed_qkv,
2799 const float *dt_bias,
2809 const float *dt_bias,
2832 const float *dt_bias,
2841 const float *dt_bias,
2872 const float *d_state_out,
2884 const float *d_state_out,
2889 float *d_conv_total,
2948 float *d_packed_qkv,
2984 const float *d_k_out,
3003 const float *weight,
3011 const float *weight,
3022 const float *weight,
3040 int intermediate_dim,
3046 const float *weight,
3056 const float *weight,
3068 const float *weight,
3077 const float *dt_bias,
3151 const float *weight,
3198 const float *state_in,
3210 const float *state_in,
3223 const float *state_in,
3236 const float *state_in,
3250 const float *state_in,
3264 const float *state_in,
3278 const float *state_in,
3292 const float *state_in,
3303 const float *weight,
3311 const float *weight,
3319 const float *weight,
3336 const float *d_state_out,
3342 const float *state_in,
3343 const float *state_out,
3357 const float *q_token,
3358 const float *k_cache,
3359 const float *v_cache,
3366 int aligned_head_dim,
3367 int sliding_window);
3370 const float *q_token,
3371 const float *k_cache,
3372 const float *v_cache,
3379 int aligned_head_dim,
3380 int sliding_window);
3382 const float *q_token,
3383 const float *k_cache,
3384 const float *v_cache,
3390 int aligned_head_dim,
3391 int sliding_window);
3419 const float *k_cache,
3420 const float *v_cache,
3427 int aligned_head_dim);
3431 const float *__restrict v_token,
3432 float *__restrict k_cache,
3433 float *__restrict v_cache,
3438 int aligned_head_dim);
3441 float *__restrict kv_cache_v,
3442 const float *__restrict k,
3443 const float *__restrict v,
3450 float *__restrict kv_cache_v,
3451 const float *__restrict q,
3459 uint16_t *__restrict kv_cache_v,
3460 const float *__restrict k,
3461 const float *__restrict v,
3468 uint16_t *__restrict kv_cache_v,
3469 const float *__restrict k,
3470 const float *__restrict v,
3477 float *__restrict kv_cache_v,
3478 const float *__restrict k,
3479 const float *__restrict v,
3486 uint16_t *__restrict kv_cache_v,
3487 const float *__restrict k,
3488 const float *__restrict v,
3496 uint16_t *__restrict kv_cache_v,
3497 const float *__restrict k,
3498 const float *__restrict v,
3514 int aligned_head_dim);
3543 const uint16_t *W_fc1,
3544 const uint16_t *b_fc1,
3545 const uint16_t *W_fc2,
3546 const uint16_t *b_fc2,
3552 float *scratch_bias1_f,
3553 float *scratch_bias2_f,
3554 uint16_t *scratch_fc1_bf16);
3558 const uint16_t *W_fc1,
3559 const uint16_t *b_fc1,
3560 const uint16_t *W_fc2,
3561 const uint16_t *b_fc2,
3567 float *scratch_input_f,
3568 float *scratch_bias1_f,
3569 float *scratch_bias2_f,
3570 uint16_t *scratch_fc1_bf16);
3574 const uint16_t *W_fc1,
3575 const uint16_t *b_fc1,
3576 const uint16_t *W_fc2,
3577 const uint16_t *d_output,
3586 float *scratch_fc1_pre,
3587 uint16_t *scratch_fc1_act_bf16,
3588 float *scratch_d_fc1);
3592 const float *fc2_input,
3603 const float *fc1_input,
3621 const float *d_output,
3629 float *scratch_input,
3630 float *scratch_output);
3633 const uint16_t *d_output,
3636 float *scratch_input,
3637 float *scratch_d_output,
3638 float *scratch_d_input);
3654 const float *d_output,
3682 const float *d_output,
3693 const uint16_t *d_output,
3768 const float **vectors,
3769 const float *weights,
3790 const float *expert_output,
3791 float routing_weight,
3797 const float *routing_weights,
3798 const float *expert_up,
3799 const float *expert_down,
3803 int intermediate_dim,
3809 const float *routing_weights,
3810 const void *expert_up,
3811 const void *expert_down,
3815 int intermediate_dim,
3821 const float *routing_weights,
3822 const void *expert_up,
3823 const void *expert_down,
3827 int intermediate_dim,
3832 const float *routed,
3833 const void *shared_up,
3834 const void *shared_down,
3838 int intermediate_dim);
3843 const float *routing_weights,
3844 const float *expert_gate,
3845 const float *expert_up,
3846 const float *expert_down,
3850 int intermediate_dim,
3855 const float *routed,
3856 const float *shared_gate,
3857 const float *shared_up,
3858 const float *shared_down,
3862 int intermediate_dim);
3866 const float *routing_weights,
3867 const uint16_t *expert_gate,
3868 const uint16_t *expert_up,
3869 const uint16_t *expert_down,
3873 int intermediate_dim,
3878 const float *hidden,
const int *indices,
const float *routing_weights,
3879 const uint16_t *expert_gate,
const uint16_t *expert_up,
3880 const uint16_t *expert_down,
float *output,
int rows,
int hidden_dim,
3881 int intermediate_dim,
int n_experts,
int top_k,
3882 int row_begin,
int row_end);
3885 const float *hidden,
const int *indices,
const float *routing_weights,
3886 const uint16_t *expert_gate,
const uint16_t *expert_up,
3887 const uint16_t *expert_down,
float *output,
int rows,
int hidden_dim,
3888 int intermediate_dim,
int n_experts,
int top_k);
3891 const float *hidden,
const int *indices,
const float *routing_weights,
3892 const uint16_t *expert_gate_up,
const uint16_t *expert_down,
3893 float *output,
int rows,
int hidden_dim,
int intermediate_dim,
3894 int n_experts,
int top_k);
3897 int intermediate_dim);
3899 int intermediate_dim);
3901 int hidden_dim,
int intermediate_dim);
3904 const float *hidden,
3906 const float *routing_weights,
3907 const void *expert_gate,
3908 const void *expert_up,
3909 const void *expert_down,
3913 int intermediate_dim,
3917 size_t workspace_bytes);
3920 const float *hidden,
3922 const float *routing_weights,
3923 const void *expert_gate,
3924 const void *expert_up,
3925 const void *expert_down,
3929 int intermediate_dim,
3933 size_t workspace_bytes);
3936 const float *hidden,
3938 const float *routing_weights,
3939 const void *expert_gate,
3940 const void *expert_up,
3941 const void *expert_down,
3945 int intermediate_dim,
3949 size_t workspace_bytes);
3952 const float *hidden,
3954 const float *routing_weights,
3955 const void *expert_gate,
3956 const void *expert_up,
3957 const void *expert_down,
3961 int intermediate_dim,
3965 size_t workspace_bytes);
3968 const float *hidden,
3970 const float *routing_weights,
3971 const void *expert_gate,
3972 const void *expert_up,
3973 const void *expert_down,
3977 int intermediate_dim,
3981 size_t workspace_bytes);
3984 const float *hidden,
3986 const float *routing_weights,
3987 const void *expert_gate,
3988 const void *expert_up,
3989 const void *expert_down,
3993 int intermediate_dim,
3997 size_t workspace_bytes);
4000 const float *hidden,
4002 const float *routing_weights,
4003 const void *expert_gate,
4004 const void *expert_up,
4005 const void *expert_down,
4009 int intermediate_dim,
4013 size_t workspace_bytes);
4016 const float *hidden,
const int *indices,
const float *routing_weights,
4017 const void *expert_gate,
const void *expert_up,
const void *expert_down,
4018 float *output,
int rows,
int hidden_dim,
int intermediate_dim,
4019 int n_experts,
int top_k,
void *workspace,
size_t workspace_bytes);
4022 const float *hidden,
const int *indices,
const float *routing_weights,
4023 const void *expert_gate,
const void *expert_up,
const void *expert_down,
4024 float *output,
int rows,
int hidden_dim,
int intermediate_dim,
4025 int n_experts,
int top_k,
void *workspace,
size_t workspace_bytes);
4028 const float *hidden,
4029 const float *routed,
4030 const void *shared_gate,
4031 const void *shared_up,
4032 const void *shared_down,
4036 int intermediate_dim,
4038 size_t workspace_bytes);
4041 const float *hidden,
4042 const float *routed,
4043 const void *shared_gate,
4044 const void *shared_up,
4045 const void *shared_down,
4049 int intermediate_dim,
4051 size_t workspace_bytes);
4054 const float *hidden,
4055 const float *routed,
4056 const void *shared_gate,
4057 const void *shared_up,
4058 const void *shared_down,
4062 int intermediate_dim,
4064 size_t workspace_bytes);
4067 const float *hidden,
4068 const float *routed,
4069 const void *shared_gate,
4070 const void *shared_up,
4071 const void *shared_down,
4075 int intermediate_dim,
4077 size_t workspace_bytes);
4080 const float *hidden,
4082 const float *routing_weights,
4083 const void *expert_gate,
4084 const void *expert_up,
4085 const void *expert_down,
4089 int intermediate_dim,
4093 size_t workspace_bytes);
4096 const float *hidden,
4098 const float *routing_weights,
4099 const void *expert_gate,
4100 const void *expert_up,
4101 const void *expert_down,
4105 int intermediate_dim,
4109 size_t workspace_bytes);
4112 const float *hidden,
4114 const float *routing_weights,
4115 const void *expert_gate,
4116 const void *expert_up,
4117 const void *expert_down,
4118 const void *expert_gate_packed,
4119 const void *expert_up_packed,
4123 int intermediate_dim,
4127 size_t workspace_bytes);
4130 const float *hidden,
4132 const float *routing_weights,
4133 const void *expert_gate,
4134 const void *expert_up,
4135 const void *expert_down,
4139 int intermediate_dim,
4143 size_t workspace_bytes);
4146 const float *hidden,
4148 const float *routing_weights,
4149 const void *expert_gate,
4150 const void *expert_up,
4151 const void *expert_down,
4155 int intermediate_dim,
4159 size_t workspace_bytes);
4162 int intermediate_dim);
4165 const float *hidden,
4166 const float *routed,
4167 const void *shared_gate,
4168 const void *shared_up,
4169 const void *shared_down,
4170 const float *shared_gate_input,
4174 int intermediate_dim,
4176 size_t workspace_bytes);
4179 const float *hidden,
4180 const float *routed,
4181 const void *shared_gate,
4182 const void *shared_up,
4183 const void *shared_down,
4184 const float *shared_gate_input,
4188 int intermediate_dim,
4190 size_t workspace_bytes);
4193 const float *hidden,
const float *routed,
const void *shared_gate,
4194 const void *shared_up,
const void *shared_down,
4195 const float *shared_gate_input,
float *output,
int rows,
int hidden_dim,
4196 int intermediate_dim,
void *workspace,
size_t workspace_bytes);
4199 const float *hidden,
const float *routed,
const void *shared_gate,
4200 const void *shared_up,
const void *shared_down,
4201 const float *shared_gate_input,
float *output,
int rows,
int hidden_dim,
4202 int intermediate_dim,
void *workspace,
size_t workspace_bytes);
4205 const float *hidden,
const float *routed,
const void *shared_gate,
4206 const void *shared_up,
const void *shared_down,
4207 const float *shared_gate_input,
float *output,
int rows,
int hidden_dim,
4208 int intermediate_dim,
void *workspace,
size_t workspace_bytes);
4211 const float *hidden,
const float *routed,
const void *shared_gate,
4212 const void *shared_up,
const void *shared_down,
4213 const float *shared_gate_input,
float *output,
int rows,
int hidden_dim,
4214 int intermediate_dim,
void *workspace,
size_t workspace_bytes);
4217 const float *routed,
4218 const uint16_t *shared_gate,
4219 const uint16_t *shared_up,
4220 const uint16_t *shared_down,
4224 int intermediate_dim);
4226 const float *hidden,
const float *routed,
const uint16_t *shared_gate,
4227 const uint16_t *shared_up,
const uint16_t *shared_down,
float *output,
4228 int rows,
int hidden_dim,
int intermediate_dim,
4229 int row_begin,
int row_end);
4231 const float *hidden,
const float *routed,
const uint16_t *shared_gate,
4232 const uint16_t *shared_up,
const uint16_t *shared_down,
float *output,
4233 int rows,
int hidden_dim,
int intermediate_dim);
4235 const float *hidden,
const float *routed,
const uint16_t *shared_gate,
4236 const uint16_t *shared_up,
const uint16_t *shared_down,
4237 const uint16_t *shared_router,
float *output,
int rows,
4238 int hidden_dim,
int intermediate_dim);
4240 const float *hidden,
const float *routed,
const uint16_t *shared_gate,
4241 const uint16_t *shared_up,
const uint16_t *shared_down,
4242 const uint16_t *shared_router,
float *output,
int rows,
4243 int hidden_dim,
int intermediate_dim,
int row_begin,
int row_end);
4245 const float *hidden,
const float *routed,
const uint16_t *shared_gate,
4246 const uint16_t *shared_up,
const uint16_t *shared_down,
4247 const uint16_t *shared_router,
float *output,
int rows,
4248 int hidden_dim,
int intermediate_dim);
4250 const float *routed,
4251 const float *post_attn_residual,
4252 const uint16_t *shared_gate,
4253 const uint16_t *shared_up,
4254 const uint16_t *shared_down,
4256 float *routed_free_output,
4259 int intermediate_dim);
4261 const float *hidden,
const float *routed,
4262 const float *post_attn_residual,
const uint16_t *shared_gate,
4263 const uint16_t *shared_up,
const uint16_t *shared_down,
4264 float *main_output,
float *routed_free_output,
int rows,
4265 int hidden_dim,
int intermediate_dim,
int row_begin,
int row_end);
4267 const float *hidden,
const float *routed,
4268 const float *post_attn_residual,
const uint16_t *shared_gate,
4269 const uint16_t *shared_up,
const uint16_t *shared_down,
4270 float *main_output,
float *routed_free_output,
int rows,
4271 int hidden_dim,
int intermediate_dim);
4274 const float *correction_bias,
4283 float routed_scaling_factor);
4286 const float *hidden,
4288 const float *routing_weights,
4289 const float *expert_up,
4290 const float *expert_down,
4292 float *d_routing_weights,
4294 float *d_expert_down,
4297 int intermediate_dim,
4322 const float *logits,
4328 float routed_scaling_factor,
4330 size_t workspace_bytes);
4332 const float *logits,
4338 float routed_scaling_factor,
4340 size_t workspace_bytes);
4344 const float *weights,
4345 const float *d_weights,
4348 int n_experts_or_keys,
4361 const float *correction_bias,
4370 float routed_scaling_factor);
4381 int *verified_token);
4391 int *target_position,
4392 int *draft_position,
4393 int *accepted_count,
4394 int *rejected_count);
4408 const float *streams,
4425 const float *weights,
4426 const float *d_weights,
4451 float *score_scratch,
4463 float *score_scratch,
4475 float *score_scratch,
4476 float *key_transpose_scratch,
4525 const float *kv_b_proj,
4535 const uint16_t *kv_b_proj,
4544 const uint16_t *kv_b_proj,
4555 const float *compressed_kv,
4556 const uint16_t *kv_b_proj,
4567 const float *k_nope,
4579 const float *k_nope,
4580 const float *kv_a_packed,
4592 const float *q_packed,
4593 const float *k_nope,
4594 const float *kv_a_packed,
4607 const float *d_output,
4611 const float *attn_weights,
4620 int aligned_head_dim,
4621 int aligned_context_window);
4625 const float *d_output,
4629 const float *attn_weights,
4637 int aligned_head_dim,
4638 int aligned_context_window);
4642 const uint16_t *d_output,
4647 const float *attn_weights,
4656 int aligned_head_dim,
4657 int aligned_context_window,
4658 float *scratch_d_output,
4677 const char *scaling_type,
4678 float scaling_factor);
4684 const int32_t *positions,
4689 int original_context,
4693 float mscale_all_dim);
4700 int original_context,
4704 float mscale_all_dim);
4706 uint16_t *sin_cache,
4707 const int32_t *positions,
4712 int original_context,
4716 float mscale_all_dim);
4724 const char *scaling_type,
4725 float scaling_factor);
4729 const float *cos_cache,
4730 const float *sin_cache,
4734 int aligned_head_dim,
4738 const float *cos_cache,
4739 const float *sin_cache,
4743 int aligned_head_dim,
4750 const float *cos_cache,
4751 const float *sin_cache,
4755 int aligned_head_dim,
4760 const float *cos_cache,
4761 const float *sin_cache,
4765 int aligned_head_dim,
4772 const float *cos_cache,
4773 const float *sin_cache,
4777 int aligned_head_dim,
4779 float *scratch_d_out,
4780 float *scratch_d_x);
4784 const float *cos_cache,
4785 const float *sin_cache,
4789 int aligned_head_dim,
4793 const float *cos_cache,
4794 const float *sin_cache,
4798 int aligned_head_dim,
4800 int head_stride_tokens);
4803 const float *cos_cache,
4804 const float *sin_cache,
4808 int aligned_head_dim,
4810 int head_stride_tokens,
4816 const float *cos_cache,
4817 const float *sin_cache,
4822 int aligned_head_dim,
4827 const float *cos_cache,
4828 const float *sin_cache,
4833 int aligned_head_dim,
4838 float *q,
float *k,
const float *freq_factors,
int use_freq_factors,
4839 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
4840 int aligned_head_dim,
int pos_offset,
int rotary_dim,
float freq_base,
4841 int token_begin,
int token_end);
4845 const float *freq_factors,
4846 int use_freq_factors,
4851 int aligned_head_dim,
4856 float *q,
float *k,
const float *freq_factors,
int use_freq_factors,
4857 int num_heads,
int num_kv_heads,
int num_tokens,
int head_dim,
4858 int aligned_head_dim,
int pos_offset,
int rotary_dim,
float freq_base);
4862 const float *freq_factors,
4863 int use_freq_factors,
4868 int aligned_head_dim,
4875 const float *freq_factors,
4876 int use_freq_factors,
4880 int aligned_head_dim,
4885 const float *freq_factors,
4886 int use_freq_factors,
4890 int aligned_head_dim,
4897 const float *freq_factors,
4898 int use_freq_factors,
4903 int aligned_head_dim,
4909 const float *cos_cache,
4910 const float *sin_cache,
4915 int aligned_head_dim,
4918 int cache_rotary_dim);
4922 const float *cos_cache,
4923 const float *sin_cache,
4928 int aligned_head_dim,
4934 const float *cos_cache,
4935 const float *sin_cache,
4940 int aligned_head_dim,
4950 int aligned_head_dim,
4967 const int32_t *positions,
4972 int aligned_head_dim,
4988 int num_heads,
int num_kv_heads,
int num_tokens,
4989 int head_dim,
int aligned_head_dim,
int n_dims,
4990 int section_0,
int section_1,
int section_2,
int section_3,
4991 int n_ctx_orig,
float freq_base,
float freq_scale,
4992 float ext_factor,
float attn_factor,
4993 float beta_fast,
float beta_slow);
4995 int num_heads,
int num_kv_heads,
int num_tokens,
4996 int head_dim,
int aligned_head_dim,
int n_dims,
4997 int section_0,
int section_1,
int section_2,
int section_3,
4998 int n_ctx_orig,
float freq_base,
float freq_scale,
4999 float ext_factor,
float attn_factor,
5000 float beta_fast,
float beta_slow);
5003 float *q,
float *k,
const int32_t *positions,
5004 int num_heads,
int num_kv_heads,
int num_tokens,
5005 int head_dim,
int aligned_head_dim,
int n_dims,
5006 int section_0,
int section_1,
int section_2,
int section_3,
5007 int n_ctx_orig,
float freq_base,
float freq_scale,
5008 float ext_factor,
float attn_factor,
float beta_fast,
float beta_slow);
5011 int num_heads,
int num_kv_heads,
int num_tokens,
5012 int head_dim,
int aligned_head_dim,
int n_dims,
5013 int section_0,
int section_1,
int section_2,
int section_3,
5014 int n_ctx_orig,
float freq_base,
float freq_scale,
5015 float ext_factor,
float attn_factor,
5016 float beta_fast,
float beta_slow);
5024 int aligned_head_dim,
5031 const int32_t *positions,
5036 int aligned_head_dim,
5056 int aligned_head_dim,
5077 int aligned_head_dim,
5094 const float *cos_cache,
5095 const float *sin_cache,
5100 int aligned_head_dim,
5102 int q_stride_tokens,
5103 int k_stride_tokens);
5107 const float *cos_cache,
5108 const float *sin_cache,
5113 int aligned_head_dim,
5115 int q_stride_tokens,
5116 int k_stride_tokens,
5120 const float *d_k_out,
5123 const float *cos_cache,
5124 const float *sin_cache,
5129 int aligned_head_dim,
5133 const float *d_k_out,
5136 const float *cos_cache,
5137 const float *sin_cache,
5142 int aligned_head_dim,
5149 const float *cos_cache,
5150 const float *sin_cache,
5155 int aligned_head_dim,
5162 const float *cos_cache,
5163 const float *sin_cache,
5168 int aligned_head_dim,
5175 const float *cos_cache,
5176 const float *sin_cache,
5180 int aligned_head_dim,
5187 const uint16_t *d_k_out,
5190 const float *cos_cache,
5191 const float *sin_cache,
5196 int aligned_head_dim,
5198 float *scratch_dq_out,
5200 float *scratch_dk_out,
5210 const float *token_embeddings,
5211 const float *pos_embeddings,
5214 int aligned_embed_dim,
5221 const void *token_embeddings,
5222 const float *pos_embeddings,
5225 int aligned_embed_dim,
5232 const void *token_embeddings,
5233 const float *pos_embeddings,
5236 int aligned_embed_dim,
5243 const void *token_embeddings,
5244 const float *pos_embeddings,
5247 int aligned_embed_dim,
5254 const void *token_embeddings,
5255 const float *pos_embeddings,
5258 int aligned_embed_dim,
5265 const uint16_t *token_embeddings,
5266 const uint16_t *pos_embeddings,
5269 int aligned_embed_dim,
5276 const uint16_t *token_embeddings,
5277 const float *pos_embeddings,
5280 int aligned_embed_dim,
5290 const float *d_output,
5291 float *d_token_embeddings,
5292 float *d_pos_embeddings,
5295 int aligned_embed_dim,
5301 const uint16_t *d_output,
5302 uint16_t *d_token_embeddings,
5303 uint16_t *d_pos_embeddings,
5306 int aligned_embed_dim,
5312 const uint16_t *d_output,
5313 float *d_token_embeddings,
5314 float *d_pos_embeddings,
5317 int aligned_embed_dim,
5324 const int32_t *targets,
5330 const int32_t *targets,
5338 const int32_t *targets,
5343 float *scratch_logits,
5344 float *scratch_d_logits);
5349 int C,
int H,
int W,
int P);
5350 void patch2im(
const float *d_patches,
5352 int C,
int H,
int W,
int P);
5354 const float *position_embd,
5359 const float *position_embd,
5363 int start_position);
5365 const float *position_embd,
5370 int source_grid_size);
5372 const float *position_embd,
5377 int source_grid_size);
5379 const float *position_embd,
5384 int source_grid_size);
5387 const float *position_embd,
5392 int source_grid_size);
5394 const float *position_embd,
5398 int source_grid_size);
5434 const float *branch_input,
5438 int branch_slice_dim,
5439 int num_branch_slices);
5449 float *decoder_rows,
5451 int source_row_stride,
5452 int decoder_row_stride,
5455 int decoder_capacity);
5468 int C,
int H,
int W,
int P);
5471 int C,
int H,
int W,
int P);
CKDataType
Supported data types in C-Kernel-Engine.
void hyper_connection_mix_q4k_q5_0_q4k(const float *hyper_input, const float *norm_weight, const void *mix_down_weight, const void *mix_up_weight, const void *inject_weight, float *mixed_output, float *injection_output, float *normalized_scratch, float *dynamic_scratch, float *mix_scratch, int rows, int streams, int hidden_dim, int dynamic_dim, float eps, int emit_injection)
void gemm_nt_q4_0(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
Matrix-matrix multiply: C[M,N] = A[M,K] @ B[N,K]^T + bias.
void gemma4_per_layer_prepare_forward(float *per_layer_input, const float *hidden, const int32_t *token_ids, const void *per_layer_token_emb, const uint16_t *per_layer_model_proj, const float *per_layer_proj_norm, int tokens, int num_layers, int embed_dim, int per_layer_dim, int vocab_size, float eps)
void add_stream_reorder_2d(float *main_inout, float *aux_scratch, int grid_h, int grid_w, int embed_dim, int merge_size)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_segmented_f16cache_sliding_gemma4_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes, const int *segment_lengths, int num_segments)
ck_attention_prefill_schedule_t
@ CK_ATTN_PREFILL_SCHEDULE_QUERY_TILES
@ CK_ATTN_PREFILL_SCHEDULE_KV_HEADS
@ CK_ATTN_PREFILL_SCHEDULE_QUERY_HEADS
@ CK_ATTN_PREFILL_SCHEDULE_GQA_SHARED_KV_TILES
@ CK_ATTN_PREFILL_SCHEDULE_KV_GROUP_QUERY_TILES
void rope_backward_qk_pairwise_with_rotary_dim(const float *d_q_out, const float *d_k_out, float *d_q, float *d_k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim)
float ck_attention_pytorch_sdpa_scale_f32(int head_dim)
void attention_forward_causal_head_major_gqa_bf16(const uint16_t *q, const uint16_t *k, const uint16_t *v, float *scores, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window, float *scratch_q, float *scratch_k, float *scratch_v)
void dequant_q4_0_row(const void *src, float *dst, size_t n_elements)
Dequantize Q4_0 row (multiple blocks)
void hyper_connection_mix_bf16(const float *hyper_input, const float *norm_weight, const uint16_t *mix_down_weight, const uint16_t *mix_up_weight, const uint16_t *inject_weight, float *mixed_output, float *injection_output, float *normalized_scratch, float *dynamic_scratch, float *mix_scratch, int rows, int streams, int hidden_dim, int dynamic_dim, float eps, int emit_injection)
void gemm_nt_q6_k_q8_k_tile(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K, int m0, int m1, int n0, int n1)
Compute one C[m0:m1, n0:n1] tile for Q8_K activations x Q6_K weights.
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_sliding_gemma4_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes)
void embedding_forward_q6_k(const int32_t *token_ids, int token_count, int vocab_size, const void *token_embeddings, const float *pos_embeddings, float *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void attention_forward_causal_head_major_gqa_exact(const float *q, const float *k, const float *v, float *scores, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window)
void axpy_f32(float *y, const float *x, float alpha, int n)
In-place AXPY: y += alpha * x.
void rmsnorm_forward_int8(const int8_t *input, const float *gamma, int8_t *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps, float *scratch_input, float *scratch_output)
void position_embeddings_add_gemma4v_xy(float *x, const float *position_embd, int grid_h, int grid_w, int embed_dim, int source_grid_size)
size_t moe_swiglu_expert_q4k_q5k_workspace_bytes(int hidden_dim, int intermediate_dim)
void gemm_nt_bf16_pytorch_onednn_3_12_brgemm_bf16_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void deepseek_mla_partial_rope_concat_f32(const float *q_nope, const float *q_pe, const float *k_nope, const float *k_pe, const float *cos, const float *sin, float *query, float *key, int tokens, int heads, int qk_nope_dim, int qk_rope_dim)
void softmax_cross_entropy_loss_ptref(const float *logits, const int32_t *targets, int tokens, int vocab_size, float *d_logits, float *loss_out)
void attention_forward_decode_head_major_gqa_flash_f16cache(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_qtile64_schedule(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_prefill_schedule_t schedule)
void gemm_q6_k(float *Y, const void *W, const float *X, int M, int N, int K)
void ck_gemm_nt_head_major_q8_0(const float *attn_out, const void *wo, const float *bias, float *output, int tokens, int embed_dim, int num_heads, int head_dim)
Output projection from head-major attention (Q8_0 weights)
void attention_forward_causal_head_major_gqa_flash_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
int ck_flash_attn_choose_tile_k(int D_h)
void kv_cache_store_bf16(uint16_t *__restrict kv_cache_k, uint16_t *__restrict kv_cache_v, const float *__restrict k, const float *__restrict v, int layer, int pos, int num_kv_heads, int head_dim, int max_seq_len)
void rope_forward_qk_split_llama_token_range_f32(float *q, float *k, const float *freq_factors, int use_freq_factors, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base, int token_begin, int token_end)
void * ck_memcpy_parallel_dispatch(void *dst, const void *src, size_t size)
void kv_cache_store_f16(uint16_t *__restrict kv_cache_k, uint16_t *__restrict kv_cache_v, const float *__restrict k, const float *__restrict v, int layer, int pos, int num_kv_heads, int head_dim, int max_seq_len)
void attention_forward_decode_head_major_shared_kv_gemma4(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
void rope_forward_qk_strided(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int q_stride_tokens, int k_stride_tokens)
void moe_accumulate_expert_f32(float *output, const float *expert_output, float routing_weight, int hidden_dim)
Accumulate expert output: output += routing_weight * expert_output.
void attention_forward_causal_head_major_gqa_flash_strided_sliding_gemma4(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int sliding_window)
void swiglu_forward_exact(const float *input, float *output, int tokens, int dim)
int ck_gemm_nt_f16_ggml_oracle(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void mamba2_selective_state_update_decode_f32(const float *state_in, const float *x, const float *dt, const float *a, const float *b, const float *c, const float *d, float *state_out, float *y, int rows, int num_heads, int head_dim, int state_dim, int num_groups)
void spatial_merge_2x2(const float *input, float *output, int grid_h, int grid_w, int embed_dim)
void gated_deltanet_autoregressive_backward(const float *d_out, const float *d_state_out, const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, const float *state_out, float *d_q, float *d_k, float *d_v, float *d_g, float *d_beta, float *d_state_in, int num_heads, int state_dim, float norm_eps)
void qwen4_ple_gate_conv_inject_bf16(const float *hyper_input, const float *key_projected, const float *value_projected, const float *norm_key_weight, const float *norm_query_weight, const float *norm_conv_weight, const uint16_t *conv_weight, float *hyper_output, float *key_norm_scratch, float *query_norm_scratch, float *gated_scratch, float *conv_norm_scratch, const float *conv_state_in, float *conv_state_out, int rows, int streams, int hidden_dim, int kernel_size, int dilation, float eps)
void recurrent_split_conv_qkv_backward(const float *d_q, const float *d_k, const float *d_v, float *d_packed_qkv, int rows, int q_dim, int k_dim, int v_dim)
void rmsnorm_backward_bf16(const uint16_t *d_output, const uint16_t *input, const float *gamma, const float *rstd_cache, uint16_t *d_input, float *d_gamma, int tokens, int d_model, int aligned_embed_dim)
size_t fused_rmsnorm_qkv_prefill_head_major_quant_scratch_size(int aligned_embed_dim)
Get scratch buffer size for fused_rmsnorm_qkv_prefill_head_major_quant.
void rope_forward_qk_gemma4v_vision_xy(float *q, float *k, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int grid_w, int rotary_dim, float freq_base)
void recurrent_qk_l2_norm_pytorch_fp32_output(float *q, float *k, int rows, int q_dim, int k_dim, int head_dim, float eps)
void rmsnorm_forward_no_weight(const float *input, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void gemm_nt_fp32_exact_parallel_dispatch(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void attention_forward_full_head_major_gqa_tiled336_f16kv_fp32_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_bf16cache_pytorch_contract(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction)
void swiglu_forward_pytorch_bf16_storage(const float *input, float *output, int tokens, int dim)
void position_embeddings_add_tiled_2d_align_corners(float *x, const float *position_embd, int grid_h, int grid_w, int embed_dim, int merge_size, int source_grid_size)
void gemv_q5_1(float *y, const void *W, const float *x, int M, int K)
Auto-dispatch GEMV.
void rmsnorm_forward_fp64_sum(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void qwen4_ple_gate_conv_inject_llama_fp16(const float *hyper_input, const float *key_projected, const float *value_projected, const float *norm_key_weight, const float *norm_query_weight, const float *norm_conv_weight, const uint16_t *conv_weight, float *hyper_output, float *key_norm_scratch, float *query_norm_scratch, float *gated_scratch, float *conv_norm_scratch, const float *conv_state_in, float *conv_state_out, int rows, int streams, int hidden_dim, int kernel_size, int dilation, float eps)
void gemm_naive_parallel(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void qk_norm_forward_qwen4_pytorch_bf16_storage(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void rmsnorm_forward_qwen3next_pytorch_bf16_storage(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void recurrent_norm_sigmoid_gate_llama_avx2_forward(const float *x, const float *gate, const float *weight, float *out, int rows, int num_heads, int head_dim, float eps)
void recurrent_qk_l2_norm_pytorch_bf16_storage(float *q, float *k, int rows, int q_dim, int k_dim, int expanded_heads, int head_dim, float eps)
ck_attention_status_t attention_forward_decode_head_major_gqa_f16cache_regular_noscale(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window)
void rmsnorm_forward_llama_production(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void gemm_nt_f32_llama_production_output_range(const float *A, const float *B, const float *bias, float *C, int M, int N, int K, int output_begin, int output_end)
void attention_forward_causal_head_major_gqa_flash_strided_f16kv_workspace(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, float *rounded_kv, size_t rounded_kv_bytes)
void moe_swiglu_shared_forward_bf16(const float *hidden, const float *routed, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim)
void gemm_nt_q5_k_q8_k_m2(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void moe_relu2_expert_forward_q5_0_q8_0(const float *hidden, const int *indices, const float *routing_weights, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void attention_forward_full_head_major_gqa_flash_strided_bf16_storage(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void gemm_nt_q8_0_q8_0_contract_m2(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void gemv_fused_q8_0_bias_dispatch(float *y, const void *W, const float *x, const float *bias, int M, int K)
void gelu_erf_fp64_f32_inplace(float *data, size_t n)
void recurrent_qk_l2_norm_forward(float *q, float *k, int rows, int q_dim, int k_dim, int head_dim, float eps)
void rope_forward_qk_split_direct_muse_pytorch_bf16_storage(float *q, float *k, const float *freq_factors, int use_freq_factors, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base)
void ck_residual_add_token_major_bf16_storage(const float *a, const float *b, float *out, int tokens, int aligned_embed_dim)
void swiglu_forward(const float *input, float *output, int tokens, int dim)
void gemm_bias_silu_fused(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void gemm_nt_bf16_accurate_storage_row_range(const float *A, const void *B, const float *bias, float *C, int M, int N, int K, int row_begin, int row_end)
void geglu_backward_bf16_mixed(const uint16_t *x, const uint16_t *d_out, float *d_x, int tokens, int dim)
void backward_causal_softmax_head_major_bf16(uint16_t *d_scores, const uint16_t *weights, int num_heads, int num_tokens, int aligned_context_window, float *scratch_d_scores, float *scratch_weights)
void attention_forward_decode_head_major_gqa_flash_gemma4(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
void add_scaled_forward_bf16(const uint16_t *a, const uint16_t *b, uint16_t *y, float alpha, size_t n)
void attention_forward_decode_head_major_gqa_flash_f16kv(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
void mrope_qk_vision(float *q, float *k, const int32_t *positions, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void mamba2_conv1d_f32_parallel_dispatch(const float *state_in, const float *x, const float *weight, const float *bias, float *conv_out, float *state_out, int rows, int conv_dim, int kernel_size)
void geglu_forward_exact(const float *x, float *out, int tokens, int dim)
void qk_norm_forward_decode_exact(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void gemm_swiglu_fused(const float *x, const float *W_gate, const float *W_up, const float *b_gate, const float *b_up, float *output, int M, int N, int K)
void split_q_gate_backward(const float *d_q, const float *d_gate, float *d_packed_qg, int rows, int q_dim, int gate_dim, int group_dim)
void ck_set_num_threads(int num_threads)
int attention_forward_query_key_head_major_f32_decode_heads(const float *query, const float *key, const float *value, float *output, float *score_scratch, int num_heads, int query_tokens, int key_tokens, int head_dim, float scale)
void attention_forward_decode_head_major_gqa_flash_sliding_gemma4(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window)
void attn_gate_sigmoid_mul_pytorch_bf16_storage(const float *x, const float *gate, float *out, int rows, int num_heads, int state_dim)
int moe_swiglu_expert_forward_q4k_q8_0_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void swiglu_backward(const float *input, const float *d_output, float *d_input, int tokens, int dim)
void attention_flash_decode(float *out, const float *q, const float *k, const float *v, int T_q, int T_k, int H, int D_h, float scale)
Main flash attention function with SIMD dispatch.
void moe_swiglu_shared_forward_f32(const float *hidden, const float *routed, const float *shared_gate, const float *shared_up, const float *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim)
void mrope_qk_imrope_positions(float *q, float *k, const int32_t *positions, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void hyper_stream_expand_f32(const float *input, float *output, int rows, int streams, int hidden_dim)
void gelu_ggml_inplace(float *data, size_t n)
void gemm_nt_bf16_pytorch_onednn_3_12_brgemm_bf16_storage_workspace(const float *A, const void *B, const float *bias, float *C, int M, int N, int K, uint16_t *input_bf16, size_t input_bf16_bytes, uint16_t *output_bf16, size_t output_bf16_bytes, uint16_t *bias_bf16, size_t bias_bf16_bytes)
void gelu_backward_exact(const float *input, const float *d_output, float *d_input, size_t n)
void ck_gemm_nt_head_major_q5_0(const float *attn_out, const void *wo, const float *bias, float *output, int tokens, int embed_dim, int num_heads, int head_dim)
Output projection from head-major attention (auto-dispatch)
void axpy_zero_f32(float *y, const float *x, float alpha, int n)
Zero output then accumulate: y = 0; y += alpha * x.
int moe_swiglu_shared_forward_q8_0_gated_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, const float *shared_gate_input, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void fused_mlp_swiglu_prefill(const float *x, const float *W_gate, const float *W_up, const float *W_down, float *output, int seq_len, int hidden, int intermediate, float *scratch)
Fused MLP (Gate + Up + SwiGLU + Down) for prefill.
void gelu_exact_inplace(float *data, size_t n)
void gemm_nt_q4_k(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void moe_swiglu_shared_forward_bf16_row_range(const float *hidden, const float *routed, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim, int row_begin, int row_end)
void recurrent_norm_gate_backward(const float *d_out, const float *x, const float *gate, const float *weight, float *d_x, float *d_gate, float *d_weight, int rows, int num_heads, int head_dim, float eps)
void recurrent_sigmoid_forward_ggml(const float *x, float *out, int rows, int dim)
void hyper_stream_inject_bf16(const float *hyper_input, const float *block_output, const float *injection_weight, float *output, int rows, int streams, int hidden_dim)
void add_inplace_bf16(uint16_t *a, const uint16_t *b, size_t n)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_auto_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes, void *gqa_workspace, size_t gqa_workspace_bytes, int route_num_heads, int route_num_kv_heads, int route_head_dim, int route_query_tokens, int route_min_kv_tokens, int route_workers, int route_query_tile_size, int route_concurrent_query_tiles)
void gemm_blocked_serial_train_parallel_dispatch(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void mamba2_in_proj_split_f32(const float *projected, float *gate, float *hidden_bc, float *dt, int rows, int d_mlp, int intermediate_dim, int conv_dim, int num_heads)
void attention_backward_causal_head_major_gqa_bf16(const uint16_t *d_output, float *d_x, const uint16_t *q, const uint16_t *k, const uint16_t *v, const float *attn_weights, float *d_q, float *d_k, float *d_v, float *d_scores, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window, float *scratch_d_output, float *scratch_q, float *scratch_k, float *scratch_v)
void ck_residual_add_backward(const float *d_out, float *d_a, float *d_b, int tokens, int aligned_embed_dim)
void gemm_nn_parallel(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void gemm_nt_f16(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
NT GEMM wrapper for FP16 weights with the engine's standard ABI.
void deepseek_mla_attention_f32_workspace(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int qk_head_dim, int v_head_dim, float scale, float *scores, size_t scores_bytes)
void fused_mlp_swiglu_decode_tiled(const float *x, const float *W_gate, const float *W_up, const float *W_down, const float *b_gate, const float *b_up, const float *b_down, float *output, int D, int Hff)
void gemm_nt_bf16_pytorch_onednn_brgemm_bf16_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void rope_forward(float *x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset)
void kv_cache_repack_head_major_inplace(float *buf, int num_heads, int tokens, int cache_capacity, int aligned_head_dim)
void gelu_pytorch_erf_f32_inplace(float *data, size_t n)
void fused_mlp_swiglu_decode(const float *x, const float *W_gate, const float *W_up, const float *W_down, const float *b_gate, const float *b_up, const float *b_down, float *output, int D, int Hff)
void gemv_q5_1_q8_1_ref(float *y, const void *W, const void *x_q8, int M, int K)
void position_embeddings_add_tiled_2d(float *x, const float *position_embd, int grid_h, int grid_w, int embed_dim, int merge_size, int source_grid_size)
void gemm_backward_f32_train_parallel_dispatch_v2(const float *d_output, const float *input, const float *W, float *d_input, float *d_W, float *d_b, int T, int aligned_in, int aligned_out, int num_threads)
void gemma4_v_norm_forward_parallel_dispatch(const float *input, float *output, float *rstd_cache, int tokens, int num_kv_heads, int head_dim, float eps)
void yarn_rope_cache_explicit_positions_bf16(uint16_t *cos_cache, uint16_t *sin_cache, const int32_t *positions, int num_tokens, int rotary_dim, float freq_base, float factor, int original_context, float beta_fast, float beta_slow, float mscale, float mscale_all_dim)
void gemm_bias_relu_fused(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void gemm_nt_q5_1_q8_1_ref(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
void moe_swiglu_expert_forward_bf16(const float *hidden, const int *indices, const float *routing_weights, const uint16_t *expert_gate, const uint16_t *expert_up, const uint16_t *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void attention_forward_full_head_major_gqa_exact_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void layernorm_naive_serial_matched_precision(const float *input, const float *gamma, const float *beta, float *output, float *mean_cache, float *rstd_cache, int tokens, int d_model, float eps)
void gemv_q6_k(float *y, const void *W, const float *x, int M, int K)
void topk_batched_f32(const float *scores, int num_tokens, int n_experts, int k, int *indices, float *weights)
Batched top-K selection for multiple tokens.
void moe_relu2_expert_backward_f32(const float *d_output, const float *hidden, const int *indices, const float *routing_weights, const float *expert_up, const float *expert_down, float *d_hidden, float *d_routing_weights, float *d_expert_up, float *d_expert_down, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void backward_causal_softmax_head_major(float *d_scores, const float *weights, int num_heads, int num_tokens, int aligned_context_window)
void gemv_bf16_bf16_storage(float *y, const void *W, const float *x, int M, int K)
int moe_swiglu_expert_forward_q4k_q4k_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
size_t fused_mlp_swiglu_prefill_w1w2_quant_scratch_size(int aligned_embed_dim, int aligned_intermediate_dim)
Get scratch buffer size for fused_mlp_swiglu_prefill_w1w2_quant.
void attention_forward_causal_head_major(const float *q, const float *k, const float *v, float *scores, float *output, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window)
void attention_forward_mixed_visual_chunk_head_major_gqa_flash_strided_gemma4(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int visual_start, int visual_tokens)
void gemv_q8_0(float *y, const void *W, const float *x, int M, int K)
Auto-dispatch GEMV for Q8_0 weights based on CPU features.
void rope_forward_strided_with_rotary_dim(float *x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int head_stride_tokens, int rotary_dim)
void attention_forward_causal_head_major_gqa(const float *q, const float *k, const float *v, float *scores, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window)
void rmsnorm_forward_muse_weighted_pytorch_bf16_storage(const float *input, const float *weight, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void recurrent_split_qkv_backward(const float *d_q, const float *d_k, const float *d_v, float *d_packed_qkv, int rows, int q_dim, int k_dim, int v_dim)
void patch2im(const float *d_patches, float *d_image, int C, int H, int W, int P)
void fused_rmsnorm_qkv_prefill_head_major(const float *x, const float *gamma, const float *Wq, const float *Bq, const float *Wk, const float *Bk, const float *Wv, const float *Bv, float *Q, float *K, float *V, int seq_len, int embed_dim, int aligned_embed_dim, int num_heads, int num_kv_heads, int head_dim, int aligned_head_dim, int kv_stride_tokens, float eps, float *scratch)
Fused RMSNorm + QKV projection for prefill (head-major outputs)
int ck_multimodal_prefix_insert_f32(const float *source_rows, int32_t *token_ids, float *decoder_rows, int row_count, int source_row_stride, int decoder_row_stride, int copy_dim, int start_row, int decoder_capacity)
ck_attention_status_t attention_forward_decode_head_major_gqa_f16cache_gemma4_contract(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction)
void swiglu_forward_bf16(const uint16_t *input, uint16_t *output, int tokens, int dim)
int ck_gemm_bf16_amx_available(void)
void qk_norm_forward_parallel_dispatch(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
int moe_swiglu_shared_forward_q4k_q6k_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void rope_backward_bf16(const uint16_t *d_out, uint16_t *d_x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, float *scratch_d_out, float *scratch_d_x)
void attention_forward_full_head_major_gqa_flash_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void rope_backward_qk(const float *d_q_out, const float *d_k_out, float *d_q, float *d_k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset)
void relu_backward(const float *input, const float *d_output, float *d_input, size_t n)
void mlp_token_parallel_bf16(const uint16_t *input, const uint16_t *W_fc1, const uint16_t *b_fc1, const uint16_t *W_fc2, const uint16_t *b_fc2, float *fc1_output, float *output, int T, int aligned_dim, int num_threads, float *scratch_bias1_f, float *scratch_bias2_f, uint16_t *scratch_fc1_bf16)
void attention_forward_causal_head_major_gqa_flash_strided_sliding(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int sliding_window)
void geglu_backward_fp32(const float *x, const float *d_out, float *d_x, int tokens, int dim)
void ssm_conv1d_forward_llama_production_serial(const float *conv_x, const float *kernel, float *out, int kernel_size, int num_channels, int num_tokens, int num_seqs)
void layernorm_pytorch_welford_bf16_storage(const float *input, const float *gamma, const float *beta, float *output, float *mean_cache, float *rstd_cache, int tokens, int d_model, float eps)
void rope_forward_qk_strided_with_rotary_dim(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int q_stride_tokens, int k_stride_tokens, int rotary_dim)
void embedding_forward_q4_k(const int32_t *token_ids, int token_count, int vocab_size, const void *token_embeddings, const float *pos_embeddings, float *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void gated_deltanet_llama_avx2_prefill_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int rows, int num_heads, int group_count, int state_dim, float norm_eps)
void deepseek_csa_attention_f32(const float *q, const float *k, const float *v, const int *indices, float *out, float *attn, int query_tokens, int key_tokens, int heads, int dim, int top_k, float scale)
int attention_forward_query_key_head_major_f32_packed_k(const float *query, const float *key, const float *value, float *output, float *score_scratch, float *key_transpose_scratch, int num_heads, int query_tokens, int key_tokens, int head_dim, float scale)
void topk_softmax_backward_f32(const int *indices, const float *weights, const float *d_weights, float *d_scores, int num_tokens, int n_experts_or_keys, int k)
Backward for hard top-k followed by softmax over selected values.
void moe_swiglu_expert_forward_bf16_parallel_dispatch(const float *hidden, const int *indices, const float *routing_weights, const uint16_t *expert_gate, const uint16_t *expert_up, const uint16_t *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_bf16cache_pytorch_contract_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes)
void position_embeddings_add_tiled_2d_align_corners_bf16(float *x, const float *position_embd, int grid_h, int grid_w, int embed_dim, int merge_size, int source_grid_size)
void gemm_nt_q4_1(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
GEMM with transposed Q4_1 weights: C = A @ B^T.
const char * ck_q6_k_q8_k_provider_name(void)
void dequant_q5_0_row(const void *src, float *dst, size_t n_elements)
Dequantize Q5_0 row (multiple blocks)
void add_forward_f32(const float *a, const float *b, float *y, size_t n)
void mrope_qk_text(float *q, float *k, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void hyper_connection_mix_q6k_q5_0_q4k(const float *hyper_input, const float *norm_weight, const void *mix_down_weight, const void *mix_up_weight, const void *inject_weight, float *mixed_output, float *injection_output, float *normalized_scratch, float *dynamic_scratch, float *mix_scratch, int rows, int streams, int hidden_dim, int dynamic_dim, float eps, int emit_injection)
void quantize_batch_q8_k_4row_nearest_even(const float *x, void *y, int num_rows, int k)
void rope_precompute_cache_llama_cpu(float *cos_cache, float *sin_cache, int max_seq_len, int head_dim, float base, int rotary_dim, const char *scaling_type, float scaling_factor)
void rmsnorm_forward_muse_unweighted_pytorch_bf16_storage(const float *input, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void deepseek_mla_attention_bf16_phases_parallel_dispatch(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int qk_head_dim, int v_head_dim, float scale, float *scores, size_t scores_bytes)
void kv_cache_store_shared_q(float *__restrict kv_cache_k, float *__restrict kv_cache_v, const float *__restrict q, int layer, int pos, int num_heads, int head_dim, int max_seq_len)
float gradient_clip_norm_f32(float *grad, size_t numel, float max_norm)
Clip gradient norm (fp32)
void gemma4_per_layer_embed_forward(float *hidden, const float *per_layer_input, const float *inp_gate, const float *proj, const float *post_norm, const float *out_scale, int tokens, int layer, int num_layers, int embed_dim, int per_layer_dim, float eps, const int *segment_lengths, int num_segments, int singleton_tail)
void qk_norm_forward_muse_unweighted_scaled_pytorch_bf16_storage(float *q, float *k, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps, float q_scale)
void rmsnorm_forward_bf16(const uint16_t *input, const float *gamma, uint16_t *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void gemv_q8_0_q8_0_contract(float *y, const void *W, const float *x, int M, int K)
void gemv_q5_0_q8_0(float *y, const void *W, const void *x_q8, int M, int K)
Matrix-vector multiply with Q5_0 weights and Q8_0 input.
void recurrent_silu_forward_pytorch_bf16_input_fp32_output(const float *x, float *out, int rows, int dim)
void attn_gate_sigmoid_mul_forward(const float *x, const float *gate, float *out, int rows, int num_heads, int state_dim)
int moe_swiglu_expert_forward_q4k_q8_0_parallel_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void recurrent_dt_gate_expanded_forward(const float *alpha, const float *dt_bias, const float *a, float *gate, int rows, int num_heads, int state_dim)
void add_inplace_f32(float *a, const float *b, size_t n)
void qwen4_qsa_index_select_bf16(const float *projected_qk, const float *index_key_cache_in, const float *q_norm_weight, const float *k_norm_weight, float *selected_indices, float *index_key_cache_out, float *q_norm_scratch, float *pooled_key_scratch, float *block_score_scratch, int32_t *block_index_scratch, int rows, int query_heads, int index_head_dim, int token_budget, int compress_ratio, int rotary_dim, int context_length, int position, float rope_theta, float eps)
void gemv_q5_k_q8_k(float *y, const void *W, const void *x_q8, int M, int K)
void attention_forward_decode_head_major_gqa_flash_sliding(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window)
void ck_strict_store_next_gemm_a(const float *data, size_t elems)
void kv_cache_store_batch_f16(uint16_t *__restrict kv_cache_k, uint16_t *__restrict kv_cache_v, const float *__restrict k, const float *__restrict v, int start_pos, int num_tokens, int num_kv_heads, int head_dim, int max_seq_len)
void recurrent_split_conv_qkv_forward(const float *packed_qkv, float *q, float *k, float *v, int rows, int q_dim, int k_dim, int v_dim)
void rope_forward_qk_with_rotary_dim_cache_stride(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, int cache_rotary_dim)
void attention_forward_causal_head_major_gqa_flash_strided_gemma4(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void attention_forward_causal_head_major_gqa_flash_strided_sliding_gemma4_token_output(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int sliding_window)
int moe_swiglu_expert_forward_q4k_q5_0_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void attention_forward_causal_head_major_gqa_muse_eager_bf16_storage(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, float *scores, size_t scores_bytes, uint16_t *key_rows, size_t key_rows_bytes, uint16_t *value_columns, size_t value_columns_bytes, uint16_t *gemm_rows, size_t gemm_rows_bytes, uint16_t *gemm_scores, size_t gemm_scores_bytes)
void attention_forward_full_head_major_gqa_flash(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim)
void relu_forward_inplace_bf16(uint16_t *data, size_t n)
void attention_forward_chunk_head_major_gqa_flash_gemma4(const float *q_chunk, const float *k_cache, const float *v_cache, float *out_chunk, int num_heads, int num_kv_heads, int q_tokens, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
void recurrent_conv_state_update_forward(const float *state_in, const float *q, const float *k, const float *v, float *conv_x, float *state_out, int history_len, int num_seqs, int num_tokens, int q_dim, int k_dim, int v_dim)
void rope_forward_qk_pairwise_llama_cpu(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim)
void deepseek_mla_attention_decode_f32_workspace(const float *q, const float *k_cache, const float *v_cache, float *output, int num_heads, int num_kv_heads, int cache_len, int qk_head_dim, int v_head_dim, int max_seq_len, int cache_stride, float scale, float *scores, size_t scores_bytes)
void gemv_q5_0(float *y, const void *W, const float *x, int M, int K)
Auto-dispatch GEMV for Q5_0 weights based on CPU features.
void im2patch_bf16(const uint16_t *image, uint16_t *patches, int C, int H, int W, int P)
void attention_forward_causal_head_major_exact(const float *q, const float *k, const float *v, float *scores, float *output, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window)
void position_embeddings_add_tiled_2d_align_corners_fp32_interp_bf16(float *x, const float *position_embd, int grid_h, int grid_w, int embed_dim, int merge_size, int source_grid_size)
void gemm_nt_bf16_bf16_storage_parallel_dispatch(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void layernorm_naive_serial_bf16_storage(const float *input, const float *gamma, const float *beta, float *output, float *mean_cache, float *rstd_cache, int tokens, int d_model, float eps)
void attn_gate_softplus_mul_forward(const float *x, const float *gate, float *out, int rows, int num_heads, int state_dim)
void gemm_microkernel(const float *A, const float *B, float *C, int M, int N, int K, int B_transposed)
void moe_swiglu_shared_forward_bf16_parallel_dispatch(const float *hidden, const float *routed, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim)
int attention_forward_query_key_head_major_f32(const float *query, const float *key, const float *value, float *output, float *score_scratch, int num_heads, int query_tokens, int key_tokens, int head_dim, float scale)
void mlp_token_parallel(const float *input, const float *W_fc1, const float *b_fc1, const float *W_fc2, const float *b_fc2, float *fc1_output, float *output, int T, int aligned_dim, int num_threads)
void ck_layout_token_to_head_f32(const float *src, float *dst, int tokens, int heads, int head_dim)
void recurrent_conv_state_update_backward_workspace(const float *d_conv_x, const float *d_state_out, float *d_state_in, float *d_q, float *d_k, float *d_v, float *d_conv_total, int history_len, int num_seqs, int num_tokens, int q_dim, int k_dim, int v_dim)
void deepseek_mhc_mix_f32(const float *streams, const float *mix, float *out, int tokens, int n_streams, int dim)
void gemm_nt_q8_0_q8_0_m2n4_tile(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K, int ldc)
void group_limited_topk_router_sigmoid_f32(const float *logits, const float *correction_bias, int *indices, float *weights, int rows, int n_experts, int top_k, int n_group, int topk_group, int norm_topk_prob, float routed_scaling_factor)
void kv_cache_store_batch_f32(float *__restrict kv_cache_k, float *__restrict kv_cache_v, const float *__restrict k, const float *__restrict v, int start_pos, int num_tokens, int num_kv_heads, int head_dim, int max_seq_len)
int moe_swiglu_expert_forward_q4k_q5k_parallel_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void moe_swiglu_shared_forward_bf16_gated(const float *hidden, const float *routed, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, const uint16_t *shared_router, float *output, int rows, int hidden_dim, int intermediate_dim)
void gemm_nt_q6_k_q8_k_m4_tile(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K, int m0, int m1, int n0, int n1)
int moe_softmax_topk_router_llama_f32_workspace(const float *logits, int *indices, float *weights, int rows, int n_experts, int top_k, float routed_scaling_factor, void *workspace, size_t workspace_bytes)
void deepseek_mla_kv_decompress_bf16(const float *compressed_kv, const uint16_t *kv_b_proj, float *k_nope, float *value, int tokens, int heads, int kv_lora_rank, int qk_nope_dim, int v_dim)
void softmax_cross_entropy_loss_bf16(const uint16_t *logits, const int32_t *targets, int tokens, int vocab_size, uint16_t *d_logits, float *loss_out, float *scratch_logits, float *scratch_d_logits)
void gemm_nt_q5_1_q8_1(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void deepseek_mla_kv_decompress_f32(const float *compressed_kv, const float *kv_b_proj, float *k_nope, float *value, int tokens, int heads, int kv_lora_rank, int qk_nope_dim, int v_dim)
void moe_relu2_expert_forward_f32(const float *hidden, const int *indices, const float *routing_weights, const float *expert_up, const float *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void feature_slice_copy(const float *src, float *dst, int rows, int src_dim, int dst_dim, int dst_feature_offset)
void rope_backward_qk_bf16(const uint16_t *d_q_out, const uint16_t *d_k_out, uint16_t *d_q, uint16_t *d_k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, float *scratch_dq_out, float *scratch_dq, float *scratch_dk_out, float *scratch_dk)
void gemm_nt_bf16_native_bf16_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void gemm_nt_q4_k_q8_k(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
void attention_forward_causal_head_major_shared_kv_gemma4(const float *q, float *output, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void qk_norm_backward(const float *d_q_out, const float *d_k_out, const float *q_in, const float *k_in, const float *q_gamma, const float *k_gamma, float *d_q_in, float *d_k_in, float *d_q_gamma, float *d_k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void recurrent_sigmoid_forward_pytorch_bf16_input_fp32_output(const float *x, float *out, int rows, int dim)
void attention_forward_full_head_major_gqa_tiled_f16kv_fp32_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_contract(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction)
void deepseek_mla_kv_decompress_bf16_token_range(const float *compressed_kv, const uint16_t *kv_b_proj, float *k_nope, float *value, int tokens, int heads, int kv_lora_rank, int qk_nope_dim, int v_dim, int token_begin, int token_end)
void ck_layout_head_to_token_f32(const float *src, float *dst, int heads, int tokens, int head_dim)
void recurrent_silu_forward_ggml(const float *x, float *out, int rows, int dim)
void weighted_sum_f32(float *y, const float **vectors, const float *weights, int k, int n)
Weighted sum of k vectors: y = sum_i(weights[i] * vectors[i])
void spatial_merge_contiguous_tiled(const float *input, float *output, int grid_h, int grid_w, int embed_dim, int merge_size)
void gradient_accumulate_multi_f32(float *const *dsts, const float *const *srcs, const size_t *numels, int tensor_count)
void rmsnorm_backward_int4(const uint8_t *d_output, const uint8_t *input, const float *gamma, const float *rstd_cache, uint8_t *d_input, float *d_gamma, int tokens, int d_model, int aligned_embed_dim, float *scratch_d_output, float *scratch_input, float *scratch_d_input)
int ck_gemm_nt_f16_simd_lanes(void)
void kv_cache_write_head_major(const float *__restrict k_token, const float *__restrict v_token, float *__restrict k_cache, float *__restrict v_cache, int num_kv_heads, int token_index, int cache_capacity, int head_dim, int aligned_head_dim)
void qk_norm_forward_llama_production(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_segmented_f16cache_gemma4_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes, const int *segment_lengths, int num_segments)
CKMathBackend ckernel_backend_native(void)
void embedding_forward_bf16(const int32_t *token_ids, int token_count, int vocab_size, const uint16_t *token_embeddings, const uint16_t *pos_embeddings, uint16_t *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void gelu_backward_fast_bf16(const uint16_t *input, const uint16_t *d_output, uint16_t *d_input, size_t n, float *scratch_input, float *scratch_d_output, float *scratch_d_input)
void attention_forward_full_head_major_gqa_ggml_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void gemm_nt_bf16_accurate_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void qk_norm_forward_pytorch_bf16_storage(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void gemm_nt_q8_0_q8_0_m2n4(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
void causal_softmax_head_major_exact(float *scores, int num_heads, int num_tokens, int aligned_context_window)
void recurrent_norm_sigmoid_gate_pytorch_bf16_storage(const float *x, const float *gate, const float *weight, float *out, int rows, int num_heads, int head_dim, float eps)
void gemm_q6_k_q8_k(float *Y, const void *W, const void *X_q8, int M, int N, int K)
GEMM: Y = W @ X^T where W is Q6_K and X is Q8_K.
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_full_bf16cache_pytorch_contract(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction)
void gemv_q4_k_q8_k_parallel(float *y, const void *W, const void *x_q8, int M, int K, int ith, int nth)
void gemm_nt_q5_0(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void attention_forward_full_head_major_gqa_pytorch_cpu_flash_bf16_storage(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void attention_forward_decode_head_major_gqa_muse_eager_bf16_storage(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, float *scores, size_t scores_bytes, uint16_t *key_rows, size_t key_rows_bytes, uint16_t *value_columns, size_t value_columns_bytes, uint16_t *gemm_rows, size_t gemm_rows_bytes, uint16_t *gemm_scores, size_t gemm_scores_bytes)
void rope_backward_inplace(float *d_x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset)
void qwen4_ple_ngram_embed_bf16(const int32_t *token_ids, const uint16_t *embedding, const int64_t *layer_multipliers, const int64_t *head_offsets, const int64_t *head_vocab_sizes, float *output, const float *token_state_in, float *token_state_out, int rows, int ngram_size, int heads_per_ngram, int head_dim, int eos_token_id, int position)
void layernorm_naive_serial(const float *input, const float *gamma, const float *beta, float *output, float *mean_cache, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void fc1_backward_kernel(const float *d_output, const float *fc1_input, const float *W_fc1, float *d_input, float *d_W_fc1, float *d_b_fc1, int T, int aligned_in, int aligned_out, int num_threads)
void qk_norm_forward(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void attention_forward_full_head_major_gqa_flash_strided_gemma4(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void gemm_nt_q6_k(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
const float * ck_strict_consume_next_gemm_a(size_t elems)
void gemm_nt_bf16_bf16_storage_row_range(const float *A, const void *B, const float *bias, float *C, int M, int N, int K, int row_begin, int row_end)
void swiglu_backward_exact(const float *input, const float *d_output, float *d_input, int tokens, int dim)
void rmsnorm_forward_parallel_dispatch(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void qwen4_ple_gate_conv_inject_fp16(const float *hyper_input, const float *key_projected, const float *value_projected, const float *norm_key_weight, const float *norm_query_weight, const float *norm_conv_weight, const uint16_t *conv_weight, float *hyper_output, float *key_norm_scratch, float *query_norm_scratch, float *gated_scratch, float *conv_norm_scratch, const float *conv_state_in, float *conv_state_out, int rows, int streams, int hidden_dim, int kernel_size, int dilation, float eps)
void swiglu_backward_bf16(const uint16_t *input, const uint16_t *d_output, uint16_t *d_input, int tokens, int dim)
void qk_norm_forward_fp64_sum(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void mlp_token_parallel_bf16_fp32act(const uint16_t *input, const uint16_t *W_fc1, const uint16_t *b_fc1, const uint16_t *W_fc2, const uint16_t *b_fc2, float *fc1_output, float *output, int T, int aligned_dim, int num_threads, float *scratch_input_f, float *scratch_bias1_f, float *scratch_bias2_f, uint16_t *scratch_fc1_bf16)
void attention_forward_causal_head_major_gqa_llama_regular_strided_sliding_workspace(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int sliding_window, float *scores, size_t scores_bytes, float *value_columns, size_t value_columns_bytes, float *scaled_scores, size_t scaled_scores_bytes)
void mrope_qk_vision_bf16_pytorch_storage(float *q, float *k, const int32_t *positions, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
int moe_swiglu_expert_forward_q4k_q4k_parallel_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void relu2_backward(const float *input, const float *d_output, float *d_input, size_t n)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_gqa_reuse_config(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int query_tile_size, int concurrent_query_tiles, void *workspace, size_t workspace_bytes)
void gelu_backward_exact_bf16(const uint16_t *input, const uint16_t *d_output, uint16_t *d_input, size_t n, float *scratch_input, float *scratch_d_output, float *scratch_d_input)
void kv_cache_store_batch_bf16(uint16_t *__restrict kv_cache_k, uint16_t *__restrict kv_cache_v, const float *__restrict k, const float *__restrict v, int start_pos, int num_tokens, int num_kv_heads, int head_dim, int max_seq_len)
void gemv_q6_k_q8_k(float *y, const void *W, const void *x_q8, int M, int K)
GEMV: y = W @ x where W is Q6_K and x is Q8_K.
void embedding_backward_bf16(const int32_t *token_ids, int token_count, const uint16_t *d_output, uint16_t *d_token_embeddings, uint16_t *d_pos_embeddings, int vocab_size, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void gemv_q5_k(float *y, const void *W, const float *x, int M, int K)
void moe_swiglu_shared_forward_bf16_gated_row_range(const float *hidden, const float *routed, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, const uint16_t *shared_router, float *output, int rows, int hidden_dim, int intermediate_dim, int row_begin, int row_end)
void gemv_q8_0_q8_0_x4(float *y, const void *W, const void *x_q8, int M, int K)
void mamba2_conv1d_f32_channel_range(const float *state_in, const float *x, const float *weight, const float *bias, float *conv_out, float *state_out, int rows, int conv_dim, int kernel_size, int channel_begin, int channel_end)
void embedding_backward(const int32_t *token_ids, int token_count, const float *d_output, float *d_token_embeddings, float *d_pos_embeddings, int vocab_size, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
int ck_get_physical_cores(void)
void mlp_token_parallel_exact(const float *input, const float *W_fc1, const float *b_fc1, const float *W_fc2, const float *b_fc2, float *fc1_output, float *output, int T, int aligned_dim, int num_threads)
void gated_deltanet_llama_avx2_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int num_heads, int group_count, int state_dim, float norm_eps)
void geglu_forward_fp32(const float *x, float *out, int tokens, int dim)
void deepseek_mla_attention_f32_parallel_dispatch(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int qk_head_dim, int v_head_dim, float scale, float *scores, size_t scores_bytes)
int moe_swiglu_expert_forward_q4k_q5_0_parallel_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void relu_forward_bf16(const uint16_t *input, uint16_t *output, size_t n)
void attention_forward_decode_head_major_gqa_flash(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
void gemm_nt_bf16_amx_bf16_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void patch_projection_bf16_pytorch_onednn_conv3d_storage(const float *input, const void *weights, const float *bias, float *output, int batch, int out_channels, int in_channels, int temporal, int patch_h, int patch_w)
void gemm_tn_parallel(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void rmsnorm_forward_pytorch_bf16_storage(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void gemm_nt_q8_0(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void relu_forward(const float *input, float *output, size_t n)
void im2patch(const float *image, float *patches, int C, int H, int W, int P)
void fused_rmsnorm_qkv_prefill(const float *x, const float *gamma, const float *Wq, const float *Wk, const float *Wv, float *Q, float *K, float *V, int seq_len, int hidden, int q_dim, int kv_dim, float eps, float *scratch)
Fused RMSNorm + QKV projection for prefill.
void quantize_batch_q8_k(const float *x, void *y, int num_rows, int k)
Batch quantize FP32 to Q8_K format (row-major output)
void vec_dot_q6_k_q8_k(int n, float *s, const void *vx, const void *vy)
Q6_K x Q8_K dot product (single row)
void fc2_backward_kernel(const float *d_output, const float *fc2_input, const float *W_fc2, float *d_input, float *d_W_fc2, float *d_b_fc2, int T, int aligned_in, int aligned_out, int num_threads)
size_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_gqa_reuse_workspace_bytes(int num_heads, int num_kv_heads, int head_dim, int workers, int query_tile_size, int concurrent_query_tiles)
void quantize_row_q8_k(const float *x, void *y, int k)
void qk_norm_forward_prefill_exact(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void axpy_2d_f32(float *Y, const float *X, float alpha, int num_tokens, int dim, int y_stride, int x_stride)
Batched AXPY for 2D tensors: Y[t,:] += alpha * X[t,:].
void ck_set_strict_parity(int enabled)
void rmsnorm_backward_int8(const int8_t *d_output, const int8_t *input, const float *gamma, const float *rstd_cache, int8_t *d_input, float *d_gamma, int tokens, int d_model, int aligned_embed_dim, float *scratch_d_output, float *scratch_input, float *scratch_d_input)
void recurrent_silu_forward(const float *x, float *out, int rows, int dim)
void mlp_token_parallel_bf16_backward_mixed(const uint16_t *input, const uint16_t *W_fc1, const uint16_t *b_fc1, const uint16_t *W_fc2, const uint16_t *d_output, float *d_input, float *d_W_fc1, float *d_b_fc1, float *d_W_fc2, float *d_b_fc2, int T, int aligned_dim, int num_threads, float *scratch_fc1_pre, uint16_t *scratch_fc1_act_bf16, float *scratch_d_fc1)
void gemv_bf16_bf16_storage_parallel_dispatch(float *y, const void *W, const float *x, int M, int K)
void layernorm_backward_kernel(const float *d_output, const float *input, const float *gamma, const float *mean, const float *rstd, float *d_input, float *d_gamma, float *d_beta, int tokens, int d_model, int aligned_embed_dim)
void ssm_conv1d_forward_llama_fma(const float *conv_x, const float *kernel, float *out, int kernel_size, int num_channels, int num_tokens, int num_seqs)
void moe_swiglu_expert_forward_bf16_row_range(const float *hidden, const int *indices, const float *routing_weights, const uint16_t *expert_gate, const uint16_t *expert_up, const uint16_t *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, int row_begin, int row_end)
size_t moe_swiglu_shared_q8_0_gated_workspace_bytes(int hidden_dim, int intermediate_dim)
void moe_relu2_shared_forward_q5_1_q8_0(const float *hidden, const float *routed, const void *shared_up, const void *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim)
void sigmoid_forward_bf16(const uint16_t *input, uint16_t *output, size_t n, float *scratch_input, float *scratch_output)
void gemm_blocked_serial_bf16(const uint16_t *A, const uint16_t *B, const uint16_t *bias, uint16_t *C, int M, int N, int K)
void sigmoid_backward_bf16(const uint16_t *input, const uint16_t *d_output, uint16_t *d_input, size_t n, float *scratch_input, float *scratch_d_output, float *scratch_d_input)
void geglu_forward_ggml_native(const float *x, float *out, int tokens, int dim)
void rope_forward_qk_pairwise_with_rotary_dim(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim)
void gemm_nn_avx512(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void causal_softmax_head_major(float *scores, int num_heads, int num_tokens, int aligned_context_window)
void patch_projection_image_bf16_native_storage(const float *image, const void *weights_t0, const void *weights_t1, const float *bias, float *output, int channels, int image_h, int image_w, int patch_size, int out_channels, int merge_size)
void moe_relu2_expert_forward_q5_0_q5_0(const float *hidden, const int *indices, const float *routing_weights, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void gemm_nt_q6_k_q8_k_tiled(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
Experimental single-thread tiled NT GEMM wrapper.
void attention_forward_decode_head_major_gqa_regular(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
WARNING: This is NOT true flash attention!
int argmax_f32(const float *scores, int n)
Find index of maximum value.
void gemm_nt_f16_clipped(const float *A, const void *B, const float *bias, const float *input_min, const float *input_max, const float *output_min, const float *output_max, float *C, int M, int N, int K)
void assistant_layer_scale_forward(float *hidden, const float *scale, int tokens, int embed_dim)
void attention_forward_causal_head_major_gqa_flash_strided_f16kv(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void gemv_q5_1_q8_1(float *y, const void *W, const float *x, int M, int K)
void split_qkv_packed_head_major_forward(const float *packed_qkv, float *q, float *k, float *v, int rows, int q_dim, int k_dim, int v_dim, int num_heads, int num_kv_heads)
int ck_gemm_bf16_fp32out_amx_raw(const uint16_t *A, const uint16_t *B, float *C, int M, int N, int K, int accumulate)
void gemma4_vision_projector_prep_forward(const float *input, float *output, int tokens, int dim, float scale, float eps)
void unfused_rmsnorm_qkv_prefill(const float *x, const float *gamma, const float *Wq, const float *Wk, const float *Wv, float *x_norm, float *Q, float *K, float *V, int seq_len, int hidden, int q_dim, int kv_dim, float eps)
Unfused version for benchmarking comparison.
void add_forward_bf16(const uint16_t *a, const uint16_t *b, uint16_t *y, size_t n)
void embedding_forward_bf16_fp32(const int32_t *token_ids, int token_count, int vocab_size, const uint16_t *token_embeddings, const float *pos_embeddings, float *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void add_forward_2d_bf16(const uint16_t *a, const uint16_t *b, uint16_t *y, int tokens, int dim, int aligned_dim)
void yarn_rope_cache_contiguous_positions_f32(float *cos_cache, float *sin_cache, int num_tokens, int rotary_dim, float freq_base, float factor, int original_context, float beta_fast, float beta_slow, float mscale, float mscale_all_dim)
void gemma4_per_layer_prepare_bf16_forward(float *per_layer_input, const float *hidden, const int32_t *token_ids, const uint16_t *per_layer_token_emb, const uint16_t *per_layer_model_proj, const float *per_layer_proj_norm, int tokens, int num_layers, int embed_dim, int per_layer_dim, int vocab_size, float eps)
void rmsnorm_forward(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void gemma4_final_logit_softcap_forward(float *logits, int tokens, int vocab_size, float cap)
void feature_concat_2way(const float *main_input, const float *branch_input, float *output, int rows, int main_dim, int branch_slice_dim, int num_branch_slices)
void gemm_avx512_parallel(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void gemv_q4_k(float *y, const void *W, const float *x, int M, int K)
Auto-dispatch GEMV based on available SIMD.
void attention_forward_decode_head_major_gqa_muse_eager_bf16_storage_sliding(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window, float *scores, size_t scores_bytes, uint16_t *key_rows, size_t key_rows_bytes, uint16_t *value_columns, size_t value_columns_bytes, uint16_t *gemm_rows, size_t gemm_rows_bytes, uint16_t *gemm_scores, size_t gemm_scores_bytes)
void farskip_swiglu_shared_combine_bf16_parallel_dispatch(const float *hidden, const float *routed, const float *post_attn_residual, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, float *main_output, float *routed_free_output, int rows, int hidden_dim, int intermediate_dim)
void gemm_nt_bf16(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void gated_deltanet_pytorch_grouped_bf16_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int num_heads, int group_count, int state_dim, float norm_eps)
void ssm_conv1d_forward_pytorch_bf16_storage(const float *conv_x, const float *kernel, float *out, int kernel_size, int num_channels, int num_tokens, int num_seqs)
void gelu_fast_inplace_bf16(uint16_t *data, size_t n, float *scratch)
void swiglu_forward_q8_k(const float *input, void *output_q8, int tokens, int dim)
void dequant_q8_0_row(const void *src, float *dst, size_t n_elements)
Dequantize Q8_0 row (multiple blocks)
float gradient_global_norm_multi_f32(const float *const *grads, const size_t *numels, int tensor_count)
void rope_forward_bf16(uint16_t *x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, float *scratch)
void gemm_nt_bf16_parallel_dispatch(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void mrope_qk_text_imrope(float *q, float *k, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void attention_forward_decode_head_major_shared_kv_sliding_gemma4(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window)
void gated_deltanet_pytorch_grouped_bf16_prefill_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int rows, int num_heads, int group_count, int state_dim, float norm_eps)
void q_norm_forward(float *q, const float *q_gamma, int num_heads, int num_tokens, int head_dim, float eps)
void attention_forward_sparse_token_major_gqa_bf16cache_pytorch_cpu_flash_contract(const float *query, const uint16_t *key_cache, const uint16_t *value_cache, const float *selected_indices, float *output, float *score_scratch, int rows, int query_heads, int kv_heads, int head_dim, int selection_width, int context_length, int position)
void gemm_nn_simd(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
size_t moe_softmax_topk_router_workspace_bytes(int n_experts)
void gemm_nt_q5_k_q8_k(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
void rope_forward_qk_split_direct_token_range_f32(float *q, float *k, const float *freq_factors, int use_freq_factors, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base, int token_begin, int token_end)
void attention_forward_decode_head_major_gqa_llama_regular_sliding_workspace(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int live_tokens, int kv_stride_tokens, int head_dim, int aligned_head_dim, int sliding_window, float *scores, size_t scores_bytes, float *value_columns, size_t value_columns_bytes, float *scaled_scores, size_t scaled_scores_bytes)
int attention_forward_query_key_head_major_tiled_f16kv_fp32(const float *query, const float *key, const float *value, float *output, int num_heads, int query_tokens, int key_tokens, int head_dim, float scale)
int moe_swiglu_expert_forward_q4k_q5k_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void rope_precompute_cache(float *cos_cache, float *sin_cache, int max_seq_len, int head_dim, float base, int rotary_dim, const char *scaling_type, float scaling_factor)
void gemm_nt_q5_1(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
GEMM with transposed Q5_1 weights: C = A @ B^T.
int ck_strict_mtmd_clip_encode_planar_f32(const float *planar, int channels, int height, int width, float *out, size_t out_elems)
void layernorm_backward_kernel_bf16(const uint16_t *d_output, const uint16_t *input, const float *gamma, const float *mean, const float *rstd, uint16_t *d_input, float *d_gamma, float *d_beta, int tokens, int d_model, int aligned_embed_dim, float *scratch_d_output, float *scratch_input, float *scratch_d_input)
void rope_forward_bf16_with_rotary_dim(uint16_t *x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float *scratch)
int moe_swiglu_shared_forward_q8_0_gated_parallel_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, const float *shared_gate_input, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void gemv_q6_k_q8_k_parallel(float *y, const void *W, const void *x_q8, int M, int K, int ith, int nth)
Parallel reference GEMV for Q6_K × Q8_K.
void recurrent_silu_forward_pytorch_bf16_storage(const float *x, float *out, int rows, int dim)
float sigmoid_scalar(float x)
void deepseek_csa_attention_backward_f32(const float *d_out, const float *q, const float *k, const float *v, const int *indices, const float *attn, float *d_q, float *d_k, float *d_v, int query_tokens, int key_tokens, int heads, int dim, int top_k, float scale)
int moe_swiglu_shared_forward_q4k_q4k_parallel_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void ck_residual_add_token_major_parallel_dispatch(const float *a, const float *b, float *out, int tokens, int aligned_embed_dim)
void attention_forward_causal_head_major_gqa_flash(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim)
void ck_attention_flash_decode_wrapper(const float *q_token, const float *k_cache, const float *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim)
Wrapper to call TRUE flash attention from orchestration layer.
void deepseek_mla_kv_cache_batch_store_f32(float *k_cache, float *v_cache, const float *k, const float *v, int num_tokens, int num_kv_heads, int qk_head_dim, int v_head_dim, int max_seq_len, int cache_stride)
void mamba2_selective_scan_f32_parallel_dispatch(const float *state_init, const float *x, const float *dt, const float *a, const float *b, const float *c, const float *d, float *state_out, float *y, int batch, int seq_len, int num_heads, int head_dim, int state_dim, int num_groups)
void sigmoid_backward(const float *input, const float *d_output, float *d_input, size_t n)
void rmsnorm_forward_strided_f32(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int input_stride, int output_stride, float eps)
void hyper_stream_inject_f32(const float *hyper_input, const float *block_output, const float *injection_weight, float *output, int rows, int streams, int hidden_dim)
void quantize_row_q8_0(const float *x, void *y, int k)
Quantize FP32 to Q8_0 format (scalar reference)
void gemv_bf16(float *y, const void *W, const float *x, int M, int K)
void deepseek_mla_attention_bf16_phases_workspace(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int qk_head_dim, int v_head_dim, float scale, float *scores, size_t scores_bytes)
void gelu_pytorch_erf_sleef_bf16_storage(float *data, size_t n)
void gated_deltanet_autoregressive_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int num_heads, int state_dim, float norm_eps)
void ck_residual_add_token_major(const float *a, const float *b, float *out, int tokens, int aligned_embed_dim)
ck_attention_status_t attention_forward_decode_head_major_gqa_bf16cache_pytorch_contract(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction)
void mrope_qk_text_imrope_positions_bf16_pytorch_storage(float *q, float *k, const int32_t *positions, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void rope_forward_qk(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset)
void attention_forward_full_head_major_gqa_ggml_strided_workspace(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, float *score_rows, size_t score_rows_bytes, float *v_columns, size_t v_columns_bytes, float *probability_row, size_t probability_row_bytes)
int moe_swiglu_expert_forward_q4k_q5k_bucketed_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_gemma4_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes)
void gated_deltanet_llama_chunk64_head_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int rows, int num_heads, int group_count, int head, int state_dim)
void recurrent_norm_gate_pytorch_bf16_storage(const float *x, const float *gate, const float *weight, float *out, int rows, int num_heads, int head_dim, float eps)
size_t fused_rmsnorm_qkv_scratch_size(int hidden)
Get scratch buffer size for fused_rmsnorm_qkv_prefill.
void gelu_ggml_native_inplace(float *data, size_t n)
void gemv_q8_0_q8_0(float *y, const void *W, const void *x_q8, int M, int K)
Matrix-vector multiply with Q8_0 weights and Q8_0 input.
void adamw_clip_update_multi_f32(float *const *grads, float *const *weights, float *const *m_states, float *const *v_states, const size_t *numels, int tensor_count, float lr, float beta1, float beta2, float eps, float weight_decay, float max_grad_norm, int step)
void attn_gate_sigmoid_mul_backward(const float *d_out, const float *x, const float *gate, float *d_x, float *d_gate, int rows, int num_heads, int state_dim)
void gradient_scale_f32(float *grad, size_t numel, float scale)
void mrope_qk_vision_bf16_storage(float *q, float *k, const int32_t *positions, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void gemm_nt_q8_0_q8_0(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
gemm_nt_q8_0_q8_0 with optional bias (matches header signature)
void deepseek_mla_attention_f32(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int qk_head_dim, int v_head_dim)
void attention_forward_mixed_visual_chunk_head_major_gqa_flash_strided_gemma4_token_output(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int visual_start, int visual_tokens)
void relu2_forward(const float *input, float *output, size_t n)
void rope_forward_with_rotary_dim(float *x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim)
void rope_forward_q_split_direct_f32(float *q, const float *freq_factors, int use_freq_factors, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base)
void rmsnorm_forward_kv_lora(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void deepseek_mhc_mix_backward_f32(const float *d_out, const float *streams, const float *mix, float *d_streams, float *d_mix, int tokens, int n_streams, int dim)
void nemotron_group_limited_topk_router_f32(const float *scores, const float *correction_bias, int *indices, float *weights, int rows, int n_experts, int top_k, int n_group, int topk_group, int norm_topk_prob, float routed_scaling_factor)
int moe_swiglu_expert_forward_q4k_q5k_auto_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void gemm_fine_grained_parallel(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
size_t moe_swiglu_expert_q4k_q8_0_workspace_bytes(int hidden_dim, int intermediate_dim)
size_t moe_swiglu_shared_q4k_q8_0_gated_workspace_bytes(int hidden_dim, int intermediate_dim)
void spatial_average_pool_contiguous(const float *input, float *output, int grid_h, int grid_w, int embed_dim, int merge_size)
void rope_forward_q_split_llama_f32(float *q, const float *freq_factors, int use_freq_factors, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base)
const char * ck_q6_k_prepared_provider_name(void)
void relu_forward_inplace(float *data, size_t n)
void gemm_nt_bf16_accurate_storage_parallel_dispatch(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void gelu_fast_inplace(float *data, size_t n)
void gemv_q4_k_q8_k(float *y, const void *W, const void *x_q8, int M, int K)
int ck_multimodal_mrope_positions_2d(int32_t *positions, int total_tokens, int prefix_start, int position_base, int prefix_tokens, int grid_x, int grid_y, int text_pos)
void gemv_q5_0_parallel(float *y, const void *W, const float *x, int M, int K, int ith, int nth)
Parallel reference GEMV for Q5_0 × FP32.
void yarn_rope_cache_explicit_positions_f32(float *cos_cache, float *sin_cache, const int32_t *positions, int num_tokens, int rotary_dim, float freq_base, float factor, int original_context, float beta_fast, float beta_slow, float mscale, float mscale_all_dim)
void deepseek_dsa_topk_softmax_f32(const float *scores, int *indices, float *weights, int tokens, int heads, int key_count, int top_k)
void gemma4_v_norm_forward(const float *input, float *output, float *rstd_cache, int tokens, int num_kv_heads, int head_dim, float eps)
void attention_forward_causal_head_major_gqa_flash_strided_gemma4_token_output(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void gemv_q4_k_q8_k_ref(float *y, const void *W, const void *x_q8, int M, int K)
int qk_norm_backward_last_isa(void)
void farskip_swiglu_shared_combine_bf16(const float *hidden, const float *routed, const float *post_attn_residual, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, float *main_output, float *routed_free_output, int rows, int hidden_dim, int intermediate_dim)
void adamw_update_f32(const float *grad, float *weight, float *m, float *v, size_t numel, float lr, float beta1, float beta2, float eps, float weight_decay, int step)
void geglu_forward_bf16(const uint16_t *x, uint16_t *out, int tokens, int dim, float *scratch)
void farskip_swiglu_shared_combine_bf16_row_range(const float *hidden, const float *routed, const float *post_attn_residual, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, float *main_output, float *routed_free_output, int rows, int hidden_dim, int intermediate_dim, int row_begin, int row_end)
void gemm_q4_k(float *Y, const void *W, const float *X, int M, int N, int K)
Auto-dispatch GEMM based on available SIMD.
void ssm_conv1d_forward(const float *conv_x, const float *kernel, float *out, int kernel_size, int num_channels, int num_tokens, int num_seqs)
void feature_concat(const float *main_input, const float *branch_input, float *output, int rows, int main_dim, int branch_slice_dim, int num_branch_slices)
void gradient_accumulate_f32(float *dst, const float *src, size_t numel)
void deepseek_dsa_topk_softmax_backward_f32(const int *indices, const float *weights, const float *d_weights, float *d_scores, int tokens, int heads, int key_count, int top_k)
void recurrent_qk_l2_norm_backward(const float *d_q_out, const float *d_k_out, const float *q, const float *k, float *d_q, float *d_k, int rows, int q_dim, int k_dim, int head_dim, float eps)
void deepseek_mla_kv_decompress_bf16_parallel_dispatch(const float *compressed_kv, const uint16_t *kv_b_proj, float *k_nope, float *value, int tokens, int heads, int kv_lora_rank, int qk_nope_dim, int v_dim)
void gelu_backward_scalar(const float *input, const float *d_output, float *d_input, size_t n)
void rmsnorm_forward_int4(const uint8_t *input, const float *gamma, uint8_t *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps, float *scratch_input, float *scratch_output)
@ CK_ATTN_REDUCTION_BF16_PYTORCH_SDPA
@ CK_ATTN_REDUCTION_F16_FLASH_AUTO_QTILE64_REGULAR_TAIL_NOSCALE
@ CK_ATTN_REDUCTION_F16_REGULAR_NOSCALE
@ CK_ATTN_REDUCTION_F16_ONLINE_FP32_MERGE
@ CK_ATTN_REDUCTION_F16_FLASH_AUTO_QTILE64
@ CK_ATTN_REDUCTION_F16_ONLINE_SINGLE_RANGE
@ CK_ATTN_REDUCTION_FP32_ONLINE
void gemm_q4_k_q8_k(float *Y, const void *W, const void *X_q8, int M, int N, int K)
void gemm_backward_bf16_mixed(const uint16_t *d_output, const uint16_t *input, const uint16_t *weight, float *d_input, float *d_weight, float *d_bias, int tokens, int in_dim, int out_dim)
void embedding_forward_q5_0(const int32_t *token_ids, int token_count, int vocab_size, const void *token_embeddings, const float *pos_embeddings, float *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void geglu_forward_quick(const float *x, float *out, int tokens, int dim)
void mrope_qk_text_imrope_bf16_pytorch_storage(float *q, float *k, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
void gemm_microkernel_blocked(const float *A, const float *B, float *C, int M, int N, int K)
void dequant_q5_1_row(const void *src, float *dst, size_t n_elements)
Dequantize Q5_1 row (multiple blocks)
void fused_mlp_swiglu_decode_v2(const float *x, const float *W_gate, const float *W_up, const float *W_down, const float *b_gate, const float *b_up, const float *b_down, float *output, int D, int Hff)
void rmsnorm_forward_strided_pytorch_bf16_storage(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int input_stride, int output_stride, float eps)
void gemm_nt_q6_k_q8_k(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
int moe_swiglu_shared_forward_q4k_q5_0_gated_parallel_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, const float *shared_gate_input, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
ck_attention_status_t attention_forward_decode_head_major_gqa_f16cache_sliding_gemma4_contract(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int sliding_window, ck_attention_reduction_t reduction)
void rmsnorm_backward(const float *d_output, const float *input, const float *gamma, const float *rstd_cache, float *d_input, float *d_gamma, int tokens, int d_model, int aligned_embed_dim)
void dequant_q4_1_row(const void *src, float *dst, size_t n_elements)
Dequantize Q4_1 row (multiple blocks)
void swiglu_forward_ggml(const float *input, float *output, int tokens, int dim)
int moe_swiglu_shared_forward_q4k_q5_0_gated_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, const float *shared_gate_input, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void final_logit_scale_muse_pytorch_bf16_storage(float *logits, int tokens, int vocab_size, float scale)
void deepseek_mla_partial_rope_concat_packed_f32(const float *q_packed, const float *k_nope, const float *kv_a_packed, const float *cos, const float *sin, float *query, float *key, int tokens, int heads, int kv_lora_rank, int qk_nope_dim, int qk_rope_dim)
void gemm_nt_q6_k_q8_k_m2(const void *A_q8, const void *B, const float *bias, float *C, int M, int N, int K)
void recurrent_dt_gate_forward_pytorch_fp32(const float *alpha, const float *dt_bias, const float *a, float *gate, int rows, int num_heads, int state_dim)
void gemv_bf16_parallel_dispatch(float *y, const void *W, const float *x, int M, int K)
void gemv_fused_q5_0_bias_dispatch(float *y, const void *W, const float *x, const float *bias, int M, int K)
void gated_deltanet_prefill_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int rows, int num_heads, int state_dim, float norm_eps)
void fused_mlp_swiglu_prefill_bias(const float *x, const float *W_gate, const float *W_up, const float *W_down, const float *B_gate, const float *B_up, const float *B_down, float *output, int seq_len, int hidden, int intermediate, float *scratch)
Fused MLP (Gate + Up + SwiGLU + Down) for prefill with biases.
void layernorm_forward_rolled_slice(const float *__restrict input_slice_base, const float *__restrict gamma, const float *__restrict beta, float *__restrict output_slice_base, float *__restrict mean_cache_slice, float *__restrict rstd_cache_slice, int num_tokens_in_slice, int d_model, int aligned_embed_dim, float eps)
void position_embeddings_add_at_offset(float *x, const float *position_embd, int num_tokens, int embed_dim, int num_positions, int start_position)
void embedding_forward_q8_0(const int32_t *token_ids, int token_count, int vocab_size, const void *token_embeddings, const float *pos_embeddings, float *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void attention_forward_full_head_major_gqa_tiled64_f16kv_fp32_strided(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void attention_forward_causal_head_major_gqa_muse_eager_bf16_storage_sliding(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int sliding_window, float *scores, size_t scores_bytes, uint16_t *key_rows, size_t key_rows_bytes, uint16_t *value_columns, size_t value_columns_bytes, uint16_t *gemm_rows, size_t gemm_rows_bytes, uint16_t *gemm_scores, size_t gemm_scores_bytes)
void swiglu_forward_ggml_split(const float *gate, const float *up, float *output, int tokens, int dim)
void rope_forward_qk_with_rotary_dim(float *q, float *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim)
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_append_f16cache_contract_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes)
void attention_forward_causal_head_major_shared_kv_sliding_gemma4(const float *q, float *output, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens, int sliding_window)
int ck_flash_attn_fast_exp_kind(void)
void gated_deltanet_llama_chunk64_prefill_forward(const float *q, const float *k, const float *v, const float *g, const float *beta, const float *state_in, float *state_out, float *out, int rows, int num_heads, int group_count, int state_dim, float norm_eps)
void mrope_qk_vision_fp16_storage(float *q, float *k, const int32_t *positions, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int n_dims, int section_0, int section_1, int section_2, int section_3, int n_ctx_orig, float freq_base, float freq_scale, float ext_factor, float attn_factor, float beta_fast, float beta_slow)
int moe_swiglu_shared_forward_q4k_q4k_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void attention_backward_causal_head_major(const float *d_output, const float *q, const float *k, const float *v, const float *attn_weights, float *d_q, float *d_k, float *d_v, float *d_scores, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window)
void deepseek_mla_attention_decode_bf16_phases_workspace(const float *q, const float *k_cache, const float *v_cache, float *output, int num_heads, int num_kv_heads, int cache_len, int qk_head_dim, int v_head_dim, int max_seq_len, int cache_stride, float scale, float *scores, size_t scores_bytes)
void rope_forward_qk_split_direct_f32(float *q, float *k, const float *freq_factors, int use_freq_factors, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base)
void embedding_forward(const int32_t *token_ids, int token_count, int vocab_size, const float *token_embeddings, const float *pos_embeddings, float *output, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
void mamba2_dt_softplus_f32(const float *dt, const float *dt_bias, float *dt_out, int rows, int num_heads, float dt_min, float dt_max)
void attention_forward_decode_head_major_gqa_flash_f16cache_split(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, int split_chunks)
void ssm_conv1d_forward_llama_production(const float *conv_x, const float *kernel, float *out, int kernel_size, int num_channels, int num_tokens, int num_seqs)
void moe_swiglu_expert_forward_f32(const float *hidden, const int *indices, const float *routing_weights, const float *expert_gate, const float *expert_up, const float *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void gelu_erf_bf16_storage(float *data, size_t n)
void layernorm_forward_unrolled_slice_bf16(const uint16_t *__restrict input_slice_base, const float *__restrict gamma, const float *__restrict beta, uint16_t *__restrict output_slice_base, float *__restrict mean_cache_slice, float *__restrict rstd_cache_slice, int num_tokens_in_slice, int d_model, float eps, float *scratch_input, float *scratch_output)
void moe_swiglu_packed_expert_forward_bf16(const float *hidden, const int *indices, const float *routing_weights, const uint16_t *expert_gate_up, const uint16_t *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k)
void gemm_bias_gelu_fused(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void fused_mlp_swiglu_prefill_w1w2_quant(const float *x, const void *W1, const float *B1, CKDataType w1_dt, const void *W2, const float *B2, CKDataType w2_dt, float *output, int seq_len, int embed_dim, int aligned_embed_dim, int intermediate_dim, int aligned_intermediate_dim, void *scratch)
Quantized fused MLP for prefill (W1=gate+up, W2=down)
void rope_forward_qk_bf16(uint16_t *q, uint16_t *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, float *scratch_q, float *scratch_k)
int ck_attention_sparse_bf16_pytorch_gqa_available(void)
void attention_backward_causal_head_major_gqa(const float *d_output, const float *q, const float *k, const float *v, const float *attn_weights, float *d_q, float *d_k, float *d_v, float *d_scores, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int aligned_context_window)
void recurrent_split_qkv_forward(const float *packed_qkv, float *q, float *k, float *v, int rows, int q_dim, int k_dim, int v_dim)
void qk_norm_forward_llama_production_parallel_dispatch(float *q, float *k, const float *q_gamma, const float *k_gamma, int num_heads, int num_kv_heads, int num_tokens, int head_dim, float eps)
void embedding_backward_bf16_mixed(const int32_t *token_ids, int token_count, const uint16_t *d_output, float *d_token_embeddings, float *d_pos_embeddings, int vocab_size, int embed_dim, int aligned_embed_dim, int context_window, int add_pos)
@ CK_ATTENTION_STATUS_UNSUPPORTED_CONTRACT
@ CK_ATTENTION_STATUS_INVALID_ARGUMENT
@ CK_ATTENTION_STATUS_INSUFFICIENT_WORKSPACE
void topk_f32(const float *scores, int n, int k, int *indices, float *values)
Find top-K indices and values from a score vector.
void speculative_verify_greedy_f32(const float *target_logits, int vocab_size, int draft_token, int *accepted, int *verified_token)
Greedy one-token speculative verification.
ck_attention_status_t attention_forward_causal_head_major_gqa_prefill_segmented_f16cache_contract_workspace(const float *q, const uint16_t *k_cache, const uint16_t *v_cache, float *output, int num_heads, int num_kv_heads, int q_tokens, int past_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction, float *token_workspace, size_t token_workspace_bytes, const int *segment_lengths, int num_segments)
void gemm_microkernel_blocked_bt(const float *A, const float *B, float *C, int M, int N, int K)
void dequant_q6_k_row(const void *src, float *dst, size_t n_elements)
Dequantize Q6_K row (multiple blocks)
void attention_forward_full_head_major_gqa_sdpa_bf16_storage(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void mamba2_selective_scan_f32(const float *state_init, const float *x, const float *dt, const float *a, const float *b, const float *c, const float *d, float *state_out, float *y, int batch, int seq_len, int num_heads, int head_dim, int state_dim, int num_groups)
void mamba2_selective_scan_f32_head_range(const float *state_init, const float *x, const float *dt, const float *a, const float *b, const float *c, const float *d, float *state_out, float *y, int batch, int seq_len, int num_heads, int head_dim, int state_dim, int num_groups, int head_begin, int head_end)
void deepseek_mla_attention_decode_f32(const float *q, const float *k_cache, const float *v_cache, float *output, int num_heads, int num_kv_heads, int cache_len, int qk_head_dim, int v_head_dim, int max_seq_len, int cache_stride)
void rmsnorm_forward_fp32_square_fp64_sum(const float *input, const float *gamma, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void patch_projection_image_bf16_pytorch_onednn_conv3d_storage(const float *image, const void *weights_t0, const void *weights_t1, const float *bias, float *output, int channels, int image_h, int image_w, int patch_size, int out_channels, int merge_size)
int moe_swiglu_expert_forward_q4k_q5k_auto_prepared_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void gemv_q6_k_q8_k_parallel_simd(float *y, const void *W, const void *x_q8, int M, int K, int ith, int nth)
Parallel SIMD GEMV for Q6_K × Q8_K.
void gemm_nt_bf16_bf16_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void add_stream_inplace(float *a, const float *b, size_t n)
void rmsnorm_forward_muse_centered_pytorch_bf16_storage(const float *input, const float *zero_centered_weight, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void qwen4_ple_ngram_embed_q5_0(const int32_t *token_ids, const void *embedding, const int64_t *layer_multipliers, const int64_t *head_offsets, const int64_t *head_vocab_sizes, float *output, const float *token_state_in, float *token_state_out, int rows, int ngram_size, int heads_per_ngram, int head_dim, int eos_token_id, int position)
void recurrent_norm_gate_llama_avx2_forward(const float *x, const float *gate, const float *weight, float *out, int rows, int num_heads, int head_dim, float eps)
void final_logit_softcap_muse_pytorch_bf16_storage(float *logits, int tokens, int vocab_size, float cap)
void split_q_gate_forward(const float *packed_qg, float *q, float *gate, int rows, int q_dim, int gate_dim, int group_dim)
void gemm_tn_blocked(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void ssm_conv1d_backward(const float *d_out, const float *conv_x, const float *kernel, float *d_conv_x, float *d_kernel, int kernel_size, int num_channels, int num_tokens, int num_seqs)
void rope_forward_qk_bf16_with_rotary_dim(uint16_t *q, uint16_t *k, const float *cos_cache, const float *sin_cache, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float *scratch_q, float *scratch_k)
void recurrent_silu_backward(const float *d_out, const float *x, float *d_x, int rows, int dim)
ck_attention_status_t attention_forward_decode_head_major_gqa_flash_f16cache_contract(const float *q_token, const uint16_t *k_cache, const uint16_t *v_cache, float *out_token, int num_heads, int num_kv_heads, int kv_tokens, int cache_capacity, int head_dim, int aligned_head_dim, ck_attention_reduction_t reduction)
void rmsnorm_forward_no_weight_llama_production(const float *input, float *output, float *rstd_cache, int tokens, int d_model, int aligned_embed_dim, float eps)
void rope_forward_qk_gemma4_direct(float *q, float *k, const float *freq_factors, int use_freq_factors, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int rotary_dim, float freq_base)
int moe_swiglu_shared_forward_q4k_q8_0_gated_parallel_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, const float *shared_gate_input, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void recurrent_conv_state_update_backward(const float *d_conv_x, const float *d_state_out, float *d_state_in, float *d_q, float *d_k, float *d_v, int history_len, int num_seqs, int num_tokens, int q_dim, int k_dim, int v_dim)
void gemm_nt_f32_llama_production(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void topk_softmax_f32(const float *scores, int n, int k, int *indices, float *weights)
Find top-K indices with softmax-normalized weights.
void gemm_backward_f32_train_parallel_dispatch(const float *d_output, const float *input, const float *W, float *d_input, float *d_W, float *d_b, int T, int aligned_in, int aligned_out, int num_threads)
void gemm_nt_bf16_prefill_shape_safe_bf16_storage(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void gemv_q5_0_parallel_simd(float *y, const void *W, const float *x, int M, int K, int ith, int nth)
Parallel SIMD GEMV for Q5_0 × FP32 with prefetching.
void speculative_commit_one_i32(int accepted, int verified_token, int *token_buffer, int *token_count, int max_tokens, int *target_position, int *draft_position, int *accepted_count, int *rejected_count)
Commit one verified speculative token and update decode counters.
void rowwise_bias_add(float *x, const float *bias, int rows, int dim)
void moe_swiglu_shared_forward_bf16_gated_parallel_dispatch(const float *hidden, const float *routed, const uint16_t *shared_gate, const uint16_t *shared_up, const uint16_t *shared_down, const uint16_t *shared_router, float *output, int rows, int hidden_dim, int intermediate_dim)
void kv_cache_store(float *__restrict kv_cache_k, float *__restrict kv_cache_v, const float *__restrict k, const float *__restrict v, int layer, int pos, int num_kv_heads, int head_dim, int max_seq_len)
void gelu_backward_fast(const float *input, const float *d_output, float *d_input, size_t n)
int moe_swiglu_expert_forward_q4k_q6k_parallel_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void deepseek_hybrid_attention_f32(const float *q, const float *k, const float *v, const int *indices, float *out, float *attn, int query_tokens, int key_tokens, int heads, int dim, int top_k, float scale, int mode)
void softmax_cross_entropy_loss(const float *logits, const int32_t *targets, int tokens, int vocab_size, float *d_logits, float *loss_out)
void attention_forward_causal_head_major_gqa_flash_strided_token_output(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void causal_softmax_head_major_bf16(uint16_t *scores, int num_heads, int num_tokens, int aligned_context_window, float *scratch)
void position_embeddings_add(float *x, const float *position_embd, int num_tokens, int embed_dim, int num_positions)
int ck_get_num_threads(void)
void patch2im_bf16(const uint16_t *d_patches, uint16_t *d_image, int C, int H, int W, int P)
void gelu_erf_fp64_f32_parallel_dispatch(float *data, size_t n)
int moe_softmax_topk_router_pytorch_bf16_workspace(const float *logits, int *indices, float *weights, int rows, int n_experts, int top_k, float routed_scaling_factor, void *workspace, size_t workspace_bytes)
int ck_strict_parity_enabled(void)
void vision_position_ids_2d_merge(int32_t *positions, int grid_h, int grid_w, int merge_size)
void deepseek_mla_kv_cache_store_f32(float *k_cache, float *v_cache, const float *k, const float *v, int pos, int num_kv_heads, int qk_head_dim, int v_head_dim, int max_seq_len, int cache_stride)
int moe_swiglu_shared_forward_q4k_q6k_parallel_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void hyper_stream_expand_bf16(const float *input, float *output, int rows, int streams, int hidden_dim)
int moe_swiglu_expert_forward_q4k_q5k_bucketed_prepared_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, const void *expert_gate_packed, const void *expert_up_packed, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void rope_precompute_cache_split(float *cos_cache, float *sin_cache, int max_seq_len, int head_dim, float base)
void add_backward_bf16(const uint16_t *d_y, uint16_t *d_a, uint16_t *d_b, size_t n)
void gemm_nt_q5_k(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void attention_forward_full_head_major_gqa_pytorch_cpu_flash_bf16_storage_token_output(const float *q, const float *k, const float *v, float *output, int num_heads, int num_kv_heads, int num_tokens, int head_dim, int aligned_head_dim, int kv_stride_tokens)
void gemm_nt_bf16_prefill_shape_safe_bf16_storage_workspace(const float *A, const void *B, const float *bias, float *C, int M, int N, int K, uint16_t *a_bf16, size_t a_bf16_bytes)
void rope_backward(const float *d_out, float *d_x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset)
void gemm_nt_bf16_row_range(const float *A, const void *B, const float *bias, float *C, int M, int N, int K, int row_begin, int row_end)
void dequant_q4_k_row(const void *src, float *dst, size_t n_elements)
Dequantize Q4_K row (multiple blocks)
void gemm_nt_bf16_amx_bf16_storage_workspace(const float *A, const void *B, const float *bias, float *C, int M, int N, int K, uint16_t *a_bf16, size_t a_bf16_bytes)
void recurrent_dt_gate_backward(const float *d_gate, const float *alpha, const float *dt_bias, const float *a, float *d_alpha, float *d_dt_bias, float *d_a, int rows, int dim)
void scal_copy_f32(float *y, const float *x, float alpha, int n)
Scaled copy: y = alpha * x.
void gemm_microkernel_packed(const float *A, const float *B, float *C, int M, int N, int K)
void gemm_blocked_serial(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void deepseek_mla_partial_rope_concat_packed_bf16_storage(const float *q_packed, const float *k_nope, const float *kv_a_packed, const float *cos, const float *sin, float *query, float *key, int tokens, int heads, int kv_lora_rank, int qk_nope_dim, int qk_rope_dim)
void rope_forward_strided(float *x, const float *cos_cache, const float *sin_cache, int num_heads, int num_tokens, int head_dim, int aligned_head_dim, int pos_offset, int head_stride_tokens)
int moe_swiglu_expert_forward_q4k_q6k_workspace(const float *hidden, const int *indices, const float *routing_weights, const void *expert_gate, const void *expert_up, const void *expert_down, float *output, int rows, int hidden_dim, int intermediate_dim, int n_experts, int top_k, void *workspace, size_t workspace_bytes)
void recurrent_norm_gate_forward(const float *x, const float *gate, const float *weight, float *out, int rows, int num_heads, int head_dim, float eps)
size_t fused_mlp_swiglu_scratch_size(int intermediate)
Get scratch buffer size for fused_mlp_swiglu_prefill.
void sigmoid_forward(const float *input, float *output, size_t n)
void layernorm_forward_rolled_slice_bf16(const uint16_t *__restrict input_slice_base, const float *__restrict gamma, const float *__restrict beta, uint16_t *__restrict output_slice_base, float *__restrict mean_cache_slice, float *__restrict rstd_cache_slice, int num_tokens_in_slice, int d_model, int aligned_embed_dim, float eps, float *scratch_input, float *scratch_output)
void relu_backward_bf16(const uint16_t *input, const uint16_t *d_output, uint16_t *d_input, size_t n)
void final_logit_scale_f32(float *logits, int tokens, int vocab_size, float scale)
void recurrent_dt_gate_forward(const float *alpha, const float *dt_bias, const float *a, float *gate, int rows, int num_heads, int state_dim)
void quantize_batch_q8_0(const float *x, void *y, int num_rows, int k)
Batch quantize FP32 to Q8_0 format (row-major output)
void gelu_pytorch_tanh_bf16_storage(float *data, size_t n)
int ck_attention_bf16_pytorch_gqa_available(void)
void gemm_nt_q5_1_q8_1_m2(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
void gemv_q4_0(float *y, const void *W, const float *x, int M, int K)
Auto-dispatch GEMV.
int moe_swiglu_shared_forward_q4k_q8_0_gated_workspace(const float *hidden, const float *routed, const void *shared_gate, const void *shared_up, const void *shared_down, const float *shared_gate_input, float *output, int rows, int hidden_dim, int intermediate_dim, void *workspace, size_t workspace_bytes)
void gemv_q4_k_q8_k_parallel_simd(float *y, const void *W, const void *x_q8, int M, int K, int ith, int nth)
void layernorm_forward_unrolled_slice(const float *__restrict input_slice_base, const float *__restrict gamma, const float *__restrict beta, float *__restrict output_slice_base, float *__restrict mean_cache_slice, float *__restrict rstd_cache_slice, int num_tokens_in_slice, int d_model, float eps)
void gemm_nn_blocked(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void mamba2_conv1d_decode_f32(const float *state_in, const float *x, const float *weight, const float *bias, float *conv_out, float *state_out, int rows, int conv_dim, int kernel_size)
void add_scaled_inplace_bf16(uint16_t *a, const uint16_t *b, float alpha, size_t n)
void fused_rmsnorm_qkv_prefill_head_major_quant(const float *x, const float *gamma, const void *Wq, const float *Bq, CKDataType wq_dt, const void *Wk, const float *Bk, CKDataType wk_dt, const void *Wv, const float *Bv, CKDataType wv_dt, float *Q, float *K, float *V, int seq_len, int embed_dim, int aligned_embed_dim, int num_heads, int num_kv_heads, int head_dim, int aligned_head_dim, int kv_stride_tokens, float eps, void *scratch)
Fused RMSNorm + QKV projection for prefill (head-major, Q8 activations)
void mamba2_rmsnorm_gate_f32(const float *x, const float *gate, const float *weight, float *out, int rows, int inner_dim, int group_size, float eps)
void gemm_tn_avx512(const float *A, const float *B, const float *bias, float *C, int M, int N, int K)
void gemm_nt_q8_0_q8_0_contract(const float *A, const void *B, const float *bias, float *C, int M, int N, int K)
Quantization block structures for weight-only quantization.
Mega-Fused Attention Kernel.