fix(rebase): adapt to dev's split tensor_upload/_g API + fault-injection hook
Dev split coli_cuda_tensor_upload into two symbols: the plain 7-arg tensor_upload (no gs) for fmt!=4, and tensor_upload_g (8-arg, with gs) for fmt=4 grouped. The DLL-side _g sets a g_upload_gs global the plain upload reads internally. Adapted all call sites: - colibri.c: qt_cuda_upload already dispatches (_g for fmt=4, plain otherwise) — kept dev's version. layer_cuda_shard_kvb was calling the plain upload with gs; switched to tensor_upload_g. - backend_loader.c: the C-API wrapper matches dev's 7-arg signature; tensor_upload_g dispatched separately. - backend_cuda.cu: cache-hit check uses g_upload_gs (not a gs param); coli_cuda_matmul dispatches _g when gs>0; the grouped-expert host fallback quant_matmul calls pass gs=0,ng=1 (host tier is per-row). - Kept dev's fault-injection hook, scale_count field, and fmt=4 support in the grouped-expert path (all_q4/any_g4 tracking). - tests: kept dev's comprehensive tensor_upload test (cached reuse, temp-buffer survival, upload-failure accounting, fault injection). Build-verified: colibri.exe + coli_cuda.dll both compile clean.
This commit is contained in:
+2
-2
@@ -325,9 +325,9 @@ int coli_cuda_attention_absorb(ColiCudaTensor *kv_b, float *ctx, const float *q,
|
||||
}
|
||||
|
||||
int coli_cuda_tensor_upload(ColiCudaTensor **tensor, const void *weights,
|
||||
const float *scales, int fmt, int I, int O, int device, int gs){
|
||||
const float *scales, int fmt, int I, int O, int device){
|
||||
if(!g_cuda.available) return 0;
|
||||
return g_cuda.tensor_upload(tensor, weights, scales, fmt, I, O, device, gs);
|
||||
return g_cuda.tensor_upload(tensor, weights, scales, fmt, I, O, device);
|
||||
}
|
||||
|
||||
int coli_cuda_tensor_upload_g(ColiCudaTensor **tensor, const void *weights, const float *scales, int fmt, int I, int O, int device, int gs){
|
||||
|
||||
Reference in New Issue
Block a user