在高性能计算领域,图形处理单元(GPU)是一个热门话题。但是所有这些争论使得他们的未来更加扑朔迷离。
我们尽可能地去了解高性能计算的未来,这样就可以更好地为中期超级计算需求进行投资。我们回顾过去,从大量假设开始,假设我们如何达到目的,如果进入下一个阶段。我们假设产品X如何取得成功,为什么技术Y成为主导以及公司Z失败背后的故事都对我们了解现有的哪个产品、技术或者厂商可能会失败有着帮助作用,所有这些都将改变我们的行业。
图片来自互联网
现在在高性能计算领域一个很大的问题就是:“GPU怎么样?”而当GPU越来越受关注的时候,另一个更大的问题是:“软件怎么样?”#p#
多核设备
为了方便起见,本文我们将使用GPU这个术语来涵盖所有多核计算设备——GPU或者加速图形处理单元(APU)。GPU是否会保留下来,甚至成为占主导地位的高性能计算处理器?哪一种GPU或者加速器将脱颖而出成为市场的选择?
目前高性能计算市场中占主导地位的处理器——我们拿TOP500来作为市场风向标——当然是英特尔至强x86-64。当然,当AMD推出AMD64的时候x86才真正开始统治高性能计算领域。AMD在这种主导于高性能计算市场的处理器领域处理领导地位,但是英特尔开发的最丰富的至强产品系列现在却统治着TOP500榜单。
尽管AMD凭借皓龙处理器在早期领先了数年时间,但是英特尔却取得了最终的胜利。通过历史观察我们发现,那些最终统治市场的厂商并不一定是基础技术领先的厂商。
因此,尽管我们可以有把握地说,NVIDIA的GPU技术在技术计算和高性能计算方面领先,但如果或者当GPU成为主导的高性能计算处理器时,我们并不能肯定地说NVIDIA就是份额最大的技术提供商。AMD、英特尔和NVIDIA都计划交付能够满足超出现有CPU更多高性能计算需求的产品。#p#
成功的关键
第二个观察结论就是,对于拥有x86-64的AMD和拥有GPGPU的NVIDIA来说,一个由编译器、ACML、CUDA和社区网站所组成的一个软件生态系统是技术成功的关键所在。有些人会说,成功的关键是软件和社区,而不是任何硬件方面的优势。
第三个发现就是,当早期采用者开始将x86/x86-64作为一项真正用于高性能计算的技术时——相比高端超级计算机提供了更高的性价比——很多高端计算的倡导者认为,价格表现并不代表一切,而真正的超级计算机将仍然是最佳解决方案,甚至暗示称商用集群也将保留一席之地。
在我看来,到目前为止关于CPU与GPU的争论都是从差不多的。在过去的争论中,价格是赢得竞争的关键。例如,当时另一个试图赢得RISC领域的处理器就是英特尔的IA64安腾。它提供了更好的技术,但是价格也更高。x86-64提供了足够好的特性,而且更便宜。#p#
时代不同了
TOP500中x86-64的兴起和关于CPU与GPU的争论这两者之间是否有什么关键区别?也许吧。新的x86-64处理器与主导的RISC处理器是不同的,但是在编程风格上并非完全不同。
工具是现成的,由于现有对软件开发的消费需求超出了x86高性能计算的范畴,因此,x86是一个不错的演变。代码必须从RISC移植到x86上,这一点我们做到了。然热,GPU在编程方面与CPU是有很大不同的。GPU-HPC的生态系统尚不成熟,但是编译器和社区方面已经有了很大进步。
也许最关键的是,例如Fusion、Knights和Fermi等类似GPU的选择多样化使得我们在CPU和GPU之间很难轻易作出选择。从过去我们得出一个教训,那就是生命周期较长的好代码在开发过程中是忽略前端的——不管是在皓龙上还是至强上。#p#
投资工作
如果我们现在要开发一个长期使用的大型应用程序,那么我们我们必须在OpenMP、Cuda、OpenCL或者填补空白的多种产品之间作出一个悬念则。GPU是通用的,这意味着在开发过程中运行的是谁家的产品并不重要,但是获得性能和成本回报却是一个硬要求。
根据历史经验,一旦开始标准化,成本部署将胜过最佳选择。从RISC到x86的过渡并没有在编程方面的重大变革。从CPU到GPU的过渡可能会放缓获得更高性价比的过程,但这并不会组织最终变更的完成。
【编辑推荐】