      */
     for (uint32_t j = 0; j < full;  j += BLOCKDIM_X * BLOCKDIM_Y)
     {
-        s_data[tid] = d_x[tid + j];
+        s_data[tid] = fetch_x<UseCache>(tid + j, d_x);
         __syncthreads();
 
         /*

}


static void
mvm
(

 * Matrix-vector multiplication: y = A*x
 * The matrix is stored in row-major order.
 */
template <bool UseCache>
__global__ static void
mvm_core
(
