NVIDIA vs AMD:GPGPU性能


105

我想听听有编码经验的人。我自己,我只有NVIDIA的经验。

NVIDIA CUDA似乎比竞争对手更受欢迎。(仅在此论坛上计算问题标记,“ cuda”优于“ opencl” 3:1,“ nvidia”优于“ ati” 15:1,根本没有“ ati-stream”标记)。

另一方面,根据Wikipedia所述,ATI / AMD卡应具有更大的潜力,尤其是每美元。迄今为止,市场上最快的NVIDIA卡GeForce 580(500美元)的额定单精度TFlops为1.6。AMD Radeon 6970的价格为370美元,额定值为2.7TFlops。580在772 MHz下具有512个执行单元。6970在880 MHz下具有1536个执行单元。

AMD相对于NVIDIA的纸面优势有多现实,并且可能会在大多数GPGPU任务中实现?整数任务会怎样?


1
有趣的问题,但是我不确定这真的与编程有关吗?
Paul R

25
本质上,这是关于两种编程语言及其实现的实际方面的问题。所以我会说是的。
尤金·史密斯

2
我想知道根据C ++ AMP,对这个问题的相关答案如何变得如此。
德米特里·内斯特鲁克

2
有一次,我在研究为什么与AMD相比,在NVIDIA硬件上比特币挖掘如此缓慢的原因。产生的线程“在比特币挖掘中AMD Radeon 3x更快(SHA-256哈希性能)”包含您可能会感兴趣的信息。你的问题。forums.nvidia.com/...
罗杰·达尔

1
在我看来,这个问题要么会导致收集意见,要么取决于受访者熟悉的应用领域,所使用的硬件和软件等。否则,全面的答案将太宽泛而无法适合SO格式。投票关闭。
njuffa

Answers:


79

隐喻地说,与英伟达相比,ati具有良好的引擎。但是nvidia有更好的汽车:D

这主要是因为nvidia已投入了大量资源(金钱和人力)来开发科学计算所需的重要库(BLAS,FFT),然后在推广方面又做得很好。与ati(或OpenCL)相比,这可能是CUDA在此处主导标签的原因

至于通常在GPGPU任务中实现的优势,最终将取决于其他问题(取决于应用程序),例如内存传输带宽,良好的编译器甚至驱动程序。nvidia具有更成熟的编译器,Linux上更稳定的驱动程序(Linux,因为它在科学计算中的广泛使用)使平衡趋向于支持CUDA(至少目前如此)。


编辑 2013年1月12日

自从我发表这篇文章已经两年了,有时候它似乎仍然吸引着人们的眼球。所以我决定澄清一些事情

  • AMD已经加强了他们的游戏。他们现在同时具有BLAS和FFT库。OpenCL周围也涌现出许多第三方库。
  • 英特尔将Xeon Phi引入了野心,同时支持OpenMP和OpenCL。它还具有使用现有x86代码的能力。如评论中所述,目前仅限x86,没有SSE
  • NVIDIA和CUDA在可用库的范围内仍然具有优势。但是,他们可能没有像以前那样专注于OpenCL。

简而言之,OpenCL在过去两年中缩小了差距。该领域有新的参与者。但是CUDA仍然领先。


4
Xeon Phi仅具有有限的x86代码执行能力。没有MMX / SSE / SSE *。
osgx

@osgx谢谢。我应该提到这一点。
Pavan Yalamanchili 2013年

1
@osgx但它在DP FP中表现良好
Csaba Toth

4
Xeon Phi具有512位宽的寄存器和指令,是SSE支持的4倍。
zr。

59

我对CUDA与OpenCL并没有强烈的感觉;大概只是因为成为开放标准,OpenCL是一个长期的未来。

但是对于GPGPU(不是图形性能,而是GPGPU),我确实有很强烈的看法。首先,我要指出的是,在当前的大型集群500强列表中,NVIDIA将AMD 4系统领先于1,在gpgpu.org上,NVIDIA的搜索结果(论文,在线资源链接等)胜过AMD 6:1的结果。

这种差异的很大一部分是可用的在线信息量。查看NVIDIA CUDA专区与AMD的GPGPU开发人员中心。对于开发人员来说,那里的工作量甚至无法与之相比。在NVIDIA网站上,您会找到大量可能从事类似您的问题的人们的论文,并提供了代码。您会发现来自NVIDIA和其他地方的大量在线课程,以及非常有用的文档,例如开发人员的最佳实践指南等。免费开发工具(探查器,cuda-gdb等)的可用性在很大程度上使NVIDIA倾斜。

(编辑器:本段中的信息不再准确。)并且某些区别还在于硬件。AMD的显卡在峰值触发器方面有更好的规格,但是要获得很大一部分,不仅必须将问题分解到许多完全独立的流处理器上,而且还需要对每个工作项目进行矢量化处理。鉴于GPGPUing的代码足够困难,因此额外的架构复杂度足以创建或破坏某些项目。

所有这些的结果是NVIDIA用户社区不断增长。在我所知道的三到四个小组中,他们正在考虑构建GPU集群,但他们中没有一个在认真考虑AMD卡。这将意味着还有更多的团体在NVIDIA方面撰写论文,提供代码等。

我不是NVIDIA的先驱。我希望不是这样,并且有两个(或更多!)同样引人注目的GPGPU平台。竞争很好。也许AMD会很快加强其游戏-即将推出的融合产品看起来非常引人注目。但是,在向某人提供有关今天要购买哪些卡以及在哪里花时间投入精力的建议时,我不能良心地说两个开发环境都一样好。

编辑添加:我想以上在回答原始问题方面有点省略,所以让我更明确一点。在理想的世界中,在无限的可用时间内,您可以从硬件获得的性能仅取决于基础硬件和编程语言的功能。但实际上,您在固定的投资时间内可获得的性能很大程度上也取决于开发工具,现有的社区代码库(例如,公开可用的库等)。这些考虑都强烈指向NVIDIA。

(编辑器:本段中的信息不再准确。)就硬件而言,AMD卡中SIMD单元内矢量化的要求也使纸张性能比NVIDIA硬件更难。


2
我正在使用ATI Stream学习OpenCL,请欣赏有关矢量化的说明:)虽然我意识到NVIDIA的好处是……相当大,但我只是支持AMD / ATI和公司本身,所以我有时间花在制作库上:DI认为OpenCL的性能会在未来几年肯定会增加,我也希望我的代码也能为此做好准备。
加雷特·克拉伯恩(Garet Claborn)2011年

很高兴看到您对AMD的GCN和OpenCL 1.2(现在(2013年))的看法已经成为过去。有净差额吗?
danno 2013年

3
@乔纳森(Jonathan),距离您撰写这篇出色的文章已有3年了。我想知道您是否认为AMD平台,社区和生态系统是否缩小了差距。
basilikode 2014年

对于视频或GPGPU卡而言,与其说是处理器,不如说是处理器,我一直是英特尔的粉丝,而不是AMD,但是最近AMD即将发布新的ZEN处理器,其燃烧痕迹测试显示默认设置它可与英特尔的顶级i7处理器媲美。他们的新技术应该能够更好地发挥作用,因为它可以识别指令模式。因此,我认为他们的大部分时间和精力都花在了这款新处理器上,而不是他们的GPU技术上。但是,一旦他们的Zen处理器发布,我相信英特尔将会有更好的表现。
弗朗西斯·库格勒

17

AMD和NVIDIA体系结构之间的主要区别在于,AMD针对在编译时可以确定算法行为的问题进行了优化,而NVIDIA针对仅在运行时确定算法行为的问题进行了优化。

AMD具有相对简单的架构,允许他们在ALU上花费更多的晶体管。只要问题可以在编译时完全定义并以某种静态或线性方式成功映射到体系结构,AMD就有可能比NVIDIA更快地运行算法。

另一方面,NVIDIA的编译器在编译时进行的分析较少。取而代之的是,NVIDIA具有更高级的体系结构,在该体系结构上,他们在逻辑上花费了更多的晶体管,从而能够处理仅在运行时出现的算法的动态行为。

我相信大多数使用GPU的超级计算机都与NVIDIA一起使用的事实是,科学家对进行运算感兴趣的问题类型通常比AMD更好地映射到NVIDIA的体系结构。


2
借助GCN(Graphics Core Next),AMD已从SIMD和VLIW转向更类似于NVIDIA的架构(SIMT和更灵活的指令调度)。
Aleksandr Dubinsky

1
@AleksandrDubinsky:借助Compute Capability 3.0的硬件,NVIDIA通过取消动态计划而更接近AMD。我认为他们的架构将融合在中间的某个位置。
Roger Dahl 2013年

1
我过去曾听说过,但找不到任何具体信息。在哪里可以找到更多详细信息?
Yakov Galka

7

我已经在OpenCL中完成了一些迭代编码。而且在NVIDIA和ATI中运行它的结果几乎相同。相同速度的同等价值($)卡。

在这两种情况下,速度都是CPU的10到30倍。

我没有测试CUDA,但我怀疑它能否神奇地解决我的随机内存获取问题。如今,CUDA和OpenCL大致相同,而且我认为OpenCL的未来比CUDA还要多。主要原因是英特尔正在为其处理器启动带有OpenCL的驱动程序。这将是未来的巨大进步(在CPU中运行16、32或64个OpenCL线程的速度非常快,并且非常容易移植到GPU)。


7

在为Fermi和Kepler使用CUDA几年之后,花了一些时间在GCL卡上使用OpenCL,我仍然更喜欢CUDA作为编程语言,如果可以选择的话,我会选择AMD硬件和CUDA。

NVIDIA和AMD(OpenCL)的主要区别:

对于AMD:

  • 即使使用Maxwell,NVidia仍然具有更长的命令等待时间,并且经过简单的优化后,复杂的算法在AMD上(假设相同的理论Tflops)在AMD上可能要快10倍。开普勒VS GCN的差距高达60%。从这种意义上说,为NVidia优化复杂的内核比较困难。

  • 便宜的卡。

  • OpenCL是开放标准,其他供应商也可以使用。

对于Nvidia:

  • 具有适用于可靠的高服务器负载的Tesla系列硬件。

  • 新的Maxwell更加节能。

  • 编译器和工具更加先进。AMD仍然无法实现maxregcout参数,因此您可以轻松地控制各种硬件上的占用率,并且它们的编译器对每个版本都会改​​变的最佳代码有很多随机的想法,因此您可能需要每半修改一次旧代码一年,因为它突然变慢了40%。

在这一点上,如果您的目标是GPGPU,则CUDA是唯一的选择,因为带有AMD的opencL尚未准备好用于服务器场,并且由于编译器似乎总是处于“ beta”状态,因此很难为AMD编写高效的代码。 。


谢谢您的新鲜回答。您能否澄清“可能快10个”的单位?百分?
Aleksandr Dubinsky

个人观点:有时ATI卡在某种意义上要比Nvidia更好,但缺乏驱动程序更新支持,随着时间的流逝,AMD完全收购了ATI,而Nvidia仍然是同一家公司。此外,Nvidia仍然具有更好的更新驱动程序支持。这更多地位于卡的用户端,以提高应用程序的性能。不要误会我的意思,这两种技术都有其自身的优势,并且都具有低端廉价卡以及更昂贵的高端卡。随着时间的流逝,我从ATI转到了Nvidia。至于开发,Nvidia具有更好的功能集和可编程的API或库。
弗朗西斯·库格勒16/12/21

6

我是GPGPU的新手,但我有一些科学计算经验(物理学博士学位)。我正在组建一个研究小组,我想使用GPGPU进行计算。我必须在可用平台之间进行选择。我选择Nvidia的原因有两个:尽管ATI在纸上可能会更快,但Nvidia拥有更成熟的平台和更多文档,因此有可能接近该平台的最高性能。

Nvidia也有一个学术研究支持计划,可以申请支持,我刚刚收到一张TESLA 2075卡,对此我感到非常高兴。我不知道ATI还是Intel这样支持研究。

我听说过OpenCL是一次尝试做所有事情,的确,您的OpenCL代码将具有更高的可移植性,但它也可能无法利用这两个平台的全部功能。我宁愿多学一点,并编写可以更好地利用资源的程序。凭借今年刚发布的TESLA K10,Nvidia的排名处于4.5 TeraFlops范围内,因此尚不清楚Nvidia是否落后...但是,英特尔MIC可能被证明是真正的竞争对手,尤其是如果他们成功将GPGPU单元移至主板。但是现在,我选择了Nvidia。


看看@AndrewCooke的答案,以对NVidia的(缺乏)支持发表意见。
Aleksandr Dubinsky

5

我在评估OpenCL浮点性能方面的经验倾向于使用NVIDIA卡。我在NVIDIA卡(从8600M GT到GTX 460)上使用了几个浮点基准测试。在这些基准上,NVIDIA卡始终达到理论单偏磁峰值的一半左右。
我使用过的ATI卡很少能达到单精度峰值的三分之一以上。请注意,我在ATI方面的经验存在偏差。我只能使用一张5000系列卡。我的经验主要是使用HD 4000系列卡,但从未得到很好的支持。对HD 5000系列卡的支持要好得多。


1

我想补充一下辩论。对于我们从事软件业务的公司,我们可以牺牲原始的单精度性能来提高生产率,但是即使我不必牺牲,因为,正如已经指出的那样,使用OpenCL在ATI硬件上无法获得尽可能多的性能。如果您在NVIDIA的硬件上用CUDA编写。

是的,随着PGI发布用于CUDA的x86编译器,没有任何充分的理由花费更多的时间和资源来编写OpenCL了:)

PS:我的观点可能有偏见,因为我们几乎所有的GPGPU工作都在CUDA上进行。我们有一个图像处理/计算机视觉库CUVI(用于视觉和成像的CUDA),可加速CUDA上的某些核心IP / CV功能。


0

到目前为止,Cuda肯定比OpenCL受欢迎,因为它比OpenCL早3或4年发布。自从OpenCL发布以来,Nvidia对该语言的贡献不大,因为它们专注于CUDA。他们甚至还没有发布任何驱动程序的openCL 1.2版本。

就异构计算以及手持设备而言,OpenCl在不久的将来必将获得更多的普及。截至目前,OpenCL的最大贡献者是AMD,在其网站上可见。


-2

在我的经验中:

  • 如果要获得最佳的绝对性能,则需要查看谁在使用最新的硬件迭代,并使用其堆栈(包括最新的/ beta版本)。

  • 如果您想要最佳性能来赚钱,那么您将重点放在游戏玩家卡上,而不是“专业”卡上,针对不同平台的灵活性倾向于使用opencl。

  • 特别是如果您刚入门,则cuda趋向于更加完善,并拥有更多的工具和库。

最终,我个人的看法是,在nvidia的“支持”之后感到震惊(我们得到了死了的tesla,几个月来一直没有变化,而一个客户在等待):灵活地使用opencl进行交付值得冒性能略低的风险NVIDIA在发布周期中处于领先地位。


来自nvidia的“支持”的类似经验:崩溃libcuda.so(仅在OpenCL和CUDA中有效),并且它们没有任何响应。
eudoxos 2012年

1
对于我们的经销商,更换旧的特斯拉没有问题,通常在发送有故障的特斯拉之前我们会收到新的硬件,因此我想这不是NVidia的问题,而是您的经销商的问题。
Gaetano Mendola

我以为特斯拉超级可靠。什么营销迷糊。
Aleksandr Dubinsky

OpenCL并非性能可移植的,因此不可能每次一家公司发布新旗舰产品时都希望出货(而无需维护两个优化的代码分支)。另外,NVIDIA的OpenCL支持落后于几个版本,我怀疑维护不佳。
Aleksandr Dubinsky
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.