我希望听到有这两种编程经验的人的意见。就我自己而言,我只有使用NVIDIA的经验。
NVIDIA CUDA似乎比竞争对手更受欢迎。(在这个论坛上统计一下问题标签,'cuda‘优于'opencl’3:1,'nvidia‘优于'ati’15:1,根本没有'ati-stream‘的标签)。
另一方面,根据维基百科的说法,ATI/AMD卡应该有更多的潜力,特别是每美元。到目前为止,市场上最快的NVIDIA卡,GeForce 580 (500美元),额定为1.6单精度TFlops。AMD Radeon6970可以有370美元,它的额定值为2.7 TFlops。580在772 MHz下有512个执行单元。6970在880 MHz时有1536个执行单元。
AMD相对于NVIDIA的论文优势有多现实,它可能在大多数GPGPU任务中实现吗?整型任务会发生什么?
发布于 2011-01-10 01:23:40
打个比方说,与nvidia相比,ati有一个很好的引擎。但nvidia有更好的车:D
这主要是因为nvidia投入了大量的资源(资金和人力)来开发科学计算(BLAS,FFT)所需的重要库,然后又很好地推广了它。这可能是CUDA与ati (或OpenCL)相比在这里占据主导地位的原因
至于通常在GPGPU任务中实现的优势,最终将取决于其他问题(取决于应用程序),例如,内存传输带宽,良好的编译器,甚至可能是驱动程序。nvidia有一个更成熟的编译器,一个在linux上更稳定的驱动程序(linux,因为它在科学计算中广泛使用),使天平倾向于CUDA (至少现在是这样)。
编辑 2013年1月12日
我写这篇文章已经两年了,但它有时似乎仍然吸引着人们的注意。所以我决定澄清几件事
简而言之,OpenCL在过去两年缩小了差距。在这一领域有了新的球员。但CUDA仍处于领先地位。
发布于 2011-01-10 07:36:34
我对CUDA和OpenCL没有什么强烈的感觉;OpenCL可能是一个长期的未来,仅仅因为它是一个开放的标准。
但目前的NVIDIA vs ATI显卡的GPGPU (不是图形性能,但GPGPU),我确实有强烈的意见。为了引出这一点,我要指出的是,在current Top 500 list of big clusters上,NVIDIA领先AMD4系统的比例是1,在gpgpu.org上,NVIDIA的搜索结果(论文、在线资源链接等)比AMD6:1多。
这种差异的很大一部分是可用的在线信息的数量。看看英伟达的GPGPU Developer Central和英伟达的CUDA Zone。对于刚开始的开发人员来说,这些东西的数量甚至都不能与之相比。在NVIDIAs网站上,你会发现大量的论文--以及贡献的代码--这些论文和代码可能来自像你这样解决问题的人。你会发现来自NVIDIA和其他地方的大量在线课程,以及非常有用的文档,如开发人员的最佳实践指南等。免费开发工具的可用性-分析器,cuda-gdb等-压倒性地倾斜了NVIDIAs的方式。
(编者:本段信息不再准确。)其中一些区别还在于硬件。AMDs卡在峰值flops方面有更好的规格,但为了能够获得相当大的一部分,您不仅必须将问题分解到许多完全独立的流处理器上,还需要对每个工作项进行矢量化。考虑到GPGPUing ones的代码足够难,额外的体系结构复杂性足以决定一些项目的成败。
所有这一切的结果是NVIDIA用户社区继续增长。据我所知,在考虑构建GPU集群的三四个小组中,没有一个认真考虑AMD卡。这将意味着更多的团队在NVIDIA一边撰写论文,贡献代码等。
我不是一个NVIDIA shill;我希望不是这样,有两个(或者更多!)同样引人注目的GPGPU平台。竞争是好的。也许AMD很快就会升级--即将推出的fusion产品看起来非常吸引人。但是,在给某人提供关于今天应该购买哪些卡,以及现在应该在哪里投入时间的建议时,我不能凭着良知说这两种开发环境都一样好。
编辑后添加了:我猜上面在回答原始问题方面有点省略,所以让我把它说得更清楚一些。在有无限可用时间的理想世界中,你可以从一块硬件中获得的性能只取决于底层硬件和编程语言的能力;但在现实中,你可以在固定时间内获得的性能也强烈依赖于开发工具、现有的社区代码库(例如,公开可用的库等)。这些考虑都强烈地指向了NVIDIA。
(编者:本段信息不再准确。)在硬件方面,AMD卡中SIMD单元内的矢量化要求也使得实现纸张性能比使用NVIDIA硬件更加困难。
发布于 2012-03-24 04:22:43
AMD和NVIDIA架构之间的主要区别在于,AMD针对算法的行为可以在编译时确定的问题进行了优化,而NVIDIA针对算法的行为只能在运行时确定的问题进行了优化。
AMD有一个相对简单的架构,允许他们在ALU上花费更多的晶体管。只要问题可以在编译时完全定义,并以某种静态或线性的方式成功映射到架构,AMD很有可能比NVIDIA更快地运行算法。
另一方面,NVIDIA的编译器在编译时进行的分析较少。相反,NVIDIA拥有更先进的架构,他们在逻辑上花费了更多的晶体管,能够处理仅在运行时出现的算法的动态行为。
我相信,大多数使用GPU的超级计算机都使用NVIDIA,这是科学家们感兴趣的问题类型,通常更适合NVIDIA的架构,而不是AMD的架构。
https://stackoverflow.com/questions/4638324
复制相似问题