我对 CUDA 与 OpenCL 没有任何强烈的感情;据推测,OpenCL 是一个长期的未来,只是因为它是一个开放的标准。
但是当前的 NVIDIA 与 ATI 卡的 GPGPU(不是图形性能,而是 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 方面撰写论文、贡献代码等。
我不是英伟达的骗子;我希望不是这样,并且有两个(或更多!)同样引人注目的 GPGPU 平台。竞争是好的。也许 AMD 很快就会加强它的游戏 - 即将推出的融合产品看起来非常引人注目。但是在向某人提供有关今天购买哪些卡以及现在将时间花在哪里的建议时,我不能凭良心说两种开发环境都一样好。
编辑添加:我想以上在回答原始问题方面有点省略,所以让我更明确一点。在一个无限可用时间的理想世界中,您可以从一块硬件获得的性能仅取决于底层硬件和编程语言的功能;但实际上,在固定的投入时间内获得的性能也很大程度上取决于开发工具、现有的社区代码库(例如,公开可用的库等)。这些考虑都强烈指向英伟达。
(编者:本段中的信息不再准确。)在硬件方面,AMD 卡中 SIMD 单元内的矢量化要求也使得实现纸张性能比使用 NVIDIA 硬件更加困难。