NVIDIA与AMD:GPGPU性能

Eug*_*ith 103 cuda gpgpu nvidia ati opencl

我想听听有两种编码经验的人的意见.我自己,我只有NVIDIA的经验.

NVIDIA CUDA似乎比竞争对手更受欢迎.(只计算这个论坛上的问题标签,'cuda'优于'opencl'3:1,'nvidia'优于'ati '15:1,并且根本没有'ati-stream'标签.

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

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

Pav*_*ili 79

隐喻地说ati与nvidia相比具有良好的引擎.但是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代码的能力.正如评论中所述,目前没有SSE的x86有限
  • NVIDIA和CUDA仍然具有可用库范围的优势.然而,他们可能没有像以前那样关注OpenCL.

总之,OpenCL在过去两年缩小了差距.该领域有新的参与者.但是CUDA仍然领先一步.

  • Xeon Phi只有*限制*x86代码执行能力.没有MMX/SSE/SSE*. (4认同)
  • Xeon Phi具有512位宽的寄存器和指令,是SSE支持的4倍. (4认同)

Jon*_*rsi 59

我对CUDA与OpenCL没有任何强烈的感情; 据推测,OpenCL是一个长期的未来,仅仅是一个开放的标准.

但是目前的NVIDIA对抗GPGPU的ATI卡(不是图形性能,而是GPGPU),我确实对此有强烈的看法.为了引领这一点,我将指出,在目前的500大集群列表中,NVIDIA将AMD 4系统引入1,并在gpgpu.org上为NVIDIA提供搜索结果(论文,在线资源链接等)超过AMD 6:1的结果.

这种差异的很大一部分是可用的在线信息量.查看NVIDIA CUDA Zone与AMD的GPGPU Developer Central.开发人员启动的东西数量甚至没有接近比较.在NVIDIA网站上,您可以找到大量的论文 - 并提供代码 - 来自可能正在处理像您这样的问题的人.您可以在NVIDIA和其他地方找到大量的在线课程,以及非常有用的文档,如开发人员的最佳实践指南等.免费开发工具的可用性 - 分析器,cuda-gdb等 - 绝大多数都倾向于NVIDIA的方式.

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

所有这一切的结果是NVIDIA用户社区继续增长.在我认为构建GPU集群的三四组中,没有人认真考虑AMD卡.这意味着更多的团体在NVIDIA方面撰写论文,贡献代码等.

我不是NVIDIA的先锋; 我希望不是这样,并且有两个(或更多!)同样引人注目的GPGPU平台.竞争很好.也许AMD将很快加强其游戏 - 即将推出的融合产品看起来非常引人注目.但是,在向某人提供有关今天购买哪些卡以及在何时花费时间进行努力的建议时,我无法保证良好的良好态度.

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

(编辑:本段中的信息不再准确.)在硬件方面,AMD卡中SIMD单元内矢量化的要求也使得纸张性能比使用NVIDIA硬件更难实现.

  • @Jonathan现在已经3年了,你写了这篇伟大的帖子.我想知道在您看来AMD平台,社区和生态系统是否已经缩小了差距. (3认同)
  • 我正在使用ATI Stream学习OpenCL,感谢有关矢量化的说明:)虽然我意识到NVIDIA的好处是......非常大,我只是支持AMD/ATI和公司本身,我有时间花在制作库:DI认为OpenCL性能将会肯定会在未来几年内增加,我希望我的代码也能为此做好准备. (2认同)

Rog*_*ahl 17

AMD和NVIDIA架构的主要区别在于AMD针对在编译时可以确定算法行为的问题进行了优化,而NVIDIA针对算法行为只能在运行时确定的问题进行了优化.

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

另一方面,NVIDIA的编译器在编译时进行的分析较少.相反,NVIDIA拥有更先进的架构,他们在逻辑上花费了更多的晶体管,能够处理仅在运行时出现的算法的动态行为.

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

  • 通过GCN(Graphics Core Next),AMD已经从SIMD和VLIW转向更类似于NVIDIA的架构(SIMT和更灵活的指令调度). (2认同)

Dar*_*ros 7

我在OpenCL中做了一些迭代编码.在NVIDIA和ATI中运行它的结果几乎是一样的.在相同的价值($)卡附近相同的速度.

在这两种情况下,与CPU相比,速度约为10x-30x.

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


小智 7

在为Fermi和Kepler进行了几年的CUDA之后花了一些时间用于GCN卡,我仍然更喜欢CUDA作为一种编程语言,如果我有一个选项,我会选择带有CUDA的AMD硬件.

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

对于AMD:

  • 即使使用Maxwell,NVidia仍然具有更长的命令延迟,并且在对两者进行简单优化之后,复杂的算法在AMD上可能会快10倍(假设理论Tflops相同).Kepler VS GCN的差距高达60%.从这个意义上说,为NVidia优化复杂内核更加困难.

  • 便宜的卡.

  • OpenCL是开放标准,可与其他供应商联系.

对于Nvidia:

  • Tesla系列硬件是否适合可靠的高服务器负载.

  • 新麦克斯韦的功率效率更高.

  • 编译器和工具更先进.AMD仍然无法实现maxregcout参数,因此您可以轻松控制各种硬件的占用率,并且他们的编译器有很多随机的想法,即每个版本的最佳代码是什么,因此您可能需要每半年重新访问旧代码一年因为它突然变得慢了40%.

此时,如果GPGPU是你的目标,那么CUDA是唯一的选择,因为带有AMD的opencL还没有为服务器群做好准备,并且由于编译器似乎总是"处于测试阶段"而为AMD编写高效代码要困难得多.


小智 6

我是GPGPU的新手,但我在科学计算方面有一些经验(物理学博士).我正在组建一个研究小组,我想要使用GPGPU进行计算.我不得不在可用的平台之间做出选择.我决定使用Nvidia,原因有两个:虽然ATI可能在纸面上更快,但Nvidia拥有更成熟的平台和更多的文档,因此可以更接近这个平台的最高性能.

Nvidia还有一个学术研究支持计划,一个可以申请支持,我刚收到一张TESLA 2075卡,我很高兴.我不知道ATI或英特尔是否支持这种方式的研究.

我听说OpenCL的原因是它试图立刻成为一切,确实你的OpenCL代码更具可移植性,但它也可能无法利用任何一个平台的全部功能.我宁愿多学习一下,编写更好地利用资源的程序.今年刚刚推出的TESLA K10 Nvidia处于4.5 TeraFlops范围内,因此目前尚不清楚Nvidia是否落后......但是英特尔MIC可能会成为真正的竞争对手,特别是如果他们成功将GPGPU单元转移到主板.但就目前而言,我选择了Nvidia.


vir*_*nux 5

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