关于CUDA 原子操作是不是受线程总数的约束

如果对一个数进行原子累加操作,操作10万次的时候,结果正确,但是操作10万次以上(如20万)结果就会出现错误。这个问题说明,原子操作受线程总数约束,还是受SM约束?它们之间有什么样的关系;
简易代码如下
#define N 100000 //200000

global void kernel(int *count)
{
tbid = blockIdx.x * blockDim.x + threadIdx.x;

atomicAdd(count, tbid);

}

int main()
{

kernel<<<N / 256 + 1, 256>>>(count);


}

路过 顶起

不清楚,顶一下

理论上来讲是没有问题,最大的可能是你其余的程序出现了问题。重点考虑下线程同步的问题,容易出现问题。

我感觉程序没什么问题,每个核心程序都一样,只是线程总数不一样而已。

理论上不会有这个,要是有这个问题就是一个系统bug了。
先检查一下结果是否是在10w的时候这个坎上出的问题,找找代码本身的原因

好的,我再试试看。