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

标签 concurrency cuda gpu-atomics

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

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

但我不知道原子操作是否在同时启动的多个内核之间工作。
请任何知道 GPU 上原子操作的确切机制的人帮助我
或者谁有这个问题的经验。

最佳答案

Atomics 是在 GPU 的 L2 缓存硬件中实现的,所有内存操作都必须通过它。没有硬件来确保主机和设备内存之间或不同 GPU 之间的一致性;但是只要内核在同一 GPU 上运行并使用该 GPU 上的设备内存进行同步,原子就会按预期工作。

关于concurrency - CUDA 原子操作和并发内核启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739406/

相关文章:

haskell - 并发通用数据结构,无死锁或资源匮乏

java - 尝试使用 Cuda 运行 Nd4j 时出错

cuda - 64 位和 32 位的原子 CAS 组合可以吗?

cuda - 如何实现涉及多个变量的自定义原子函数?

OpenGL 原子计数器与 SSBO 中的原子

java - 什么会使单个任务执行器停止处理任务?

scala - 控制 Akka 中消耗大量内存的 actor 的生成

Java EE future 的空指针

memory-management - CUDA 分配数组

integer - cuda上的128位整数?