5

与一般的单处理器内核相比,CUDA 或 OpenCL 代码上的算法运行速度能快多少?(考虑到算法是针对 CPU 和 GPU 目标编写和优化的)。

我知道这取决于显卡和 CPU,但是说,NVIDIA 最快的 GPU 和(单核)英特尔 i7 处理器之一?

而且我知道这也取决于算法的类型。

我不需要一个严格的答案,但有经验的例子,例如:对于使用双精度浮点和每像素 10 次操作的图像处理算法,前 5 分钟,现在使用此硬件在 x 秒内运行。

4

7 回答 7

10

你的问题太笼统了,很难回答。此外,只有一小部分算法(处理没有太多共享状态的算法)在 GPU 上是可行的。

但我确实想敦促您对索赔持批评态度。我从事图像处理,并阅读了很多关于该主题的文章,但在 GPU 案例中,将输入数据上传到 GPU 并将结果下载回主存的时间通常包括在因子的计算中.

虽然在少数情况下这无关紧要(两者都很小,或者存在进一步减小结果大小的第二阶段计算),但通常确实必须传输结果和初始数据。

我已经看到这将声称的加号变成了负号,因为仅上传/下载时间就比主 CPU 进行计算所需的时间长。

几乎相同的事情适用于组合不同 GPU 卡的结果。

更新较新的 GPU 似乎能够使用 ping-pong 缓冲区同时上传/下载和计算。但彻底检查边境状况的建议仍然有效。那里有很多旋转。

于 2010-11-24T15:12:18.920 回答
1

我认为这个OpenCL视频介绍在第一集或第二集中很好地回答了你的问题(我不记得了)。我以为是第一集的结尾...

一般来说,这取决于您如何“并行化”问题。问题大小本身也是一个因素,因为将数据复制到显卡需要时间。

于 2010-11-24T15:06:50.883 回答
1

您的问题通常很难回答;只是有许多不同的变量,很难给出准确或公平的答案。

值得注意的是,您正在同时比较 1) 算法的选择 2) 硬件的相对性能 3) 编译器优化能力 4) 实现语言的选择和 5) 算法实现的效率......

请注意,例如,不同的算法在 GPU 与 CPU 上可能更可取;进出 GPU 的数据传输也需要计入时序。

AMD 对在 CPU 和 GPU 上执行的 OpenCL 代码的 OpenCL 性能进行了案例研究(实际上有几个)。是稀疏矩阵向量乘法的性能结果。

于 2010-11-24T15:10:27.997 回答
1

这在很大程度上取决于算法以及实现的效率。

总的来说,可以说 GPU 在计算方面比 CPU 更好。因此,上限是将高端 GPU 的理论 GFlops 评级除以高端 CPU。您可以对理论内存带宽进行类似的计算。

例如,GTX580 为 1581.1 GFLOPS,而 i7 980XE 为 107.55 GFLOPS。请注意,GTX580 的评级是针对单精度的。我相信您需要将非特斯拉费米级的分数减少 4 倍才能达到双精度等级。因此,在这种情况下,您可能期望大约 4 倍。

关于为什么你可能会做得更好的警告(或看到声称加速更大的结果):

  1. 一旦数据在卡上,GPU 比 CPU 具有更好的内存带宽。有时,内存绑定算法可以在 GPU 上表现良好。

  2. 巧妙地使用缓存(纹理内存等),可以让您做得比宣传的带宽更好。

  3. 就像马可说的那样,转会时间没有包括在内。我个人总是在我的工作中包含这样的时间,因此我发现我所见过的最大加速是在所有数据都适合 GPU 的迭代算法中(我个人在中端 CPU 到中端 GPU 上获得了超过 300 倍) )。

  4. 苹果与橙子的比较。将高端 GPU 与低端 CPU 进行比较本质上是不公平的。反驳是高端 CPU 的成本远高于高端 GPU。一旦你进行 GFlops/$ 或 GFlops/Watt 比较,它看起来对 GPU 更有利。

于 2011-02-28T15:50:50.563 回答
1
__kernel void vecAdd(__global float* results )
{
   int id = get_global_id(0);
}

这个内核代码可以在 10 毫秒内在新的 60 美元 R7-240 GPU 上生成 16M 线程。

这相当于在 10 纳秒内创建 16 个线程或上下文切换。什么是 140 美元的 FX-8150 8 核 CPU 时序?它是每个核心 50 纳秒内的 1 个线程。

在这个内核中添加的每条指令都是 gpu 的胜利,直到它进行分支。

于 2016-09-15T16:34:29.373 回答
0

我见过从 2 倍到 400 倍的数字。我也知道中档 GPU 在双精度计算方面无法与高端 CPU 竞争——8 核 Xeon 上的 MKL 将比 300 美元 GPU 上的 CULA 或 CUBLAS 更快。

OpenCL 比 CUDA 慢得多。

于 2010-11-24T15:04:51.920 回答
0

来自橡树岭国家实验室和乔治亚理工学院的名为 SHOC(可扩展异构计算)的新基准套件具有许多重要内核的 OpenCL 和 CUDA 实现。您可以从http://bit.ly/shocmarx下载该套件。享受。

于 2010-11-24T20:52:40.463 回答