在CUDA中,全局内存写操作是否被视为原子操作?
考虑以下CUDA内核代码:
int idx = blockIdx.x*blockDim.x+threadIdx.x;
int gidx = idx%1000;
globalStorage[gidx] = somefunction(idx);
全局内存写入
globalStorage
是原子的吗?例如,没有竞态条件,使得并发的内核线程写入存储在globalStorage中相同变量的字节,这可能会搞乱结果(例如部分写入)?请注意,我这里不是说原子操作,如加/减/按位等操作,而是直接全局写入。
编辑:重写示例代码以避免混淆。