首页 文章

NVIDIA与AMD:GPGPU性能

提问于
浏览
101

我想听听有两种编码经验的人的意见 . 我自己,我只有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任务中实现?整数任务会发生什么?

10 回答

  • 6

    隐喻地说ati与nvidia相比具有良好的引擎 . 但是nvidia有一辆更好的车:D

    这主要是因为nvidia投入了大量的资源(资金和人力)来开发科学计算所需的重要图书馆(BLAS,FFT),然后再次推广它 . 与ati(或OpenCL)相比,这可能是CUDA在这里主导标签的原因

    至于通常在GPGPU任务中实现的优势,它最终将取决于其他问题(取决于应用程序),例如内存传输带宽,良好的编译器甚至驱动程序 . nvidia有一个更成熟的编译器,一个更稳定的Linux驱动程序(Linux因为,它在科学计算中广泛使用),倾向于 balancer 有利于CUDA(至少现在) .


    EDIT 2013年1月12日

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

    • AMD加强了他们的比赛 . 他们现在有BLAS和FFT库 . 许多第三方图书馆也在OpenCL周围出现 .

    • 英特尔已经将Xeon Phi引入野外,支持OpenMP和OpenCL . 它还具有使用现有x86代码的能力 . 正如评论中所述,目前没有SSE的x86有限

    • NVIDIA和CUDA仍然具有可用库范围的优势 . 然而,他们可能没有像以前那样关注OpenCL .

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

  • 0

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

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

    这种差异的很大一部分是可用的在线信息量 . 查看NVIDIA CUDA Zone与AMD的GPGPU Developer Central . 开发人员在那里开始的东西数量并没有找到大量的论文 - 并且提供了代码 - 来自可能正在解决像你这样的问题的人 . 你_1147280_最佳实践指南等免费开发工具 - 剖析器,cuda-gdb等 - 的可用性 - 压倒性地倾向于NVIDIA的方式 .

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

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

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

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

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

  • -2

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

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

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

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

  • 7

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

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

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

  • 78

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

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

    对于AMD:

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

    • 便宜的卡片 .

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

    对于Nvidia:

    • 特斯拉硬件系列适用于可靠的高服务器负载 .

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

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

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

  • 1

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

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

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

  • 17

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

  • 59

    我想补充一下辩论 . 对于我们的软件业务,我们可以将原始的单精度性能降低到 生产环境 率,但即使我不必妥协,因为正如已经指出的那样,使用OpenCL无法在ATI的硬件上实现尽可能多的性能如果你在NVIDIA的硬件上用CUDA写的话 .

    是的,随着PGI宣布推出针对CUDA的x86编译器,没有任何理由在OpenCL上花费更多的时间和资源写作:)

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

  • 5

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

    就异构计算以及手持设备而言,OpenCl肯定会在不久的将来更受欢迎 . 截至目前,OpenCL的最大贡献者是AMD,它在他们的网站上可见 .

  • 7

    在我的经验中:

    • 如果你想要最好的绝对性能,那么你需要看看谁在最新的硬件迭代,并使用他们的堆栈(包括最新/ beta版本) .

    • 如果你想要最好的性能,你将瞄准玩家卡而不是“专业”卡,目标不同平台的灵活性有利于opencl .

    • 如果你刚开始,cuda往往更加精致,拥有更多的工具和库 .

    最后,我个人认为,来自nvidia的“支持”令人震惊(我们得到了一个死亡的特斯拉,并且几个月没有改变,而客户正在等待):使用opencl跳船的灵活性值得略微降低性能的风险当nvidia在发布周期中领先时 .

相关问题