 {
     int idx = blockIdx.x*blockDim.x+threadIdx.x;
 
-    if (idx < nrows)
+    for (;idx < nrows; idx+=gridDim.x*blockDim.x)
     {
         ghost_vidx_t v;
         for (v=0; v<nvecs; v++) {

{
    int idx = blockIdx.x*blockDim.x+threadIdx.x;

    if (idx < nrows)
    {
        ghost_vidx_t v;
        for (v=0; v<nvecs; v++) {

{
    int idx = blockIdx.x*blockDim.x+threadIdx.x;

    for (;idx < nrows; idx+=gridDim.x*blockDim.x)
    {
        ghost_vidx_t v;
        for (v=0; v<nvecs; v++) {
