Cuda NVIDIA vs AMD:GPGPU性能

Cuda NVIDIA vs AMD:GPGPU性能,cuda,opencl,gpgpu,nvidia,ati,Cuda,Opencl,Gpgpu,Nvidia,Ati,我想听听有这两方面编码经验的人的意见。就我自己而言,我只有与英伟达的经验 英伟达CUDA似乎比竞争对手更受欢迎。(仅计算本论坛上的问题标签,“cuda”优于“opencl”3:1,“nvidia”优于“ati”15:1,而且“ati stream”根本没有标签) 另一方面,根据维基百科,ATI/AMD卡应该有更多的潜力,特别是每美元。目前市场上速度最快的NVIDIA卡GeForce 580(500美元),其单精度TFlops评级为1.6。AMD Radeon 6970的售价为370美元,评级为2

我想听听有这两方面编码经验的人的意见。就我自己而言,我只有与英伟达的经验

英伟达CUDA似乎比竞争对手更受欢迎。(仅计算本论坛上的问题标签,“cuda”优于“opencl”3:1,“nvidia”优于“ati”15:1,而且“ati stream”根本没有标签)

另一方面,根据维基百科,ATI/AMD卡应该有更多的潜力,特别是每美元。目前市场上速度最快的NVIDIA卡GeForce 580(500美元),其单精度TFlops评级为1.6。AMD Radeon 6970的售价为370美元,评级为2.7 TFlops。580具有512个772 MHz的执行单元。6970在880 MHz时有1536个执行单元


AMD相对于NVIDIA的纸质优势有多现实?它是否有可能在大多数GPGPU任务中实现?整数任务会发生什么情况

比喻而言,与nvidia相比,ati有一个很好的引擎。 但是英伟达有一辆更好的车:D

这主要是因为nvidia投入了大量资源(资金和人力)来开发科学计算所需的重要图书馆(BLAS、FFT),然后又在推广方面做得很好。这可能是CUDA与ati(或OpenCL)相比在这里占据主导地位的原因

一般来说,GPGPU任务实现的优势取决于其他问题(取决于应用程序),如内存传输带宽、良好的编译器甚至可能是驱动程序。nvidia拥有更成熟的编译器,在linux上有更稳定的驱动程序(linux是因为它在科学计算中被广泛使用),这使天平向CUDA倾斜(至少目前是这样)


编辑2013年1月12日

我写这篇文章已经两年了,有时它似乎仍能吸引人们的观点。所以我决定澄清一些事情

  • AMD已经加强了他们的游戏。他们现在有BLAS和FFT库。许多第三方库也出现在OpenCL周围
  • 英特尔已经将至强Phi引入到支持OpenMP和OpenCL的领域。它还能够使用现有的x86代码。如评论中所述,目前没有苏格兰和南方能源公司的x86有限公司
  • NVIDIA和CUDA在可用库的范围内仍然具有优势。然而,他们可能不像以前那样关注OpenCL

简言之,OpenCL在过去两年中已经缩小了这一差距。这个领域有新的选手。但是CUDA仍然有点领先。我在评估OpenCL浮点性能方面的经验倾向于使用NVIDIA卡。我已经在NVIDIA卡上使用了一些浮点基准测试,范围从8600MGT到GTX460。NVIDIA卡在这些基准上始终达到理论单峰值的一半左右。
我使用过的ATI卡很少能达到单精度峰值的三分之一以上。
请注意,我对ATI的经验是有偏差的;我只能使用一张5000系列卡。我的经验主要是HD 4000系列卡,这些卡从未得到很好的支持。对HD 5000系列卡的支持要好得多。

我对CUDA和OpenCL没有任何强烈的感觉;据推测,OpenCL是一个长期的未来,仅仅是因为它是一个开放的标准

但今天的NVIDIA vs ATI卡的GPGPGPU(不是图形性能,而是GPGPU),我有强烈的意见。引入这一点,我会指出,在Nvidia带领AMD 4系统到1,并且,NVIDIA的搜索结果(论文,链接到在线资源等)超过AMD 6:1的结果。

这种差异的很大一部分是可用的在线信息量。看看英伟达和AMD的。对于刚起步的开发人员来说,这些东西的数量甚至无法进行比较。在NVIDIAs的网站上,你会发现可能有人在处理像你这样的问题,你会发现成吨的论文和贡献的代码。你会发现NVIDIA和其他地方的大量在线课程,以及非常有用的文档,如开发者最佳实践指南等。免费的devel工具(profiler、cuda gdb等)的可用性极大地影响了NVIDIAs的发展

(编者:这一段中的信息不再准确。)而其中的一些差异也是硬件造成的。AMDs卡在峰值触发器方面有更好的规格,但要获得其中很大一部分,您不仅需要将问题分解到许多完全独立的流处理器上,还需要对每个工作项进行矢量化。考虑到gpgpuingones代码已经足够难了,额外的体系结构复杂性足以决定某些项目的成败

这一切的结果是英伟达用户社区持续增长。据我所知,有三四个小组正在考虑构建GPU集群,但他们中没有一个认真考虑AMD卡。这意味着英伟达方面还有更多的团体在撰写论文、贡献代码等。

我不是一个英伟达人;我希望不是这样,并且有两个(或更多!)同样引人注目的GPGPU平台。竞争是好的。也许AMD很快就会升级它的游戏,而且即将推出的fusion产品看起来非常引人注目。但是,在给某人提供建议,告诉他们今天应该买哪张卡,以及现在应该把时间花在哪里,我不能凭良心说这两种开发环境都同样好

编辑添加:我想就回答原始问题而言,上面的内容有点椭圆,所以让我把它说得更清楚一点。在一个拥有无限时间的理想世界中,您可以从一块硬件获得的性能仅取决于底层硬件和编程语言的能力;但在现实中,你可以在固定的时间内获得的绩效