假设我有一个执行跨步内存访问的内核,如下所示:
__global__ void strideExample (float *outputData, float *inputData, int stride=2)
{
int index = (blockIdx.x * blockDim.x + threadIdx.x) * stride;
outputData[index] = inputData[index];
}
我知道步长为 2 的访问将导致 50% 的加载/存储效率,因为事务中涉及的一半元素没有被使用(成为浪费的带宽)。我们如何继续计算更大步幅的加载/存储效率?提前致谢!