← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
logit_kernels.c File Reference
#include "ckernel_engine.h"
#include "bf16_utils.h"
#include <math.h>
#include <stddef.h>

Go to the source code of this file.

Functions

void final_logit_scale_f32 (float *logits, int tokens, int vocab_size, float scale)
 
void final_logit_scale_muse_pytorch_bf16_storage (float *logits, int tokens, int vocab_size, float scale)
 
void final_logit_softcap_muse_pytorch_bf16_storage (float *logits, int tokens, int vocab_size, float cap)
 

Function Documentation

◆ final_logit_scale_f32()

void final_logit_scale_f32 ( float *  logits,
int  tokens,
int  vocab_size,
float  scale 
)

Definition at line 9 of file logit_kernels.c.

13{
14 if (!logits || tokens <= 0 || vocab_size <= 0) {
15 return;
16 }
17
18 const size_t total = (size_t) tokens * (size_t) vocab_size;
19 for (size_t i = 0; i < total; ++i) {
20 logits[i] *= scale;
21 }
22}
int vocab_size
Definition true_bpe.h:197

References vocab_size.

◆ final_logit_scale_muse_pytorch_bf16_storage()

void final_logit_scale_muse_pytorch_bf16_storage ( float *  logits,
int  tokens,
int  vocab_size,
float  scale 
)

Definition at line 24 of file logit_kernels.c.

28{
29 if (!logits || tokens <= 0 || vocab_size <= 0) {
30 return;
31 }
32
33 const size_t total = (size_t)tokens * (size_t)vocab_size;
34 for (size_t i = 0; i < total; ++i) {
35 const float value = bf16_to_float(float_to_bf16(logits[i]));
36 logits[i] = bf16_to_float(float_to_bf16(value * scale));
37 }
38}
static uint16_t float_to_bf16(float f)
Definition bf16_utils.h:90
static float bf16_to_float(uint16_t v)
Definition bf16_utils.h:38

References bf16_to_float(), float_to_bf16(), and vocab_size.

◆ final_logit_softcap_muse_pytorch_bf16_storage()

void final_logit_softcap_muse_pytorch_bf16_storage ( float *  logits,
int  tokens,
int  vocab_size,
float  cap 
)

Definition at line 40 of file logit_kernels.c.

44{
45 if (!logits || tokens <= 0 || vocab_size <= 0 || cap <= 0.0f) {
46 return;
47 }
48
49 const size_t total = (size_t)tokens * (size_t)vocab_size;
50 for (size_t i = 0; i < total; ++i) {
51 const float value = bf16_to_float(float_to_bf16(logits[i]));
52 const float divided = bf16_to_float(float_to_bf16(value / cap));
53 const float activated = bf16_to_float(float_to_bf16(tanhf(divided)));
54 logits[i] = bf16_to_float(float_to_bf16(activated * cap));
55 }
56}

References bf16_to_float(), float_to_bf16(), and vocab_size.