这会导致共享内存不一致吗?CUDA:来自不同经线但同一个块的2个线程尝试写入相同的SHARED内存位置:危险?
我的内核的代码看起来是这样的(伪代码):
__shared__ uint histogram[32][64];
uint threadLane = threadIdx.x % 32;
for (data){
histogram[threadLane][data]++;
}
这会不会导致碰撞,因为,在具有64个线程的块,ID为 “x” 和“线程(X + 32) “会经常写入矩阵中的相同位置?
该程序计算给定矩阵的直方图。我有一个相同的CPU程序。由GPU计算的直方图一直比CPU计算的直方图低1/128,我无法弄清楚原因。
您能否提供一些更详细的信息,特别是关于'data'与threadIdx以及启动配置有关的内容?编译的东西会更好。 –