#include "ckernel_ir_v2.h"#include "ckernel_mem_plan.h"#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>Go to the source code of this file.
Functions | |
| static size_t | ck_ir_v2_align_up_bytes (size_t n, size_t align) |
| static size_t | ck_ir_v2_align_up_elems (size_t elems, size_t elem_bytes, size_t align_bytes) |
| static CKDimKind | ck_ir_v2_dim_kind_from_name (const char *name) |
| static const char * | ck_ir_v2_dim_name (CKDimKind dim) |
| static const char * | ck_ir_v2_dtype_name (CKDataType dtype) |
| static void | ck_ir_v2_emit_dimensions (FILE *out, const CKModelConfig *cfg, const CKIRV2AlignInfo *align, int tokens_override) |
| static void | ck_ir_v2_emit_memory_plan (FILE *out, const CKIRV2Graph *graph, const CKMemPlan *plan) |
| static void | ck_ir_v2_emit_resolved_shape (FILE *out, const CKModelConfig *cfg, const CKIRV2AlignInfo *align, const CKDimToken *shape, int tokens_override) |
| static int | ck_ir_v2_emit_shape (FILE *out, const CKDimToken *shape) |
| static const char * | ck_ir_v2_find_array_end (const char *open, const char *end) |
| static int | ck_ir_v2_find_buffer_index (const CKIRV2Graph *graph, const char *name) |
| static const CKBufferSpec * | ck_ir_v2_find_buffer_spec (const char *name) |
| static const char * | ck_ir_v2_find_key (const char *json, const char *key, const char *end) |
| void | ck_ir_v2_free (CKIRV2Graph *graph) |
| static void | ck_ir_v2_free_buffer (CKIRV2Buffer *buf) |
| static void | ck_ir_v2_free_node (CKIRV2Node *node) |
| static const char * | ck_ir_v2_mem_arena_name (CKMemArenaKind arena) |
| static const char * | ck_ir_v2_next_object (const char *cur, const char *end, const char **obj_start, const char **obj_end) |
| static int | ck_ir_v2_parse_bindings (const char *obj_start, const char *obj_end, CKIRV2Graph *graph, CKIRV2Node *node) |
| static int | ck_ir_v2_parse_bool (const char *json, const char *key, const char *end, int *out_val) |
| static int | ck_ir_v2_parse_buffers (const char *json, const char *end, CKIRV2Graph *graph) |
| static CKDimKind | ck_ir_v2_parse_dim_kind (const char *obj_start, const char *obj_end) |
| static CKDataType | ck_ir_v2_parse_dtype (const char *s) |
| static int | ck_ir_v2_parse_float (const char *json, const char *key, const char *end, float *out_val) |
| static int | ck_ir_v2_parse_int (const char *json, const char *key, const char *end, int *out_val) |
| int | ck_ir_v2_parse_json (const char *path, CKIRV2Graph *graph) |
| static int | ck_ir_v2_parse_nodes (const char *json, const char *end, CKIRV2Graph *graph) |
| static CKBufferRole | ck_ir_v2_parse_role (const char *s) |
| static CKBufferScope | ck_ir_v2_parse_scope (const char *s) |
| static int | ck_ir_v2_parse_shape (const char *obj_start, const char *obj_end, CKDimToken *shape_out) |
| static int | ck_ir_v2_parse_string (const char *start, const char *end, char **out_str) |
| static int | ck_ir_v2_parse_string_field (const char *json, const char *key, const char *end, char **out_str) |
| static void | ck_ir_v2_resolve_align (const CKModelConfig *cfg, size_t alignment_bytes, CKIRV2AlignInfo *align) |
| static size_t | ck_ir_v2_resolve_dim_value (const CKModelConfig *cfg, const CKIRV2AlignInfo *align, CKDimKind dim, int tokens_override) |
| static const char * | ck_ir_v2_role_name (CKBufferRole role) |
| static const char * | ck_ir_v2_scope_name (CKBufferScope scope) |
| int | ck_ir_v2_serialize_json (const CKIRV2Graph *graph, const char *path) |
| static int | ck_ir_v2_serialize_json_internal (const CKIRV2Graph *graph, const CKMemPlan *plan, const char *mode, int tokens_override, int base_context_window, const char *path) |
| int | ck_ir_v2_serialize_json_with_plan (const CKIRV2Graph *graph, const CKMemPlan *plan, const char *mode, int tokens_override, int base_context_window, const char *path) |
| static const char * | ck_ir_v2_skip_string (const char *cur, const char *end) |
|
static |
Definition at line 164 of file ckernel_ir_v2.c.
Referenced by ck_ir_v2_align_up_elems().
|
static |
Definition at line 172 of file ckernel_ir_v2.c.
References ck_ir_v2_align_up_bytes().
Referenced by ck_ir_v2_resolve_align().
|
static |
Definition at line 138 of file ckernel_ir_v2.c.
References CK_DIM_ALIGNED_CTX, CK_DIM_ALIGNED_EMBED, CK_DIM_ALIGNED_HEAD, CK_DIM_ALIGNED_INTERMEDIATE, CK_DIM_EMBED, CK_DIM_END, CK_DIM_HEAD_DIM, CK_DIM_INTERMEDIATE, CK_DIM_NUM_HEADS, CK_DIM_NUM_KV_HEADS, CK_DIM_TOKENS, and CK_DIM_VOCAB.
Referenced by ck_ir_v2_parse_dim_kind().
|
static |
Definition at line 108 of file ckernel_ir_v2.c.
References CK_DIM_ALIGNED_CTX, CK_DIM_ALIGNED_EMBED, CK_DIM_ALIGNED_HEAD, CK_DIM_ALIGNED_INTERMEDIATE, CK_DIM_EMBED, CK_DIM_HEAD_DIM, CK_DIM_INTERMEDIATE, CK_DIM_NUM_HEADS, CK_DIM_NUM_KV_HEADS, CK_DIM_TOKENS, and CK_DIM_VOCAB.
Referenced by ck_ir_v2_emit_dimensions(), and ck_ir_v2_emit_shape().
|
static |
Definition at line 86 of file ckernel_ir_v2.c.
References CK_DT_BF16, CK_DT_FP16, CK_DT_FP32, CK_DT_Q4_0, CK_DT_Q4_K, CK_DT_Q6_K, and CK_DT_Q8_0.
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 286 of file ckernel_ir_v2.c.
References CK_DIM_ALIGNED_CTX, CK_DIM_ALIGNED_EMBED, CK_DIM_ALIGNED_HEAD, CK_DIM_ALIGNED_INTERMEDIATE, CK_DIM_EMBED, CK_DIM_HEAD_DIM, CK_DIM_INTERMEDIATE, CK_DIM_NUM_HEADS, CK_DIM_NUM_KV_HEADS, CK_DIM_TOKENS, CK_DIM_VOCAB, ck_ir_v2_dim_name(), and ck_ir_v2_resolve_dim_value().
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 333 of file ckernel_ir_v2.c.
References CKMemPlan::alignment_bytes, CKMemSpan::arena, CKIRV2Graph::buffers, ck_ir_v2_mem_arena_name(), CK_MEM_ARENA_ACTIVATIONS, CK_MEM_ARENA_GRADS, CK_MEM_ARENA_WEIGHTS, CKIRV2Buffer::name, CKIRV2Graph::num_buffers, CKMemSpan::offset_bytes, CKMemSpan::size_bytes, CKMemPlan::spans, and CKMemPlan::total_bytes.
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 261 of file ckernel_ir_v2.c.
References CK_DIM_END, CK_IR_V2_MAX_DIMS, and ck_ir_v2_resolve_dim_value().
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 239 of file ckernel_ir_v2.c.
References CK_DIM_END, ck_ir_v2_dim_name(), and CK_IR_V2_MAX_DIMS.
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 610 of file ckernel_ir_v2.c.
References ck_ir_v2_skip_string(), and end.
Referenced by ck_ir_v2_parse_bindings(), ck_ir_v2_parse_buffers(), ck_ir_v2_parse_nodes(), and ck_ir_v2_parse_shape().
|
static |
Definition at line 868 of file ckernel_ir_v2.c.
References CKIRV2Graph::buffers, CKIRV2Buffer::name, and CKIRV2Graph::num_buffers.
Referenced by ck_ir_v2_parse_bindings().
|
static |
Definition at line 855 of file ckernel_ir_v2.c.
References ck_decoder_buffer_count, and ck_decoder_buffers.
Referenced by ck_ir_v2_parse_buffers().
|
static |
Definition at line 637 of file ckernel_ir_v2.c.
References end.
Referenced by ck_ir_v2_parse_bindings(), ck_ir_v2_parse_bool(), ck_ir_v2_parse_buffers(), ck_ir_v2_parse_float(), ck_ir_v2_parse_int(), ck_ir_v2_parse_json(), ck_ir_v2_parse_nodes(), ck_ir_v2_parse_shape(), and ck_ir_v2_parse_string_field().
| void ck_ir_v2_free | ( | CKIRV2Graph * | graph | ) |
Definition at line 34 of file ckernel_ir_v2.c.
References CKIRV2Graph::buffers, ck_ir_v2_free_buffer(), ck_ir_v2_free_node(), CKIRV2Graph::nodes, CKIRV2Graph::num_buffers, and CKIRV2Graph::num_nodes.
Referenced by ck_ir_v2_build_decoder(), ck_ir_v2_build_decoder_backward(), ck_ir_v2_lower_emit_json(), ck_ir_v2_lower_graph(), ck_ir_v2_parse_json(), and main().
|
static |
Definition at line 9 of file ckernel_ir_v2.c.
References CKIRV2Buffer::alias_of, CKIRV2Buffer::condition, and CKIRV2Buffer::name.
Referenced by ck_ir_v2_free().
|
static |
Definition at line 20 of file ckernel_ir_v2.c.
References CKIRV2Binding::arg, CKIRV2Node::bindings, CKIRV2Node::condition, CKIRV2Node::kernel, CKIRV2Node::n_bindings, and CKIRV2Node::op.
Referenced by ck_ir_v2_free(), and ck_ir_v2_parse_nodes().
|
static |
Definition at line 319 of file ckernel_ir_v2.c.
References CK_MEM_ARENA_ACTIVATIONS, CK_MEM_ARENA_GRADS, and CK_MEM_ARENA_WEIGHTS.
Referenced by ck_ir_v2_emit_memory_plan().
|
static |
Definition at line 577 of file ckernel_ir_v2.c.
References ck_ir_v2_skip_string(), end, and start.
Referenced by ck_ir_v2_parse_bindings(), ck_ir_v2_parse_buffers(), ck_ir_v2_parse_json(), ck_ir_v2_parse_nodes(), and ck_ir_v2_parse_shape().
|
static |
Definition at line 965 of file ckernel_ir_v2.c.
References CKIRV2Binding::arg, CKIRV2Node::bindings, CKIRV2Binding::buffer, ck_ir_v2_find_array_end(), ck_ir_v2_find_buffer_index(), ck_ir_v2_find_key(), CK_IR_V2_MAX_BINDINGS, ck_ir_v2_next_object(), ck_ir_v2_parse_string_field(), CKIRV2Node::n_bindings, and start.
Referenced by ck_ir_v2_parse_nodes().
|
static |
Definition at line 673 of file ckernel_ir_v2.c.
References ck_ir_v2_find_key(), and end.
Referenced by ck_ir_v2_parse_json().
|
static |
Definition at line 881 of file ckernel_ir_v2.c.
References CKIRV2Buffer::alias_of, CKIRV2Graph::buffers, CK_DIM_END, ck_ir_v2_find_array_end(), ck_ir_v2_find_buffer_spec(), ck_ir_v2_find_key(), CK_IR_V2_MAX_DIMS, ck_ir_v2_next_object(), ck_ir_v2_parse_dtype(), ck_ir_v2_parse_int(), ck_ir_v2_parse_role(), ck_ir_v2_parse_scope(), ck_ir_v2_parse_shape(), ck_ir_v2_parse_string_field(), CKIRV2Buffer::condition, CKDimToken::dim, CKDimToken::div, CKIRV2Buffer::dtype, end, CKDimToken::mult, CKIRV2Buffer::name, CKIRV2Graph::num_buffers, CKIRV2Buffer::optional, CKIRV2Buffer::role, CKIRV2Buffer::scope, CKIRV2Buffer::shape, CKBufferSpec::shape, and start.
Referenced by ck_ir_v2_parse_json().
|
static |
Definition at line 785 of file ckernel_ir_v2.c.
References CK_DIM_END, ck_ir_v2_dim_kind_from_name(), ck_ir_v2_parse_int(), and ck_ir_v2_parse_string_field().
Referenced by ck_ir_v2_parse_shape().
|
static |
Definition at line 772 of file ckernel_ir_v2.c.
References CK_DT_BF16, CK_DT_FP16, CK_DT_FP32, CK_DT_Q4_0, CK_DT_Q4_K, CK_DT_Q6_K, and CK_DT_Q8_0.
Referenced by ck_ir_v2_parse_buffers(), and ck_ir_v2_parse_nodes().
|
static |
Definition at line 701 of file ckernel_ir_v2.c.
References ck_ir_v2_find_key(), and end.
Referenced by ck_ir_v2_parse_json().
|
static |
Definition at line 652 of file ckernel_ir_v2.c.
References ck_ir_v2_find_key(), and end.
Referenced by ck_ir_v2_parse_buffers(), ck_ir_v2_parse_dim_kind(), ck_ir_v2_parse_json(), ck_ir_v2_parse_nodes(), and ck_ir_v2_parse_shape().
| int ck_ir_v2_parse_json | ( | const char * | path, |
| CKIRV2Graph * | graph | ||
| ) |
Definition at line 1100 of file ckernel_ir_v2.c.
References ck_ir_v2_find_key(), ck_ir_v2_free(), ck_ir_v2_next_object(), ck_ir_v2_parse_bool(), ck_ir_v2_parse_buffers(), ck_ir_v2_parse_float(), ck_ir_v2_parse_int(), ck_ir_v2_parse_nodes(), CKIRV2Graph::config, CKModelConfig::context_window, end, CKIRV2Graph::fused_qkv, CKIRV2Graph::gated_mlp, CKIRV2Graph::has_pos_emb, CKModelConfig::hidden_size, CKModelConfig::intermediate_size, CKModelConfig::num_heads, CKModelConfig::num_kv_heads, CKModelConfig::num_layers, CKModelConfig::rms_norm_eps, CKModelConfig::rope_theta, CKIRV2Graph::tie_word_embeddings, and CKModelConfig::vocab_size.
Referenced by main().
|
static |
Definition at line 1005 of file ckernel_ir_v2.c.
References CKIRV2Binding::arg, CKIRV2Node::bindings, ck_ir_v2_find_array_end(), ck_ir_v2_find_key(), ck_ir_v2_free_node(), ck_ir_v2_next_object(), ck_ir_v2_parse_bindings(), ck_ir_v2_parse_dtype(), ck_ir_v2_parse_int(), ck_ir_v2_parse_string_field(), CKIRV2Node::condition, end, CKIRV2Node::flags, CKIRV2Node::kernel, CKIRV2Node::kernel_dtype, CKIRV2Node::layer, CKIRV2Node::n_bindings, CKIRV2Node::n_inputs, CKIRV2Node::n_outputs, CKIRV2Graph::nodes, CKIRV2Graph::num_nodes, CKIRV2Node::op, and start.
Referenced by ck_ir_v2_parse_json().
|
static |
Definition at line 760 of file ckernel_ir_v2.c.
References CK_ROLE_ACTIVATION, CK_ROLE_GRAD, CK_ROLE_INPUT, CK_ROLE_OUTPUT, CK_ROLE_SCRATCH, and CK_ROLE_WEIGHT.
Referenced by ck_ir_v2_parse_buffers().
|
static |
Definition at line 752 of file ckernel_ir_v2.c.
References CK_SCOPE_GLOBAL, and CK_SCOPE_LAYER.
Referenced by ck_ir_v2_parse_buffers().
|
static |
Definition at line 810 of file ckernel_ir_v2.c.
References CK_DIM_END, ck_ir_v2_find_array_end(), ck_ir_v2_find_key(), CK_IR_V2_MAX_DIMS, ck_ir_v2_next_object(), ck_ir_v2_parse_dim_kind(), ck_ir_v2_parse_int(), CKDimToken::dim, CKDimToken::div, CKDimToken::mult, and start.
Referenced by ck_ir_v2_parse_buffers().
|
static |
|
static |
Definition at line 722 of file ckernel_ir_v2.c.
References ck_ir_v2_find_key(), ck_ir_v2_parse_string(), and end.
Referenced by ck_ir_v2_parse_bindings(), ck_ir_v2_parse_buffers(), ck_ir_v2_parse_dim_kind(), and ck_ir_v2_parse_nodes().
|
static |
Definition at line 179 of file ckernel_ir_v2.c.
References ck_ir_v2_align_up_elems(), CK_MEM_PLAN_DEFAULT_ALIGN, CKModelConfig::context_window, CKModelConfig::hidden_size, CKModelConfig::intermediate_size, and CKModelConfig::num_heads.
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 202 of file ckernel_ir_v2.c.
References CK_DIM_ALIGNED_CTX, CK_DIM_ALIGNED_EMBED, CK_DIM_ALIGNED_HEAD, CK_DIM_ALIGNED_INTERMEDIATE, CK_DIM_EMBED, CK_DIM_END, CK_DIM_HEAD_DIM, CK_DIM_INTERMEDIATE, CK_DIM_NUM_HEADS, CK_DIM_NUM_KV_HEADS, CK_DIM_TOKENS, CK_DIM_VOCAB, CKModelConfig::context_window, CKModelConfig::hidden_size, CKModelConfig::intermediate_size, CKModelConfig::num_heads, CKModelConfig::num_kv_heads, and CKModelConfig::vocab_size.
Referenced by ck_ir_v2_emit_dimensions(), and ck_ir_v2_emit_resolved_shape().
|
static |
Definition at line 66 of file ckernel_ir_v2.c.
References CK_ROLE_ACTIVATION, CK_ROLE_GRAD, CK_ROLE_INPUT, CK_ROLE_OUTPUT, CK_ROLE_SCRATCH, and CK_ROLE_WEIGHT.
Referenced by ck_ir_v2_serialize_json_internal().
|
static |
Definition at line 54 of file ckernel_ir_v2.c.
References CK_SCOPE_GLOBAL, and CK_SCOPE_LAYER.
Referenced by ck_ir_v2_serialize_json_internal().
| int ck_ir_v2_serialize_json | ( | const CKIRV2Graph * | graph, |
| const char * | path | ||
| ) |
Definition at line 511 of file ckernel_ir_v2.c.
References ck_ir_v2_serialize_json_internal().
Referenced by main().
|
static |
Definition at line 365 of file ckernel_ir_v2.c.
References CKIRV2Buffer::alias_of, CKIRV2Binding::arg, CKIRV2Node::bindings, CKIRV2Binding::buffer, CKIRV2Graph::buffers, ck_ir_v2_dtype_name(), ck_ir_v2_emit_dimensions(), ck_ir_v2_emit_memory_plan(), ck_ir_v2_emit_resolved_shape(), ck_ir_v2_emit_shape(), ck_ir_v2_resolve_align(), ck_ir_v2_role_name(), ck_ir_v2_scope_name(), CK_MEM_PLAN_DEFAULT_ALIGN, CKIRV2Buffer::condition, CKIRV2Node::condition, CKIRV2Graph::config, CKModelConfig::context_window, CKIRV2Buffer::dtype, CKIRV2Node::flags, CKIRV2Graph::fused_qkv, CKIRV2Graph::gated_mlp, CKIRV2Graph::has_pos_emb, CKModelConfig::hidden_size, CKModelConfig::intermediate_size, CKIRV2Node::kernel, CKIRV2Node::kernel_dtype, CKIRV2Node::layer, CKIRV2Node::n_bindings, CKIRV2Buffer::name, CKIRV2Graph::nodes, CKIRV2Graph::num_buffers, CKModelConfig::num_heads, CKModelConfig::num_kv_heads, CKModelConfig::num_layers, CKIRV2Graph::num_nodes, CKIRV2Node::op, CKIRV2Buffer::optional, CKModelConfig::rms_norm_eps, CKIRV2Buffer::role, CKModelConfig::rope_theta, CKIRV2Buffer::scope, CKIRV2Buffer::shape, CKIRV2Graph::tie_word_embeddings, and CKModelConfig::vocab_size.
Referenced by ck_ir_v2_serialize_json(), and ck_ir_v2_serialize_json_with_plan().
| int ck_ir_v2_serialize_json_with_plan | ( | const CKIRV2Graph * | graph, |
| const CKMemPlan * | plan, | ||
| const char * | mode, | ||
| int | tokens_override, | ||
| int | base_context_window, | ||
| const char * | path | ||
| ) |
|
static |
Definition at line 558 of file ckernel_ir_v2.c.
References end.
Referenced by ck_ir_v2_find_array_end(), and ck_ir_v2_next_object().