nx_f32_llama_layer_load_test.nx source
↩ module page · 68 lines · 2567 B
1// nx_f32_llama_layer_load_test.nx -- smoke for nx_f32_llama_layer_load.nx.
2//
3// Uses the existing tiny-Llama fixture (1 layer, F32 zero weights)
4// to verify the binder populates all 9 weight pointers in the layer
5// struct.
6
7import "nx_syscalls.nx"
8import "nx_tier.nx"
9import "nx_gguf.nx"
10import "nx_gguf_fixture_tiny.nx"
11import "nx_gguf_load_f32.nx"
12import "nx_f32_llama_block.nx"
13import "nx_f32_llama_layer_load.nx"
14
15func main() -> i64 {
16 var vi: nx_int = 0
17 while vi < NX_FLL_N_VERDICTS {
18 if nx_fll_verdict_is_valid(vi) != 1 { return 5 + vi }
19 vi = vi + 1
20 }
21
22 // Build the tiny fixture (1 layer, all zero F32 weights).
23 let b: *NxGgufFixtureBundle = nx_gft_build_tiny_llama(42 as i64)
24 if nx_gft_is_built(b) != 1 { return 10 }
25
26 let layer: *NxF32LlamaLayer = nx_f32_llama_layer_alloc()
27 let out_err: *i64 = sys_mmap(8) as *i64
28
29 let v: nx_int = nx_f32_llama_layer_load_from_gguf(
30 b.gguf_buf, b.hdr, 0, layer, out_err)
31 if v != NX_FLL_OK { return 20 + v }
32 if out_err[0] != NX_FLL_OK { return 30 + (out_err[0] as nx_int) }
33
34 // All 9 pointers should be non-null.
35 if (layer.gamma_attn as i64) == 0 { return 40 }
36 if (layer.W_q as i64) == 0 { return 41 }
37 if (layer.W_k as i64) == 0 { return 42 }
38 if (layer.W_v as i64) == 0 { return 43 }
39 if (layer.W_o as i64) == 0 { return 44 }
40 if (layer.gamma_ffn as i64) == 0 { return 45 }
41 if (layer.W_gate as i64) == 0 { return 46 }
42 if (layer.W_up as i64) == 0 { return 47 }
43 if (layer.W_down as i64) == 0 { return 48 }
44
45 // Fixture has zero F32 weights -> first value of each tensor is 0.
46 if layer.gamma_attn[0] != 0 { return 50 }
47 if layer.W_q[0] != 0 { return 51 }
48 if layer.W_k[0] != 0 { return 52 }
49 if layer.W_v[0] != 0 { return 53 }
50 if layer.W_o[0] != 0 { return 54 }
51 if layer.gamma_ffn[0] != 0 { return 55 }
52 if layer.W_gate[0] != 0 { return 56 }
53 if layer.W_up[0] != 0 { return 57 }
54 if layer.W_down[0] != 0 { return 58 }
55
56 // Bad-layer verdict.
57 let layer2: *NxF32LlamaLayer = nx_f32_llama_layer_alloc()
58 let vE: nx_int = nx_f32_llama_layer_load_from_gguf(
59 b.gguf_buf, b.hdr, -1, layer2, out_err)
60 if vE != NX_FLL_ERR_BAD_LAYER { return 60 }
61
62 // Missing layer (layer 5 not in tiny fixture which only has 1 layer).
63 let vN: nx_int = nx_f32_llama_layer_load_from_gguf(
64 b.gguf_buf, b.hdr, 5, layer2, out_err)
65 if vN != NX_FLL_ERR_NOT_FOUND { return 70 }
66
67 return 0
68}