在 CUDA 统一内存多 GPU 或多处理器中使用原子算术运算
Using atomic arithmetic operations in CUDA Unified Memory multi-GPU or multi-processor
我正在尝试实现一个使用统一内存的 CUDA 程序。我有两个统一数组,有时它们需要自动更新。
下面的问题有针对单 GPU 环境的答案,但我不确定如何扩展问题中给出的答案以适应多 GPU 平台。
问题:cuda atomicAdd example fails to yield correct output
如果您需要此信息,我有 4 个 Tesla K20,它们都更新了必须自动完成的数组的一部分。
我将不胜感激 help/recommendations。
将评论总结为答案:
- 您可以使用
atomicAdd_system
执行这种地址 space 宽原子操作
- 但是,您只能在计算能力 6.x 或更新的设备(如果使用 Tegra 则为 7.2 或更新的设备)上执行此操作
- 具体来说,这意味着您必须针对正确的计算能力进行编译,例如
-arch=sm_60
或类似的
- 您在问题中说明您使用的是 Telsa K20 卡 -- 这些卡的计算能力为 3.5,不支持任何系统范围的原子功能。
一如既往,此信息在编程指南的 relevant section 中进行了简洁的总结。
我正在尝试实现一个使用统一内存的 CUDA 程序。我有两个统一数组,有时它们需要自动更新。
下面的问题有针对单 GPU 环境的答案,但我不确定如何扩展问题中给出的答案以适应多 GPU 平台。
问题:cuda atomicAdd example fails to yield correct output
如果您需要此信息,我有 4 个 Tesla K20,它们都更新了必须自动完成的数组的一部分。
我将不胜感激 help/recommendations。
将评论总结为答案:
- 您可以使用
atomicAdd_system
执行这种地址 space 宽原子操作
- 但是,您只能在计算能力 6.x 或更新的设备(如果使用 Tegra 则为 7.2 或更新的设备)上执行此操作
- 具体来说,这意味着您必须针对正确的计算能力进行编译,例如
-arch=sm_60
或类似的 - 您在问题中说明您使用的是 Telsa K20 卡 -- 这些卡的计算能力为 3.5,不支持任何系统范围的原子功能。
一如既往,此信息在编程指南的 relevant section 中进行了简洁的总结。