GPU挑战CPU地位!详解CUDA+OpenCL威力
关于GPU并行计算,其实AMD比NVIDIA更早提出了GPGPU(通用GPU)的概念,那么NVIDIA怎么看老对手AMD在并行计算方面的发展呢?现在我们就看看NVIDIA技术人员对于AMD的评价。
● 衡量GPU并行计算的主要指标就是浮点运算能力,根据理论值来看,AMD GPU似乎要比NVIDIA GPU高不少(HD4850达到1TFLOPS、HD4870 1.2TFLOPS),那NVIDIA GPU的优势是什么?
答:的确,GPU的浮点运算能力非常重要,但这只是理论值而已,理论与实际存在很大的差距,尤其是在GPU架构截然不同的情况下,几乎没有可比性。目前超级计算机500强的排名是使用统一的软件进行评估获得的实际浮点运算性能,而并非理论值,采用NVIDIA Tesla GPU的超级计算机初出茅庐就排行第29,实际运算能力得到了充分肯定。
任何架构都有效率高低之分,GPU也不例外,NVIDIA CUDA架构的GPU执行各种复杂的图形指令及非图形指令都有着非常高的效率,而竞争对手的产品听起来拥有较多的流处理器、理论浮点运算能力也很夸张,但实际性能如何呢,通过最新DX10游戏来看其效率很低,GPU的本职工作都做不好,何谈指令更加复杂的并行计算呢?
● 科学研究对运算精度要求非常高,双精度浮点运算使用率很高,NVIDIA GPU的双精度运算能力只有单精度的1/8,而AMD双精度性能是单精度的1/5,这是为什么呢?
答:确实,在不少应用领域都须需要双精度浮点运算,这方面NVIDIA上代GPU做得还不够好,当初主要考虑提升单精度浮点运算的能力和效率,在民用场合会得到非常出色的效能(比如视频转码、物理加速等)。
不过,新一代Tesla产品的双精度浮点运算能力将会提高至原来的4倍之多,新一代核心不仅仅是工艺改进频率提升而已,事实上我们对内核架构作了进一步优化,每个SM内部FP64运算单元达4个,这样NVIDIA下一代GPU的双精度浮点运算能力可以达到单精度的1/2,性能提升非常可观!
● 对于AMD的FireStream流处理加速卡,NVIDIA怎么看?
答:AMD FireStream比NVIDIA Tesla诞生得早,但由于架构和开发平台问题,市场占有率及用户认可度根本无法同Tesla相提并论。大家看到的多是有关产品方面的报道,而不是有关应用及解决方案方面,因为AMD根本拿不出什么像样的应用软件,目前最流行的Folding@Home蛋白质分布式运算以及AVIVO视频转码,其实早在X1000时代就存在了,时至今日产品更新换代了三四代,但GPU运算效率并没有得到提升,为什么呢?
因为AMD没有给用户提供一种系统的开发平台,而是仅使用汇编一类的低级语言去进行GPGPU编程,这样的开发效率极低,而且移植起来非常困难,针对不同架构的GPU需要重新编写软件才能提供支持。举个最简单的例子,HD4000刚发布时候的Folding@Home运算效能甚至还不如HD3000,要知道HD4000的理论性能是后者的2.5倍之多!
可以这么说,AMD的GPU架构纯粹是针对图形渲染设计的,而且很落后,因为NVIDIA很久以前的NV30就是这种SIMD架构,并行计算只是AMD图形架构的副产品,所以AMD在面对并行计算时能有多高的效率值得怀疑。或许OpenCL的出现能给AMD一些机会,但AMD有的NVIDIA都有,而AMD没有的正是NVIDIA的强项,优秀的CUDA架构再加上各类编译器/API可以让NVIDIA GPU大放异彩!