我可以通过GPUDirect 2.0 P2P在远程GPU-RAM上的CUDA原子操作中使用吗?

我可以通过GPUDirect 2.0 P2P在远程GPU-RAM上的CUDA原子操作中使用吗?,cuda,nvidia,gpgpu,multi-gpu,gpudirect,Cuda,Nvidia,Gpgpu,Multi Gpu,Gpudirect,例如,我可以使用CUDA原子操作atomicAdd(ptr,val),atomicCAS(ptr,old,new)。。。在其全局内存(GPU-RAM)上。使用CUDA 6.5 但是我可以将这些用于远程全局内存吗?否。GPU原子只是执行操作的GPU上的原子。它们不在主机内存或非本地设备内存上工作 我确信,NVIDIA在未来的平台(尤其是NVLink平台)上解决这些限制是一个路线图项目。如果执行原子操作的GPU是唯一访问内存位置的处理器,则GPU可以正确地看到远程位置上的原子操作。如果其他处理器正在

例如,我可以使用CUDA原子操作
atomicAdd(ptr,val)
atomicCAS(ptr,old,new)
。。。在其全局内存(GPU-RAM)上。使用CUDA 6.5


但是我可以将这些用于远程全局内存吗?

否。GPU原子只是执行操作的GPU上的原子。它们不在主机内存或非本地设备内存上工作


我确信,NVIDIA在未来的平台(尤其是NVLink平台)上解决这些限制是一个路线图项目。

如果执行原子操作的GPU是唯一访问内存位置的处理器,则GPU可以正确地看到远程位置上的原子操作。如果其他处理器正在访问该位置,则不会。无法保证跨多个处理器的值的一致性。@Farzad谢谢!这是因为P2P在非缓存一致性总线-PCI Express上工作吗?这里的主要问题是,在二级缓存中,GPU保持原子一致性,因此GPU线程到外部世界(GPU全局内存、主机内存、对等内存等)的任何事务都被GPU视为原子事务。如果原子位置被任何其他原因操纵,如另一个GPU,二级缓存不会意识到这一点,因此原子操作会中断。@Farzad非常感谢。我被第10页上的短语“缓存在目标GPU的L2中的数据”误导了:“GPU之间的点对点通信”:PCIe 3总线上还可选支持一些原子操作,它们可以是具有现代网桥的设备对设备。-“原子读修改写事务:…IO->IO”