例如:
struct Point
{
int x,
int y;
};
如果所有线程同时将自己的Point
写入全局内存中的同一位置,那么该位置的最终结果Point
是否有x
个线程值线程B的A和y
值?
此问题与Concurrent writes in the same global memory location和Is global memory write considered atomic in CUDA?
密切相关答案 0 :(得分:1)
[这个答案是从应该是答案的评论中复制过来的。]
该位置的最终结果Point是否有线程A的x值和线程B的y值?
是。为了避免这种情况,您需要将Point
写为单个原子值(即,将Point
重新解释为double
或int64
并使用原子集。