将结构写入 CUDA 中的相同全局内存位置是原子的吗?
is it atomic for writing a struct to same global memory location in CUDA?
例如:
struct Point
{
int x,
int y;
};
如果所有线程同时将自己的Point
写入全局内存中的同一位置,是否有可能该位置的最终结果Point
具有x
值线程 A 的值和线程 B 的 y
值?
这个问题与Concurrent writes in the same global memory location and Is global memory write considered atomic in CUDA?
密切相关
[这个答案是从一个应该是答案的评论中复制过来的。]
Is it possible that the final result Point in that location has x value of thread A and y value of thread B?
是的。为避免这种情况,您需要将 Point
编写为单个原子值(即,将 Point
重新解释为 double
或 int64
并使用原子集)。
例如:
struct Point
{
int x,
int y;
};
如果所有线程同时将自己的Point
写入全局内存中的同一位置,是否有可能该位置的最终结果Point
具有x
值线程 A 的值和线程 B 的 y
值?
这个问题与Concurrent writes in the same global memory location and Is global memory write considered atomic in CUDA?
密切相关[这个答案是从一个应该是答案的评论中复制过来的。]
Is it possible that the final result Point in that location has x value of thread A and y value of thread B?
是的。为避免这种情况,您需要将 Point
编写为单个原子值(即,将 Point
重新解释为 double
或 int64
并使用原子集)。