← Back to C-Kernel-Engine Docs Doxygen Source Documentation
ck_model_api.h File Reference

Generic Model API - Model-agnostic interface for CK-Engine. More...

#include <stddef.h>
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  CKModelConfig
 

Functions

void * ck_model_create (void)
 
void ck_model_decode (void *model, const int *token, int token_index)
 
void ck_model_forward (void *model, const int *tokens, int num_tokens)
 
void ck_model_free (void *model)
 
void * ck_model_get_base (void *model)
 
const CKModelConfigck_model_get_config (void)
 
float * ck_model_get_logits (void *model)
 
size_t ck_model_get_total_bytes (void *model)
 
int ck_model_load_weights (void *model, const char *bump_path)
 
void ck_model_precompute_rope (void *model)
 
int ck_model_verify_canaries (void *model)
 

Detailed Description

Generic Model API - Model-agnostic interface for CK-Engine.

All generated models emit the same function names, making the inference engine completely model-agnostic. To use different models, compile separate binaries.

Usage: void *model = ck_model_create(); ck_model_load_weights(model, "weights.bump"); ck_model_forward(model, tokens, num_tokens); // prefill ck_model_decode(model, &token, token_index); // decode float *logits = ck_model_get_logits(model); ck_model_free(model);

Definition in file ck_model_api.h.

Function Documentation

◆ ck_model_create()

void* ck_model_create ( void  )

Create and allocate model memory. Returns opaque model pointer, or NULL on failure.

Definition at line 8582 of file v6.5/test_generated/generic_api_test.c.

8582  {
8583  MODELModel *model = malloc(sizeof(MODELModel));
8584  if (!model) return NULL;
8585  if (model_model_allocate(model) != 0) {
8586  free(model);
8587  return NULL;
8588  }
8589  return model;
8590 }
int model_model_allocate(MODELModel *model)

References model_model_allocate(), and qwen2_0_5b_decode_model_allocate().

Referenced by main().

◆ ck_model_decode()

void ck_model_decode ( void *  model,
const int *  token,
int  token_index 
)

Decode single token at position token_index. Used for autoregressive generation.

Definition at line 8606 of file v6.5/test_generated/generic_api_test.c.

8606  {
8607  model_decode((MODELModel *)model, token, token_index);
8608 }
const char * token
Definition: tokenizer.h:306
void model_decode(MODELModel *model, const int *token, int token_index)

References model_decode(), qwen2_0_5b_decode_decode(), and token.

Referenced by run_benchmark(), and run_generation_test().

◆ ck_model_forward()

void ck_model_forward ( void *  model,
const int *  tokens,
int  num_tokens 
)

Forward pass (prefill) - process multiple tokens. Used for initial prompt processing.

Definition at line 8602 of file v6.5/test_generated/generic_api_test.c.

8602  {
8603  model_forward((MODELModel *)model, tokens, num_tokens);
8604 }
void model_forward(MODELModel *model, const int *tokens, int num_tokens)

References model_forward(), and qwen2_0_5b_decode_forward().

◆ ck_model_free()

void ck_model_free ( void *  model)

Free model memory.

Definition at line 8592 of file v6.5/test_generated/generic_api_test.c.

8592  {
8593  if (!model) return;
8594  model_model_free((MODELModel *)model);
8595  free(model);
8596 }
void model_model_free(MODELModel *model)

References model_model_free(), and qwen2_0_5b_decode_model_free().

Referenced by main().

◆ ck_model_get_base()

void* ck_model_get_base ( void *  model)

Get model base pointer (for weight loading).

Definition at line 8619 of file v6.5/test_generated/generic_api_test.c.

8619  {
8620  return ((MODELModel *)model)->base;
8621 }

Referenced by load_weights_from_bump().

◆ ck_model_get_config()

const CKModelConfig* ck_model_get_config ( void  )

Get model configuration (dimensions, sizes, etc.) This is available before allocation.

Definition at line 8578 of file v6.5/test_generated/generic_api_test.c.

8578  {
8579  return &g_model_config;
8580 }
static CKModelConfig g_model_config

References g_model_config.

Referenced by load_weights_from_bump(), main(), run_benchmark(), and run_generation_test().

◆ ck_model_get_logits()

float* ck_model_get_logits ( void *  model)

Get pointer to output logits buffer. Size is vocab_size floats.

Definition at line 8610 of file v6.5/test_generated/generic_api_test.c.

8610  {
8611  MODELModel *m = (MODELModel *)model;
8612  return MODEL_PTR(m, MODEL_FOOTER.logits);
8613 }

References QWEN2_0_5B_DECODEFooterOffsets::logits, QWEN2_0_5B_DECODE_FOOTER, and QWEN2_0_5B_DECODE_PTR.

Referenced by run_generation_test().

◆ ck_model_get_total_bytes()

size_t ck_model_get_total_bytes ( void *  model)

Get total model size in bytes.

Definition at line 8623 of file v6.5/test_generated/generic_api_test.c.

8623  {
8624  return ((MODELModel *)model)->total_bytes;
8625 }

Referenced by load_weights_from_bump().

◆ ck_model_load_weights()

int ck_model_load_weights ( void *  model,
const char *  bump_path 
)

Load weights from BUMP file into model. Returns 0 on success, -1 on failure.

◆ ck_model_precompute_rope()

void ck_model_precompute_rope ( void *  model)

Precompute RoPE cos/sin caches. Call once after allocation, before inference.

Definition at line 8598 of file v6.5/test_generated/generic_api_test.c.

8598  {
8599  model_precompute_rope((MODELModel *)model);
8600 }
void model_precompute_rope(MODELModel *model)

References model_precompute_rope(), and qwen2_0_5b_decode_precompute_rope().

Referenced by main().

◆ ck_model_verify_canaries()

int ck_model_verify_canaries ( void *  model)

Verify memory canaries (debug). Returns number of corrupted canaries (0 = OK).

Definition at line 8615 of file v6.5/test_generated/generic_api_test.c.

8615  {
8616  return model_verify_canaries((MODELModel *)model);
8617 }
int model_verify_canaries(MODELModel *model)

References model_verify_canaries(), and qwen2_0_5b_decode_verify_canaries().

Referenced by run_benchmark().