847 if (!forward || !runtime_path) {
851 const char *suffix =
".kernels";
852 size_t len = strlen(runtime_path) + strlen(suffix) + 1;
853 char *path = (
char *)malloc(len);
857 snprintf(path, len,
"%s%s", runtime_path, suffix);
859 FILE *f = fopen(path,
"wb");
861 fprintf(stderr,
"ck_codegen_emit_runtime: failed to open %s: %s\n",
862 path, strerror(errno));
868 const char **seen = (
const char **)calloc(seen_cap,
sizeof(
char *));
874 size_t seen_count = 0;
879 emit_unique_source(f,
"src/kernels/embedding_kernels.c", seen, &seen_count, seen_cap);
883 emit_unique_source(f,
"src/kernels/gemm_kernels_q4k_q8k.c", seen, &seen_count, seen_cap);
886 emit_unique_source(f,
"src/kernels/gemm_kernels_q4_0.c", seen, &seen_count, seen_cap);
887 emit_unique_source(f,
"src/kernels/gemm_kernels_q4_1.c", seen, &seen_count, seen_cap);
888 emit_unique_source(f,
"src/kernels/gemm_kernels_q5_0.c", seen, &seen_count, seen_cap);
889 emit_unique_source(f,
"src/kernels/gemm_kernels_q5_1.c", seen, &seen_count, seen_cap);
890 emit_unique_source(f,
"src/kernels/gemm_kernels_q8_0.c", seen, &seen_count, seen_cap);
892 emit_unique_source(f,
"src/kernels/gemm_kernels_q4k_sse.c", seen, &seen_count, seen_cap);
893 emit_unique_source(f,
"src/kernels/gemm_kernels_q4k_avx.c", seen, &seen_count, seen_cap);
894 emit_unique_source(f,
"src/kernels/gemm_kernels_q4k_q8k_avx2.c", seen, &seen_count, seen_cap);
895 emit_unique_source(f,
"src/kernels/gemm_kernels_q4k_q8k_vnni.c", seen, &seen_count, seen_cap);
896 emit_unique_source(f,
"src/kernels/gemm_kernels_q5_0_sse.c", seen, &seen_count, seen_cap);
897 emit_unique_source(f,
"src/kernels/gemm_kernels_q5_0_sse_v2.c", seen, &seen_count, seen_cap);
898 emit_unique_source(f,
"src/kernels/gemm_kernels_q6k_sse.c", seen, &seen_count, seen_cap);
899 emit_unique_source(f,
"src/kernels/quantize_row_q8_k_sse.c", seen, &seen_count, seen_cap);
900 emit_unique_source(f,
"src/kernels/quantize_row_q8_k_avx.c", seen, &seen_count, seen_cap);
901 emit_unique_source(f,
"src/kernels/quantize_row_q8_k_avx2.c", seen, &seen_count, seen_cap);
902 emit_unique_source(f,
"src/kernels/quantize_row_q8_k_avx512.c", seen, &seen_count, seen_cap);
907 emit_unique_source(f,
"src/kernels/gemm_fused_kernels.c", seen, &seen_count, seen_cap);
910 emit_unique_source(f,
"src/kernels/attention_decode_fused.c", seen, &seen_count, seen_cap);
911 emit_unique_source(f,
"src/kernels/attention_flash_true.c", seen, &seen_count, seen_cap);
939 fprintf(stderr,
"[ck_codegen] kernels manifest written to %s\n", path);