在 CUDA 中,原子操作的结果对于与执行原子操作的线程位于同一 block 中的其他线程束的线程是否立即可见?在非原子操作的情况下,我知道在调用 __syncthreads()
之前结果可能不可见。
最佳答案
是的,根据定义,原子操作在对同一地址执行原子操作的任何其他线程访问相同值之前就完成并可见。
但是,如果其他线程同时通过非原子访问访问同一地址,则可能会出现竞争条件,因此您仍然必须小心编写正确的并发代码。
关于cuda原子添加可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836876/