code wiki / (root) / nx_gguf.nx

nx_gguf.nx

buildroot/runtime/nx_gguf.nx

15800 B426 linesdepth 4pulls 5 transitivereach 255 importersview sourcekind tooltopic gguf
docsdependenciesstructsconstsfunctions

about

nx_gguf.nx -- GGUF v3 model-file structural parser. Reads the file format used by llama.cpp / GGML for quantized transformer models. GGUF v3 is the de facto standard for Llama / Mistral / Qwen / Phi / Gemma weights in 2024-2025. Closes the WEIGHT-LOADING gap in the substrate's inference path. With this brick, the substrate can: 1. mmap or sys_read_file the .gguf file into a byte buffer 2. nx_gguf_parse(buf, len, out_header) -- get tensor count + dims 3. Iterate nx_gguf_tensor_at(header, i) -- per-tensor metadata 4. Compose nx_qb_dequantize_tensor / nx_qb8_dequantize_tensor / nx_q4k_dequantize_tensor on the named tensors at the offsets this parser exposes ===== Format (GGUF v3) ========================================== Reference: https://github.com/ggerganov/ggml/blob/master/docs/gguf.md magic u32 LE = "GGUF" (0x46554747) version u32 LE = 3 tensor_count u64 LE metadata_count u64 LE metadata_kv[] (count = metadata_count): key_len u64 LE key utf8 bytes [key_len] type u32 LE (GGUF_TYPE_*) value type-dependent encoding tensor_info[] (count = tensor_count): name_len u64 LE name utf8 bytes [name_len] n_dims u32 LE dims u64 LE * n_dims type u32 LE (ggml_type: F32, F16, Q4_0, Q4_K, Q8_0, ...) offset u64 LE (byte offset into the tensor data section) -- alignment padding to GGUF_ALIGNMENT (32) bytes --

dependencies 4 imports · 160 importers

nx_syscalls.nx nx_tier.nx nx_loop.nx nx_le.nx nx_gguf.nx nx_actor_role_llm_v2.nx nx_actor_role_llm_v2_autoreg_test. nx_actor_role_llm_v2_real_test.nx nx_actor_role_llm_v2_test.nx nx_batched_gate.nx nx_batched_tput.nx nx_chat_warmcache.nx nx_coder_gen_f32.nx nx_coder_swap_gate.nx nx_companion_chat.nx

diagram shows first 10 each side; +0 more imports, +150 more importers in the complete lists below.

imports: nx_syscalls.nxnx_tier.nxnx_loop.nxnx_le.nx

imported by: nx_actor_role_llm_v2.nxnx_actor_role_llm_v2_autoreg_test.nxnx_actor_role_llm_v2_real_test.nxnx_actor_role_llm_v2_test.nxnx_batched_gate.nxnx_batched_tput.nxnx_chat_warmcache.nxnx_coder_gen_f32.nxnx_coder_swap_gate.nxnx_companion_chat.nxnx_companion_voice.nxnx_dequant_bench.nxnx_dequant_bench_test.nxnx_dequant_iter.nxnx_dequant_iter_bench_test.nxnx_dequant_iter_test.nxnx_embed_bench.nxnx_f32_bpe_load.nxnx_f32_bpe_load_test.nxnx_f32_embed_gate.nxnx_f32_llama_layer_lazy_load.nxnx_f32_llama_layer_lazy_load_test.nxnx_f32_llama_layer_load.nxnx_f32_llama_layer_load_test.nxnx_f32_llm_bench_test.nxnx_f32_llm_chat_test.nxnx_f32_llm_cohere_test.nxnx_f32_llm_diag_test.nxnx_f32_llm_dim_dump_test.nxnx_f32_llm_e2e_test.nxnx_f32_llm_embed_diag_test.nxnx_f32_llm_live_dims_test.nxnx_f32_llm_live_gen_test.nxnx_f32_llm_live_load_only_test.nxnx_f32_llm_live_load_test.nxnx_f32_llm_load.nxnx_f32_llm_load_test.nxnx_f32_llm_probe.nxnx_f32_llm_read_dims.nxnx_f32_llm_read_dims_test.nxnx_f32_llm_run_test.nxnx_f32_llm_run_v2_test.nxnx_f32_llm_run_v3_test.nxnx_f32_llm_serve.nxnx_f32_llm_special_tokens.nxnx_f32_llm_special_tokens_test.nxnx_f32_llm_v4.nxnx_f32_llm_v4_test.nxnx_f32_qwen_capital_gate.nxnx_gguf_dequant_kat_gate.nxnx_gguf_fixture_tiny.nxnx_gguf_fixture_tiny_test.nxnx_gguf_load.nxnx_gguf_load_block.nxnx_gguf_load_block_test.nxnx_gguf_load_f32.nxnx_gguf_load_f32_test.nxnx_gguf_load_lazy.nxnx_gguf_load_lazy_test.nxnx_gguf_load_model.nxnx_gguf_load_model_test.nxnx_gguf_load_q4k_test.nxnx_gguf_load_test.nxnx_gguf_meta.nxnx_gguf_meta_test.nxnx_gguf_type_census_gate.nxnx_gguf_typecensus.nxnx_gguf_write_gate.nxnx_gpu_export.nxnx_gpu_serve_gate.nxnx_live_fire_gguf.nxnx_live_fire_gguf_test.nxnx_llm_argmax_probe.nxnx_llm_batch_serve.nxnx_llm_capcheck.nxnx_llm_diff_probe.nxnx_llm_forward_profile.nxnx_llm_france_probe.nxnx_llm_layerlens_probe.nxnx_llm_loopb_gate.nxnx_llm_ppl_bench_gate.nxnx_llm_run_v2.nxnx_llm_run_v2_test.nxnx_llm_sched_gate.nxnx_lowrank_kv_real.nxnx_lowrank_weight_spectrum.nxnx_nofloat_arch.nxnx_nofloat_arch_config_gate.nxnx_nofloat_arch_moe_gate.nxnx_nofloat_llm.nxnx_nofloat_moe_real_gate.nxnx_nofloat_olmoe_forward_gate.nxnx_nofloat_olmoe_gate.nxnx_nofloat_q6k_gate.nxnx_nofloat_qwen_bias_probe.nxnx_nofloat_qwen_config_gate.nxnx_nofloat_qwen_decode_gate.nxnx_nofloat_qwen_diag_gate.nxnx_nofloat_qwen_dqprobe_gate.nxnx_nofloat_qwen_encode_gate.nx +60 more (shown cap 100 declared)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main sys_mmap nx_le_write_u64 nx_le_write_u32 nx_le_write_u32 ↻ nx_gguf_parse nx_le_read_u32 nx_le_read_u64 nx_le_read_u32 ↻ _gguf_skip_value nx_le_read_u64 ↻ nx_le_read_u32 ↻ _gguf_skip_value ↻ sys_mmap ↻ nx_gguf_tensor_at nx_gguf_verdict_is_valid

structs

136struct NxGgufTensorInfo
152struct NxGgufHeader

consts

70const NX_GGUF_OK: nx_int = 0
71const NX_GGUF_ERR_BAD_MAGIC: nx_int = 1
72const NX_GGUF_ERR_UNSUPPORTED_VER: nx_int = 2
73const NX_GGUF_ERR_OOB: nx_int = 3
74const NX_GGUF_ERR_BAD_TYPE: nx_int = 4
75const NX_GGUF_ERR_TOO_MANY: nx_int = 5
76const NX_GGUF_N_VERDICTS: nx_int = 6
86const NX_GGUF_MAGIC: i64 = 0x46554747 // "GGUF" LE
87const NX_GGUF_VERSION: i64 = 3
88const NX_GGUF_ALIGNMENT: i64 = 32
91const NX_GGUF_TYPE_UINT8: i64 = 0
92const NX_GGUF_TYPE_INT8: i64 = 1
93const NX_GGUF_TYPE_UINT16: i64 = 2
94const NX_GGUF_TYPE_INT16: i64 = 3
95const NX_GGUF_TYPE_UINT32: i64 = 4
96const NX_GGUF_TYPE_INT32: i64 = 5
97const NX_GGUF_TYPE_FLOAT32: i64 = 6
98const NX_GGUF_TYPE_BOOL: i64 = 7
99const NX_GGUF_TYPE_STRING: i64 = 8
100const NX_GGUF_TYPE_ARRAY: i64 = 9
101const NX_GGUF_TYPE_UINT64: i64 = 10
102const NX_GGUF_TYPE_INT64: i64 = 11
103const NX_GGUF_TYPE_FLOAT64: i64 = 12
107const NX_GGML_TYPE_F32: i64 = 0
108const NX_GGML_TYPE_F16: i64 = 1
109const NX_GGML_TYPE_Q4_0: i64 = 2
110const NX_GGML_TYPE_Q4_1: i64 = 3
111const NX_GGML_TYPE_Q5_0: i64 = 6
112const NX_GGML_TYPE_Q5_1: i64 = 7
113const NX_GGML_TYPE_Q8_0: i64 = 8
114const NX_GGML_TYPE_Q8_1: i64 = 9
115const NX_GGML_TYPE_Q2_K: i64 = 10
116const NX_GGML_TYPE_Q3_K: i64 = 11
117const NX_GGML_TYPE_Q4_K: i64 = 12
118const NX_GGML_TYPE_Q5_K: i64 = 13
119const NX_GGML_TYPE_Q6_K: i64 = 14
120const NX_GGML_TYPE_Q8_K: i64 = 15
121const NX_GGML_TYPE_BF16: i64 = 30
127const NX_GGUF_MAX_TENSORS: nx_int = 1024
128const NX_GGUF_MAX_DIMS: nx_int = 4
129const NX_GGUF_MAX_NAME: nx_int = 64
148const NX_GGUF_TI_BYTES: nx_int = 72 // 9 fields * 8 bytes
161const NX_GGUF_HDR_BYTES: nx_int = 48 // 6 fields * 8

functions

78func nx_gguf_verdict_is_valid(v: nx_int) -> nx_int
called by 1: main
169func _gguf_skip_value(buf: *u8, len: i64, off: i64, ty: i64) -> i64
214func nx_gguf_parse(buf: *u8, len: i64, out_header: *NxGgufHeader) -> nx_int
322func nx_gguf_tensor_at(hdr: *NxGgufHeader, i: nx_int) -> *NxGgufTensorInfo
334func nx_gguf_skip_value(buf: *u8, len: i64, off: i64, ty: i64) -> i64
359func main() -> i64