nx_zimage_adaln_verify.nx source
↩ module page · 98 lines · 3849 B
1// nx_zimage_adaln_verify.nx -- SOVEREIGN Z-Image block piece #1: adaLN modulation, verified vs the oracle.
2//
3// z_image.hpp JointTransformerBlock: m = adaLN_modulation.0(t_emb) [Linear 256->15360]; chunk 4 ->
4// {scale_msa, gate_msa, scale_mlp, gate_mlp}. Reads the oracle's dumped ada_w (15360x256 f32), t_emb (256),
5// and golden sm/gm/sl/gl; computes the linear sovereignly (f32); verifies all 15360 outputs to tol.
6// Reads reference dumps (oracle-only); the ORGAN is pure Nishi (nx_f32_*, raw syscalls, static ELF).
7// license_tier: ORIGINAL
8import "nx_syscalls.nx"
9import "nx_le.nx"
10import "nx_f32.nx"
11import "nx_f32_div.nx"
12import "nx_f32_cvt.nx"
13import "nx_strconv.nx"
14const K_MAGIC_15360: i64 = 15360
15const K_MAGIC_3840: i64 = 3840
16const K_MAGIC_7680: i64 = 7680
17const K_MAGIC_11520: i64 = 11520
18
19// load a .f32 file (n_floats floats) into a fresh byte buffer; f32 read via nx_le_read_u32.
20func zav_load(name: *u8, nl: i64, n_floats: i64) -> *u8 {
21 let base: *u8 = "/mnt/c/Users/elder/AppData/Local/Temp/claude/C--Users-elder/7be78b15-304c-449e-afe8-4d5bd7ddaa9c/scratchpad/zblk/" as *u8
22 let path: *u8 = sys_mmap(256)
23 var p: i64 = 0
24 var i: i64 = 0
25 while base[i] != 0 { path[p] = base[i]; p = p + 1; i = i + 1 }
26 i = 0
27 while i < nl { path[p] = name[i]; p = p + 1; i = i + 1 }
28 path[p] = 0x2E; p = p + 1
29 path[p] = 0x66; p = p + 1
30 path[p] = 0x33; p = p + 1
31 path[p] = 0x32; p = p + 1
32 path[p] = 0
33 let fd: i64 = sys_openat_rd(path)
34 if fd < 0 { return 0 as *u8 }
35 let bytes: i64 = n_floats * 4
36 let buf: *u8 = sys_mmap(bytes + 64)
37 var tot: i64 = 0
38 var go: i64 = 1
39 while go == 1 {
40 let r: i64 = sys_read(fd, ((buf as i64) + tot) as *u8, bytes - tot)
41 if r <= 0 { go = 0 } else { tot = tot + r; if tot >= bytes { go = 0 } }
42 }
43 sys_close(fd)
44 return buf
45}
46
47func main() -> i64 {
48 let IN: i64 = 256
49 let OUT: i64 = K_MAGIC_15360
50 let ada: *u8 = zav_load("ada_w" as *u8, 5, OUT * IN)
51 let temb: *u8 = zav_load("temb" as *u8, 4, IN)
52 let sm: *u8 = zav_load("sm" as *u8, 2, K_MAGIC_3840)
53 let gm: *u8 = zav_load("gm" as *u8, 2, K_MAGIC_3840)
54 let sl: *u8 = zav_load("sl" as *u8, 2, K_MAGIC_3840)
55 let gl: *u8 = zav_load("gl" as *u8, 2, K_MAGIC_3840)
56 if (ada as i64) == 0 { return 30 }
57 if (temb as i64) == 0 { return 31 }
58 if (sm as i64) == 0 { return 32 }
59
60 let tol: i64 = nx_f32_div(nx_i32_to_f32(1), nx_i32_to_f32(100)) // 0.01
61 var fails: i64 = 0
62 var first_bad: i64 = 0 - 1
63 var o: i64 = 0
64 while o < OUT {
65 var acc: i64 = 0
66 var i: i64 = 0
67 let rowb: i64 = o * IN * 4
68 while i < IN {
69 acc = nx_f32_add(acc, nx_f32_mul(nx_le_read_u32(ada, rowb + i * 4), nx_le_read_u32(temb, i * 4)))
70 i = i + 1
71 }
72 var g: i64 = 0
73 if o < K_MAGIC_3840 { g = nx_le_read_u32(sm, o * 4) }
74 if o >= K_MAGIC_3840 { if o < K_MAGIC_7680 { g = nx_le_read_u32(gm, (o - K_MAGIC_3840) * 4) } }
75 if o >= K_MAGIC_7680 { if o < K_MAGIC_11520 { g = nx_le_read_u32(sl, (o - K_MAGIC_7680) * 4) } }
76 if o >= K_MAGIC_11520 { g = nx_le_read_u32(gl, (o - K_MAGIC_11520) * 4) }
77 if (nx_f32_sub(acc, g) & 0x7FFFFFFF) >= tol {
78 fails = fails + 1
79 if first_bad < 0 { first_bad = o }
80 }
81 o = o + 1
82 }
83
84 let ofd: i64 = sys_openat_wr("/tmp/zav.txt" as *u8, 0x1a4)
85 if ofd >= 0 {
86 let dec: *u8 = sys_mmap(32)
87 sys_write(ofd, "fails=" as *u8, 6)
88 let n1: i64 = nx_strconv_format_i64(fails, dec)
89 sys_write(ofd, dec, n1)
90 sys_write(ofd, " first_bad=" as *u8, 11)
91 let n2: i64 = nx_strconv_format_i64(first_bad, dec)
92 sys_write(ofd, dec, n2)
93 sys_write(ofd, "\n" as *u8, 1)
94 sys_close(ofd)
95 }
96 if fails > 0 { return 20 }
97 return 0
98}