code wiki / (root) / nx_shard_query_gate.nx

nx_shard_query_gate.nx source

↩ module page · 62 lines · 4138 B

1// nx_shard_query_gate.nx -- proves sharded scatter-gather top-k == single whole-corpus top-k (EXACT), incl. when the 2// winners span DIFFERENT shards. license_tier: ORIGINAL 3import "nx_shard_query.nx" 4import "nx_gate.nx" 5 6func gwf(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} if fd>=0 { sys_write(fd,s,n) } return 0 } 7func sq_asc(a: *i64, n: i64) -> i64 { var i: i64=0; while i<n { var j: i64=0; while j<n-1 { if a[j]>a[j+1] { let t: i64=a[j]; a[j]=a[j+1]; a[j+1]=t } j=j+1 } i=i+1 } return 0 } 8func sq_eq(a: *i64, b: *i64, n: i64) -> i64 { var i: i64=0; while i<n { if a[i]!=b[i] { return 0 } i=i+1 } return 1 } 9 10func main() -> i64 { 11 gw("=== nx_shard_query_gate: sharded scatter-gather top-k == single-index top-k (EXACT) ===\n" as *u8) 12 var pass: i64=0; var tot: i64=0 13 let k: i64=3 14 15 // 3 shards, 4 docs each. winners (60,50,40) deliberately land in 3 DIFFERENT shards. 16 let s0d: *i64=sys_mmap(8*4) as *i64; let s0s: *i64=sys_mmap(8*4) as *i64 17 s0d[0]=1;s0d[1]=2;s0d[2]=3;s0d[3]=4; s0s[0]=10;s0s[1]=3;s0s[2]=50;s0s[3]=7 18 let s1d: *i64=sys_mmap(8*4) as *i64; let s1s: *i64=sys_mmap(8*4) as *i64 19 s1d[0]=5;s1d[1]=6;s1d[2]=7;s1d[3]=8; s1s[0]=40;s1s[1]=2;s1s[2]=20;s1s[3]=9 20 let s2d: *i64=sys_mmap(8*4) as *i64; let s2s: *i64=sys_mmap(8*4) as *i64 21 s2d[0]=9;s2d[1]=10;s2d[2]=11;s2d[3]=12; s2s[0]=5;s2s[1]=60;s2s[2]=1;s2s[3]=30 22 23 let nsh: i64=3 24 let sd: *i64=sys_mmap(8*3) as *i64; let ss: *i64=sys_mmap(8*3) as *i64; let sn: *i64=sys_mmap(8*3) as *i64 25 sd[0]=s0d as i64; sd[1]=s1d as i64; sd[2]=s2d as i64 26 ss[0]=s0s as i64; ss[1]=s1s as i64; ss[2]=s2s as i64 27 sn[0]=4; sn[1]=4; sn[2]=4 28 29 // single whole-corpus index (all 12 docs) top-k -- the ground truth 30 let alld: *i64=sys_mmap(8*12) as *i64; let alls: *i64=sys_mmap(8*12) as *i64 31 var w: i64=0; var sh: i64=0 32 while sh<nsh { let dd: *i64=sd[sh] as *i64; let sc: *i64=ss[sh] as *i64; var j: i64=0; while j<sn[sh] { alld[w]=dd[j]; alls[w]=sc[j]; w=w+1; j=j+1 } sh=sh+1 } 33 let gd: *i64=sys_mmap(8*3) as *i64; let gs: *i64=sys_mmap(8*3) as *i64 34 sq_topk(alld, alls, 12, k, gd, gs) 35 36 // sharded scatter-gather top-k 37 let rd: *i64=sys_mmap(8*3) as *i64; let rs: *i64=sys_mmap(8*3) as *i64 38 sq_scatter_gather(sd, ss, sn, nsh, k, rd, rs) 39 40 // T1 scores identical (both descending) 41 tot=tot+1; if sq_eq(gs, rs, 3)==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 42 gw("T1 sharded top-3 scores == single-index (sharded=[" as *u8); gn(rs[0]); gw("," as *u8); gn(rs[1]); gw("," as *u8); gn(rs[2]); gw("], single=[" as *u8); gn(gs[0]); gw("," as *u8); gn(gs[1]); gw("," as *u8); gn(gs[2]); gw("])\n" as *u8) 43 44 // T2 doc set identical 45 let gd2: *i64=sys_mmap(8*3) as *i64; let rd2: *i64=sys_mmap(8*3) as *i64 46 var c: i64=0; while c<3 { gd2[c]=gd[c]; rd2[c]=rd[c]; c=c+1 } 47 sq_asc(gd2,3); sq_asc(rd2,3) 48 tot=tot+1; if sq_eq(gd2, rd2, 3)==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 49 gw("T2 top-3 doc SET identical: {" as *u8); gn(rd2[0]); gw("," as *u8); gn(rd2[1]); gw("," as *u8); gn(rd2[2]); gw("}\n" as *u8) 50 51 // T3 the winners span 3 DIFFERENT shards (proves the cross-shard MERGE actually matters) 52 var t3: i64=0 53 if rs[0]==60 { if rs[1]==50 { if rs[2]==40 { t3=1 } } } 54 tot=tot+1; if t3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 55 gw("T3 winners cross-shard: 60(shard2 doc10) 50(shard0 doc3) 40(shard1 doc5) -- merge required\n" as *u8) 56 57 gw("\n=== nx_shard_query_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8) 58 let lfd: i64=sys_openat_append("knowledge/status/shard_query_gate.log" as *u8, 420) 59 if pass==tot { gwf(lfd, "SHARD-QUERY-GATE verdict=GREEN scatter-gather exact-topk cross-shard\n" as *u8); if lfd>=0 { sys_close(lfd) } gw("SHARD-QUERY GREEN -- scatter-gather top-k == single index; horizontal scale read path (fan out on NAS/cluster)\n" as *u8); sys_exit(0); return 0 } 60 gwf(lfd, "SHARD-QUERY-GATE verdict=RED\n" as *u8); if lfd>=0 { sys_close(lfd) } 61 gw("SHARD-QUERY RED\n" as *u8); sys_exit(1); return 1 62}