#include <math.h>#include <stdint.h>#include <stddef.h>#include <stdlib.h>#include <string.h>#include "ck_threadpool.h"#include "ckernel_quant.h"#include "bf16_utils.h"Go to the source code of this file.
Macros | |
| #define | CK_GEMMA4_MAX_EMBED_DIM 16384 |
Functions | |
| void | assistant_layer_scale_forward (float *hidden, const float *scale, int tokens, int embed_dim) |
| static float | ck_bf16_to_f32 (uint16_t v) |
| static float | ck_gemma4_bf16_dot (const uint16_t *x, const uint16_t *y, int n) |
| static void | ck_gemma4_dequant_q5_k_block (const ck_gemma4_block_q5_K *block, float *out) |
| static void | ck_gemma4_embed_range (int begin, int end, void *opaque) |
| static int | ck_gemma4_embed_row_group (const ck_gemma4_embed_args_t *args, int token, int tokens) |
| static float | ck_gemma4_gelu (float x) |
| static void | ck_gemma4_prepare_bf16_range (int begin, int end, void *opaque) |
| static void | ck_gemma4_prepare_parallel (int tokens, ck_range_fn_t fn, ck_gemma4_prepare_args_t *args) |
| static void | ck_gemma4_prepare_q5_range (int begin, int end, void *opaque) |
| static uint8_t | ck_gemma4_q5_k_value (const ck_gemma4_block_q5_K *block, int subblock, int i) |
| static void | ck_gemma4_rmsnorm_tmp (const float *x, const float *gamma, float *out, int n, float eps) |
| static void | ck_gemma4_unpack_q5_k_scales (const uint8_t *scales, uint8_t *sc, uint8_t *m) |
| 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 | gemma4_final_logit_softcap_forward (float *logits, int tokens, int vocab_size, float cap) |
| 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 | 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 | 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 | 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) |
| #define CK_GEMMA4_MAX_EMBED_DIM 16384 |
Definition at line 29 of file gemma4_per_layer_embed.c.
| void assistant_layer_scale_forward | ( | float * | hidden, |
| const float * | scale, | ||
| int | tokens, | ||
| int | embed_dim | ||
| ) |
Definition at line 475 of file gemma4_per_layer_embed.c.
|
inlinestatic |
Definition at line 31 of file gemma4_per_layer_embed.c.
Referenced by ck_gemma4_bf16_dot(), and ck_gemma4_prepare_bf16_range().
|
static |
Definition at line 39 of file gemma4_per_layer_embed.c.
References ck_bf16_to_f32().
Referenced by ck_gemma4_prepare_bf16_range(), and ck_gemma4_prepare_q5_range().
|
static |
Definition at line 116 of file gemma4_per_layer_embed.c.
References CK_FP16_TO_FP32, ck_gemma4_q5_k_value(), and ck_gemma4_unpack_q5_k_scales().
Referenced by ck_gemma4_prepare_q5_range().
|
static |
Definition at line 383 of file gemma4_per_layer_embed.c.
References ck_gemma4_embed_row_group(), ck_gemma4_gelu(), end, gemm_nt_f32_llama_production_output_range(), QK_K, and rmsnorm_forward_llama_production().
Referenced by gemma4_per_layer_embed_forward().
|
static |
Definition at line 366 of file gemma4_per_layer_embed.c.
Referenced by ck_gemma4_embed_range().
|
inlinestatic |
Definition at line 74 of file gemma4_per_layer_embed.c.
References CK_FP16_TO_FP32, and CK_FP32_TO_FP16.
Referenced by ck_gemma4_embed_range().
|
static |
Definition at line 210 of file gemma4_per_layer_embed.c.
References ck_bf16_to_f32(), ck_gemma4_bf16_dot(), ck_gemma4_rmsnorm_tmp(), end, float_to_bf16(), QK_K, and token.
Referenced by gemma4_per_layer_prepare_bf16_forward().
|
static |
Definition at line 261 of file gemma4_per_layer_embed.c.
References ck_threadpool_global(), ck_threadpool_n_threads(), and ck_threadpool_parallel_for_n().
Referenced by gemma4_per_layer_prepare_bf16_forward(), and gemma4_per_layer_prepare_forward().
|
static |
Definition at line 158 of file gemma4_per_layer_embed.c.
References ck_gemma4_bf16_dot(), ck_gemma4_dequant_q5_k_block(), ck_gemma4_rmsnorm_tmp(), end, float_to_bf16(), QK_K, and token.
Referenced by gemma4_per_layer_prepare_forward().
|
inlinestatic |
Definition at line 108 of file gemma4_per_layer_embed.c.
Referenced by ck_gemma4_dequant_q5_k_block().
|
static |
Definition at line 132 of file gemma4_per_layer_embed.c.
Referenced by ck_gemma4_prepare_bf16_range(), and ck_gemma4_prepare_q5_range().
|
inlinestatic |
Definition at line 85 of file gemma4_per_layer_embed.c.
Referenced by ck_gemma4_dequant_q5_k_block().
| 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 | ||
| ) |
Definition at line 1143 of file gemm_kernels.c.
Referenced by ck_gemma4_embed_range().
| void gemma4_final_logit_softcap_forward | ( | float * | logits, |
| int | tokens, | ||
| int | vocab_size, | ||
| float | cap | ||
| ) |
Definition at line 491 of file gemma4_per_layer_embed.c.
References vocab_size.
| 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 | ||
| ) |
Definition at line 417 of file gemma4_per_layer_embed.c.
References ck_gemma4_embed_range(), ck_threadpool_global(), ck_threadpool_n_threads(), ck_threadpool_parallel_for_n(), and QK_K.
| 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 | ||
| ) |
Definition at line 309 of file gemma4_per_layer_embed.c.
References CK_GEMMA4_MAX_EMBED_DIM, ck_gemma4_prepare_bf16_range(), ck_gemma4_prepare_parallel(), QK_K, and vocab_size.
| 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 | ||
| ) |
Definition at line 272 of file gemma4_per_layer_embed.c.
References CK_GEMMA4_MAX_EMBED_DIM, ck_gemma4_prepare_parallel(), ck_gemma4_prepare_q5_range(), QK_K, and vocab_size.
| 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 | ||
| ) |
Definition at line 213 of file rmsnorm_kernels.c.
Referenced by ck_gemma4_embed_range().