Concurrency CUDA原子操作和并发内核启动

Concurrency CUDA原子操作和并发内核启动,concurrency,cuda,gpu-atomics,Concurrency,Cuda,Gpu Atomics,目前,我开发了一个基于GPU的程序,它使用多个内核,通过使用多个流同时启动 在我的应用程序中,多个内核需要访问队列/堆栈 我计划使用原子操作 但我不知道原子操作是否在同时启动的多个内核之间工作。 请帮助我任何知道GPU上原子操作的确切机制的人 原子是在GPU的二级缓存硬件中实现的,所有内存操作都必须通过该硬件。没有硬件来确保主机和设备内存之间或不同GPU之间的一致性;但是,只要内核运行在同一个GPU上,并使用该GPU上的设备内存进行同步,atomics就会按预期工作。您尝试过什么吗?这根本不是我

目前,我开发了一个基于GPU的程序,它使用多个内核,通过使用多个流同时启动

在我的应用程序中,多个内核需要访问队列/堆栈 我计划使用原子操作

但我不知道原子操作是否在同时启动的多个内核之间工作。 请帮助我任何知道GPU上原子操作的确切机制的人
原子是在GPU的二级缓存硬件中实现的,所有内存操作都必须通过该硬件。没有硬件来确保主机和设备内存之间或不同GPU之间的一致性;但是,只要内核运行在同一个GPU上,并使用该GPU上的设备内存进行同步,atomics就会按预期工作。

您尝试过什么吗?这根本不是我的领域,但如果您尝试了其他用户可以更好地帮助您的一些代码:)来自CUDA C编程指南:原子函数对驻留在全局或共享内存中的一个32位或64位字执行读-修改-写原子操作。[…]该操作是原子的,因为它保证在不受其他线程干扰的情况下执行。来自CUDA C最佳实践指南:在能够并发内核执行的设备上,流还可以用于同时执行多个内核,以更充分地利用设备的多处理器将这两件事结合在一起,我想说,如果在不同的流中启动处理独立数据的不同内核,并且每个内核使用原子操作,那么每个内核中的操作都可以“序列化”,但内核仍然可以利用GPU中的不同资源(内核、加载/存储单元和特殊功能单元)并发运行。