#define _GNU_SOURCE #include #include #include #include #include #include #define main coli_glm_main_unused #include "../glm.c" #undef main static int fail(const char *s){ fprintf(stderr,"FAIL: %s\n",s); return 1; } static int test_expert_layout(int fd){ Model m={0}; ESlot slot={0}; UringBatch batch={0}; m.c.hidden=4; m.c.moe_inter=3; m.ebits=8; m.S.n=6; m.S.cap=6; m.S.t=calloc(6,sizeof(st_tensor)); if(!m.S.t) return fail("tensor metadata allocation"); const char *proj[3]={"gate_proj","up_proj","down_proj"}; int wbytes[3]={12,12,12}, sbytes[3]={12,12,16}; unsigned char data[76]; for(int i=0;i<36;i++) data[i]=(unsigned char)(i+1); float scales[10]; for(int i=0;i<10;i++) scales[i]=(float)i+0.5f; memcpy(data+36,scales,sizeof(scales)); if(pwrite(fd,data,sizeof(data),0)!=(ssize_t)sizeof(data)){ free(m.S.t); return fail("expert fixture write"); } int64_t wo=0,so=36; for(int k=0;k<3;k++){ char name[300]; snprintf(name,sizeof(name),"model.layers.1.mlp.experts.7.%s.weight",proj[k]); m.S.t[k]=(st_tensor){strdup(name),fd,wo,wbytes[k],3,wbytes[k]}; wo+=wbytes[k]; size_t n=strlen(name); memcpy(name+n,".qs",4); m.S.t[3+k]=(st_tensor){strdup(name),fd,so,sbytes[k],2,sbytes[k]/4}; so+=sbytes[k]; } if(uring_batch_init(&batch)){ free(m.S.t); return fail("expert ring init"); } uring_batch_reset(&batch); int li=uring_load_add(&batch,&m,1,7,&slot,1); if(li!=0 || uring_submit_batch(&batch) || uring_finalize_load(&batch,li,1)){ coli_uring_close(&batch.ring); free(m.S.t); return fail("expert batch load"); } int bad=slot.eid!=7 || slot.g.fmt!=1 || slot.u.fmt!=1 || slot.d.fmt!=1 || memcmp(slot.g.q8,data,12) || memcmp(slot.u.q8,data+12,12) || memcmp(slot.d.q8,data+24,12) || memcmp(slot.g.s,scales,12) || memcmp(slot.u.s,scales+3,12) || memcmp(slot.d.s,scales+6,16); coli_uring_close(&batch.ring); compat_aligned_free(slot.slab); free(slot.fslab); if(bad){ for(int i=0;iN || cqe.res!=SZ){ coli_uring_close(&ring); close(fd); return fail("bad completion"); } int i=(int)cqe.user_data-1; if(seen[i]++){ coli_uring_close(&ring); close(fd); return fail("duplicate completion"); } complete++; } if(!reaped && complete