     }
 
     for (int i = k_offset; i < cumulative_kernels[rank]; i++) {
-        printf("blocks: (%i, %i) , threads: (%i, %i)\n",
-               blocks[i].x, blocks[i].y,
-               threads[i].x, threads[i].y);
+        printf("blocks: (%i, %i, %i) , threads: (%i, %i, %i)\n",
+               blocks[i].x, blocks[i].y, blocks[i].z,
+               threads[i].x, threads[i].y, threads[i].z);
     }
 
     // gpu variables

       kx_offset = 0;
       for (int i = 0; i < kernels[rank].x; i++) {
            swe_from_compressible<<<blocks[k_offset + j * kernels[rank].x + i], threads[k_offset + j * kernels[rank].x + i]>>>(q_fd, qf_swe, nxf, nyf, nz, gamma_up, rho, gamma, kx_offset, ky_offset, p_floor);
            kx_offset += blocks[k_offset + j * kernels[rank].x + i].x *
                threads[k_offset + j * kernels[rank].x + i].x - 2*ng;
       }

                      nx, ny, nz, vec_dim, alpha, gamma,
                      dz, dt, kx_offset, ky_offset);
           }
           kx_offset += blocks[k_offset + j * kernels[rank].x + i].x * threads[k_offset + j * kernels[rank].x + i].x - 2*ng;
       }
       ky_offset += blocks[k_offset + j * kernels[rank].x].y * threads[k_offset + j * kernels[rank].x].y - 2*ng;
    }
