我对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硬件更难。