← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
ckernel_registry.c File Reference
#include "ckernel_registry.h"
#include <stdio.h>

Go to the source code of this file.

Functions

int ck_ir_validate_supported (const CKIRGraph *graph)
 
static const char * ck_op_name (CKOpType op)
 
int ck_op_supported (CKOpType op)
 

Function Documentation

◆ ck_ir_validate_supported()

int ck_ir_validate_supported ( const CKIRGraph graph)

Definition at line 42 of file ckernel_registry.c.

43{
44 if (!graph || !graph->nodes || graph->num_nodes <= 0) {
45 return -1;
46 }
47
48 for (int i = 0; i < graph->num_nodes; ++i) {
49 CKOpType op = graph->nodes[i].op;
50 if (!ck_op_supported(op)) {
51 fprintf(stderr,
52 "Unsupported op in IR: %s (layer=%u node=%u)\n",
53 ck_op_name(op),
54 (unsigned)graph->nodes[i].id.layer,
55 (unsigned)graph->nodes[i].id.node);
56 return -1;
57 }
58 }
59 return 0;
60}
CKOpType
Definition ckernel_ir.h:38
static const char * ck_op_name(CKOpType op)
int ck_op_supported(CKOpType op)
CKIRNode * nodes
Definition ckernel_ir.h:78
int num_nodes
Definition ckernel_ir.h:77
CKOpType op
Definition ckernel_ir.h:68
CKKernelId id
Definition ckernel_ir.h:67
uint16_t node
Definition ckernel_ir.h:58
uint16_t layer
Definition ckernel_ir.h:57

References ck_op_name(), ck_op_supported(), CKIRNode::id, CKKernelId::layer, CKKernelId::node, CKIRGraph::nodes, CKIRGraph::num_nodes, and CKIRNode::op.

Referenced by ck_codegen_emit_runtime().

◆ ck_op_name()

static const char * ck_op_name ( CKOpType  op)
static

Definition at line 5 of file ckernel_registry.c.

6{
7 switch (op) {
8 case CK_OP_RMSNORM: return "RMSNORM";
9 case CK_OP_LINEAR_QKV: return "LINEAR_QKV";
10 case CK_OP_ATTENTION: return "ATTENTION";
11 case CK_OP_ADD: return "ADD";
12 case CK_OP_LINEAR: return "LINEAR";
13 case CK_OP_SPLIT: return "SPLIT";
14 case CK_OP_SWIGLU: return "SWIGLU";
15 case CK_OP_RMSNORM_BWD: return "RMSNORM_BWD";
16 case CK_OP_LINEAR_QKV_BWD: return "LINEAR_QKV_BWD";
17 case CK_OP_ATTENTION_BWD: return "ATTENTION_BWD";
18 case CK_OP_ADD_BWD: return "ADD_BWD";
19 case CK_OP_LINEAR_BWD: return "LINEAR_BWD";
20 case CK_OP_SPLIT_BWD: return "SPLIT_BWD";
21 case CK_OP_SWIGLU_BWD: return "SWIGLU_BWD";
22 default: return "UNKNOWN";
23 }
24}
@ CK_OP_LINEAR_BWD
Definition ckernel_ir.h:51
@ CK_OP_SWIGLU
Definition ckernel_ir.h:45
@ CK_OP_RMSNORM_BWD
Definition ckernel_ir.h:47
@ CK_OP_SWIGLU_BWD
Definition ckernel_ir.h:53
@ CK_OP_ADD
Definition ckernel_ir.h:42
@ CK_OP_SPLIT
Definition ckernel_ir.h:44
@ CK_OP_LINEAR_QKV_BWD
Definition ckernel_ir.h:48
@ CK_OP_ATTENTION_BWD
Definition ckernel_ir.h:49
@ CK_OP_SPLIT_BWD
Definition ckernel_ir.h:52
@ CK_OP_LINEAR_QKV
Definition ckernel_ir.h:40
@ CK_OP_LINEAR
Definition ckernel_ir.h:43
@ CK_OP_RMSNORM
Definition ckernel_ir.h:39
@ CK_OP_ADD_BWD
Definition ckernel_ir.h:50
@ CK_OP_ATTENTION
Definition ckernel_ir.h:41

References CK_OP_ADD, CK_OP_ADD_BWD, CK_OP_ATTENTION, CK_OP_ATTENTION_BWD, CK_OP_LINEAR, CK_OP_LINEAR_BWD, CK_OP_LINEAR_QKV, CK_OP_LINEAR_QKV_BWD, CK_OP_RMSNORM, CK_OP_RMSNORM_BWD, CK_OP_SPLIT, CK_OP_SPLIT_BWD, CK_OP_SWIGLU, and CK_OP_SWIGLU_BWD.

Referenced by ck_ir_validate_supported().

◆ ck_op_supported()

int ck_op_supported ( CKOpType  op)

Definition at line 26 of file ckernel_registry.c.

27{
28 switch (op) {
29 case CK_OP_RMSNORM:
31 case CK_OP_ATTENTION:
32 case CK_OP_ADD:
33 case CK_OP_LINEAR:
34 case CK_OP_SPLIT:
35 case CK_OP_SWIGLU:
36 return 1;
37 default:
38 return 0;
39 }
40}

References CK_OP_ADD, CK_OP_ATTENTION, CK_OP_LINEAR, CK_OP_LINEAR_QKV, CK_OP_RMSNORM, CK_OP_SPLIT, and CK_OP_SWIGLU.

Referenced by ck_ir_validate_supported().