diff --git a/Sources/MarkBase/Metal/MetalKernels.metal b/Sources/MarkBase/Metal/MetalKernels.metal index 4abb355..5de700e 100644 --- a/Sources/MarkBase/Metal/MetalKernels.metal +++ b/Sources/MarkBase/Metal/MetalKernels.metal @@ -1637,10 +1637,11 @@ kernel void matmul_f32( uint id [[thread_position_in_grid]] ) { // Each thread computes one output element - uint row = 0; // For single token, M=1 - uint col = id; + uint total = M * N; + if (id >= total) return; - if (col >= N) return; + uint row = id / N; + uint col = id % N; float sum = 0.0; for (uint k = 0; k < K; k++) {