0

我在 opencl 中为我的应用程序使用 AMD Radeon Pro duo。它有一个双斐济 GPU,我如何配置 Cross Fire 以使它们作为一个设备工作。我在 opencl 中使用 clgetdeviceinfo 来检查设备计算单元,但每个斐济 GPU 显示 64。

我在两个 GPU 中共有 128 个计算单元,如何使用 Crossfire 来使用它们。

4

1 回答 1

2

OpenCL 有设备裂变,但没有设备融合。设备可以共享内存以提高效率,但不能加入着色器。

还有一些功能还不能在两个 GPU 之间同步:

  • 内核中的原子函数
  • 预取命令(哪些 GPU 全局缓存?)
  • clEnqueueAcquireGLObject(哪个 GPU 的缓冲区?)
  • clCreateBuffer(它选择哪个设备内存?我们不能选择。)
  • clEnqueueTask(这个任务去哪里了?)

您应该将编码工作分成两部分并在两个 GPU 上运行。如果驾驶员遇到问题,这甚至可能需要禁用交叉火力。这不应该比编写 GPGPU 编码器更难。

但是您可能只需要将数据复制到其中一个设备,然后将一半数据从该缓冲区复制到其他 GPU,而不是通过 pci-e 两次。GPU 间的连接必须比 pci-e 快。

于 2017-04-11T09:02:45.447 回答