         }
     } else {
         for (;idx < nrows; idx+=gridDim.x*blockDim.x) {
-            v1[idx+v] = axpy<T,T>(v1[idx+v],v2[idx+v],a[v]);
+            v1[idx+v] = axpy<T,T>(v1[idx*ncolspadded+v],v2[idx*ncolspadded+v],a[v]);
         }
     }
 

        for (;idx < nrows; idx+=gridDim.x*blockDim.x) {
            if (rowmask[idx]) {
                if (colmask[v]) {
                    v1[idx*ncolspadded+v] = axpby<T>(v1[idx*ncolspadded+v],v2[idx*ncolspadded+v],a[v],b[v]);
                }
            }
        }
    } else {
        for (;idx < nrows; idx+=gridDim.x*blockDim.x) {
            v1[idx+v] = axpby<T>(v1[idx+v],v2[idx+v],a[v],b[v]);
        }
    }


        for (;idx < nrows; idx+=gridDim.x*blockDim.x) {
            if (rowmask[idx]) {
                if (colmask[v]) {
                    v1[idx*ncolspadded+v] = axpby<T>(v2[idx*ncolspadded+v],v1[idx*ncolspadded+v],a,b);
                }
            }
        }
    } else {
        for (;idx < nrows; idx+=gridDim.x*blockDim.x) {
            v1[idx*ncolspadded+v] = axpby<T>(v2[idx*ncolspadded+v],v1[idx*ncolspadded+v],a,b);
        }
    }
}
