【发布时间】:2016-03-31 01:05:29
【问题描述】:
我有一个刚刚在 ArrayFire 中实现的光束传播算法。我在 GTX Titan 卡上使用了 OpenCL 后端。使用 OpenCL,它以每分钟大约 25,000 步的速度运行。然后我将它切换到 CUDA 后端,性能提高到每分钟大约 50,000 步。这有点令人惊讶,但我认为它可能使用了 OpenCL 中没有的一些更高级的功能。然后我使用我的 GTX 960 卡进行了相同的测试。它使用 OpenCL 以每分钟 22,000 步的速度运行,使用 CUDA 以每分钟 23,000 步的速度运行。这很令人困惑,因为我预计它会遵循与泰坦相同的模式。此外,我认为我在使用 GT 730M 的笔记本电脑上看到了 2 倍的性能变化。我听说 nvidia 在某些卡上减慢了 OpenCL 的速度。他们会为 700 系列这样做吗?
【问题讨论】:
-
NVIDIA 在某些显卡上不会降低 OpenCL 的速度。
-
这个方程的变量太多了。这里需要显示一些代码。需要给出正在使用的arrayfire和cuda的版本。
-
还要从问题的末尾删除推测性问题。根据我们的经验,在其他条件相同的情况下,opencl 和 cuda 在 nvidia GPU(对于我们实现的内核)上的性能非常相似。差异来自 clBLAS 和 clFFT 等核心库,与 cuBLAS 和 cuFFT 不同,它们并未针对 NVIDIA GPUS 进行优化。
-
也许就是这样,因为每一步都需要一个 fft 和一个逆 fft。
-
@chasep255 如果您不将问题更改为更少基于意见和更多技术性,我将不得不投票结束该问题。请从您的问题中删除任何基于意见的问题。
标签: cuda opencl nvidia arrayfire