__global__ void setRowReadColPad(int *out)
{
// static shared memory
__shared__ int tile[32][33];
// mapping from thread index to global memory offset
unsigned int idx = threadIdx.y * blockDim.x + threadIdx.x;
// shared memory store operation
tile[threadIdx.y][threadIdx.x] = idx;
// wait for all threads to complete
__syncthreads();
// shared memory load operation
out[idx] = tile[threadIdx.x][threadIdx.y];
}
С заполнением совместно используемой памяти это занимает 13,473us
Без заполнения это занимает 5,025us
Может кто-нибудь объяснить, почему заполнение имеет такое большое значение для времени выполнения ядра?