1

我正在尝试实现一个使用统一内存的 CUDA 程序。我有两个统一的数组,有时它们需要自动更新。

下面的问题有一个针对单个 GPU 环境的答案,但我不确定如何扩展问题中给出的答案以适应多 GPU 平台。

问题:cuda atomicAdd 示例无法产生正确的输出

如果您需要此信息,我有 4 个 Tesla K20,并且所有这些都更新了必须以原子方式完成的阵列的一部分。

我将不胜感激任何帮助/建议。

4

1 回答 1

3

将评论总结为答案:

  • 您可以使用执行这种地址空间范围的原子操作atomicAdd_system
  • 但是,您只能在计算能力 6.x 或更新的设备上执行此操作(如果使用 Tegra,则为 7.2 或更新的设备)
  • 具体来说,这意味着您必须为正确的计算能力进行编译,例如-arch=sm_60或类似的
  • 您在问题中声明您使用的是 Telsa K20 卡——这些是计算能力 3.5,不支持任何系统范围的原子功能。

与往常一样,这些信息在编程指南的相关部分中得到了简洁的总结。

于 2020-06-09T12:30:18.813 回答