← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
ckernel_codegen_v2.c
Go to the documentation of this file.
3#include "ckernel_mem_plan.h"
4
5#include <errno.h>
6#include <stdio.h>
7#include <stdlib.h>
8#include <string.h>
9
11 const char *path,
12 CKEmitMode mode)
13{
14 if (!graph || !path) {
15 return -1;
16 }
17
18 FILE *out = fopen(path, "wb");
19 if (!out) {
20 fprintf(stderr, "ck_codegen_v2_emit_runtime: failed to open %s: %s\n",
21 path, strerror(errno));
22 return -1;
23 }
24
25 CKMemPlan prefill_plan = {0};
26 CKMemPlan decode_plan = {0};
27 CKMemPlan backward_plan = {0};
28
29 if (ck_mem_plan_build_inference_with_tokens(graph, &prefill_plan,
30 CK_MEM_PLAN_DEFAULT_ALIGN, -1) != 0 ||
33 ck_mem_plan_build_training_with_tokens(graph, &backward_plan,
34 CK_MEM_PLAN_DEFAULT_ALIGN, -1) != 0) {
35 fclose(out);
36 ck_mem_plan_free(&prefill_plan);
37 ck_mem_plan_free(&decode_plan);
38 ck_mem_plan_free(&backward_plan);
39 return -1;
40 }
41
43 ck_codegen_v2_emit_struct(out, graph, &prefill_plan, "prefill");
44 ck_codegen_v2_emit_struct(out, graph, &decode_plan, "decode");
45 ck_codegen_v2_emit_struct(out, graph, &backward_plan, "backward");
47 &prefill_plan,
48 &decode_plan,
49 &backward_plan);
52 "ck_v2_prefill_runtime",
53 "ck_v2_decode_runtime",
54 "ck_v2_backward_runtime");
55
56 if (mode == CK_EMIT_STANDALONE) {
57 fprintf(out,
58 "int main(void) {\n"
59 " ck_v2_run_forward();\n"
60 " return 0;\n"
61 "}\n");
62 }
63
64 ck_mem_plan_free(&prefill_plan);
65 ck_mem_plan_free(&decode_plan);
66 ck_mem_plan_free(&backward_plan);
67 fclose(out);
68 return 0;
69}
CKEmitMode
@ CK_EMIT_STANDALONE
int ck_codegen_v2_emit_runtime(const CKIRV2Graph *graph, const char *path, CKEmitMode mode)
void ck_codegen_v2_emit_dispatch(FILE *out, const CKIRV2Graph *graph)
void ck_codegen_v2_emit_struct(FILE *out, const CKIRV2Graph *graph, const CKMemPlan *plan, const char *tag)
void ck_codegen_v2_emit_sections(FILE *out, const CKIRV2Graph *graph, const CKMemPlan *prefill_plan, const CKMemPlan *decode_plan, const CKMemPlan *backward_plan)
void ck_codegen_v2_emit_schedule(FILE *out, const CKIRV2Graph *graph, const char *prefill_runtime, const char *decode_runtime, const char *backward_runtime)
int ck_codegen_v2_emit_preamble(FILE *out)
int ck_mem_plan_build_training_with_tokens(const CKIRV2Graph *graph, CKMemPlan *plan, size_t alignment_bytes, int tokens_override)
void ck_mem_plan_free(CKMemPlan *plan)
#define CK_MEM_PLAN_DEFAULT_ALIGN
int ck_mem_plan_build_inference_with_tokens(const CKIRV2Graph *graph, CKMemPlan *plan, size_t alignment_bytes, int tokens_override)