MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / gguf_write_to_buf

Function gguf_write_to_buf

ggml.c:20255–20368  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20253}
20254
20255static void gguf_write_to_buf(const struct gguf_context * ctx, struct gguf_buf * buf, bool only_meta) {
20256 // write header
20257 gguf_bwrite_el(buf, &ctx->header.magic, sizeof(ctx->header.magic));
20258 gguf_bwrite_el(buf, &ctx->header.version, sizeof(ctx->header.version));
20259 gguf_bwrite_el(buf, &ctx->header.n_tensors, sizeof(ctx->header.n_tensors));
20260 gguf_bwrite_el(buf, &ctx->header.n_kv, sizeof(ctx->header.n_kv));
20261
20262 // write key-value pairs
20263 for (uint32_t i = 0; i < ctx->header.n_kv; ++i) {
20264 struct gguf_kv * kv = &ctx->kv[i];
20265
20266 gguf_bwrite_str(buf, &kv->key);
20267 gguf_bwrite_el (buf, &kv->type, sizeof(kv->type));
20268
20269 switch (kv->type) {
20270 case GGUF_TYPE_UINT8: gguf_bwrite_el( buf, &kv->value.uint8, sizeof(kv->value.uint8) ); break;
20271 case GGUF_TYPE_INT8: gguf_bwrite_el (buf, &kv->value.int8, sizeof(kv->value.int8) ); break;
20272 case GGUF_TYPE_UINT16: gguf_bwrite_el (buf, &kv->value.uint16, sizeof(kv->value.uint16) ); break;
20273 case GGUF_TYPE_INT16: gguf_bwrite_el (buf, &kv->value.int16, sizeof(kv->value.int16) ); break;
20274 case GGUF_TYPE_UINT32: gguf_bwrite_el (buf, &kv->value.uint32, sizeof(kv->value.uint32) ); break;
20275 case GGUF_TYPE_INT32: gguf_bwrite_el (buf, &kv->value.int32, sizeof(kv->value.int32) ); break;
20276 case GGUF_TYPE_FLOAT32: gguf_bwrite_el (buf, &kv->value.float32, sizeof(kv->value.float32)); break;
20277 case GGUF_TYPE_UINT64: gguf_bwrite_el (buf, &kv->value.uint64, sizeof(kv->value.uint64) ); break;
20278 case GGUF_TYPE_INT64: gguf_bwrite_el (buf, &kv->value.int64, sizeof(kv->value.int64) ); break;
20279 case GGUF_TYPE_FLOAT64: gguf_bwrite_el (buf, &kv->value.float64, sizeof(kv->value.float64)); break;
20280 case GGUF_TYPE_BOOL: gguf_bwrite_el (buf, &kv->value.bool_, sizeof(kv->value.bool_) ); break;
20281 case GGUF_TYPE_STRING: gguf_bwrite_str(buf, &kv->value.str ); break;
20282 case GGUF_TYPE_ARRAY:
20283 {
20284 gguf_bwrite_el(buf, &kv->value.arr.type, sizeof(kv->value.arr.type));
20285 gguf_bwrite_el(buf, &kv->value.arr.n, sizeof(kv->value.arr.n) );
20286
20287 switch (kv->value.arr.type) {
20288 case GGUF_TYPE_UINT8:
20289 case GGUF_TYPE_INT8:
20290 case GGUF_TYPE_UINT16:
20291 case GGUF_TYPE_INT16:
20292 case GGUF_TYPE_UINT32:
20293 case GGUF_TYPE_INT32:
20294 case GGUF_TYPE_FLOAT32:
20295 case GGUF_TYPE_UINT64:
20296 case GGUF_TYPE_INT64:
20297 case GGUF_TYPE_FLOAT64:
20298 case GGUF_TYPE_BOOL:
20299 {
20300 gguf_bwrite_el(buf, kv->value.arr.data, kv->value.arr.n * GGUF_TYPE_SIZE[kv->value.arr.type]);
20301 } break;
20302 case GGUF_TYPE_STRING:
20303 {
20304 for (uint32_t j = 0; j < kv->value.arr.n; ++j) {
20305 gguf_bwrite_str(buf, &((struct gguf_str *) kv->value.arr.data)[j]);
20306 }
20307 } break;
20308 case GGUF_TYPE_ARRAY:
20309 case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type"); break;
20310 }
20311 } break;
20312 case GGUF_TYPE_COUNT: GGML_ASSERT(false && "invalid type");

Callers 3

gguf_write_to_fileFunction · 0.70
gguf_get_meta_sizeFunction · 0.70
gguf_get_meta_dataFunction · 0.70

Calls 2

gguf_bwrite_elFunction · 0.85
gguf_bwrite_strFunction · 0.85

Tested by

no test coverage detected