我正在阅读 Even Easier Introduction to CUDA,我正在考虑这样的例子:
__global__
void add(int n, float *x, float *y)
{
int index = threadIdx.x;
int stride = blockDim.x;
for (int i = index; i < n; i += stride)
y[i] = x[i] + y[i];
}
其中每个线程跨过数组。在正常的 CPU 计算中,人们宁愿将数组拆分为连续的子数组,这些子数组在线程之间进行拆分,以便它们可以更好地利用空间局部性。
这个概念是否也适用于 CUDA 的统一内存?我想了解在这种情况下最有效的方法是什么。