目前,我开发了一个基于 GPU 的程序,该程序使用多个内核,这些内核通过使用多个流同时启动。
在我的应用程序中,多个内核需要访问一个队列/堆栈
我有计划使用原子操作。
但我不知道原子操作是否在同时启动的多个内核之间工作。
请任何知道 GPU 上原子操作的确切机制的人帮助我
或者谁有这个问题的经验。
最佳答案
Atomics 是在 GPU 的 L2 缓存硬件中实现的,所有内存操作都必须通过它。没有硬件来确保主机和设备内存之间或不同 GPU 之间的一致性;但是只要内核在同一 GPU 上运行并使用该 GPU 上的设备内存进行同步,原子就会按预期工作。
关于concurrency - CUDA 原子操作和并发内核启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739406/