获取CUDA内核中共享内存中元素的总和

时间:2016-11-27 11:40:00

标签: cuda shared-memory

我是CUDA的初学者,并尝试获取共享内存中元素的总和,以下是我的内核

__global__ void columnaddition(DataIn data, double** shiftedData)
{
    int u = blockIdx.y;
    int v = threadIdx.x;
    int xu = blockIdx.x;
    extern __shared__ double columnShiftedData[];
    columnShiftedData[v] = *(*(shiftedData + (v*data.V) + u) + xu);

}

这里基于threadIdx和blockIdx.x以及blockIdx.y我将数据加载到共享内存。根据我的理解,只有一个线程可以参与获得总和,因为它应该是顺序的。但是现在内核已经使用V(假设)线程启动了,所以我的问题是如何有效地获得总和以及块内其他线程会发生什么。

0 个答案:

没有答案