马文方
CPU数量的增加不仅带来了性能的提升,还带来了可用性降低、功耗和成本攀升。未来,高性能计算路在何方?Andy Keane眼中CPU与GPU的结合才是最好的计算架构。
随着IBM高性能计算机“走鹃”于2008年6月诞生,高性能计算机(HPC)迈入千万亿次门槛。用户对高性能计算需求的持续增长,推动着HPC规模越做越大。在由CPU构成的高性能计算的世界中,由于CPU计算性能的提升速度远远落后于高性能计算需求增长的速度,增加CPU的个数便成为提高HPC性能的主要途径。如今全球高性能计算500强(Top500)中已经出现内核累计总数多达20多万个的HPC。
但是,在提升性能的同时,CPU个数的增加也给HPC增添了复杂性,并带来可用性降低、系统功耗惊人、成本高居不下等问题,让HPC厂商日益感到头痛。于是,高性能计算厂商开始探索新的提升HPC性能的途径。IBM的“走鹃”就是采用CPU和Cell处理器的混合架构,AMD和Intel也都分别对外发布了各自的CPU+GPU(图形处理器)的混合架构。
作为GPU领域龙头老大的NVIDIA自然不会放弃在高性能计算这一CPU的传统领地炫耀性能的机会。它先是推出了CUDA架构,使得程序员可以用C语言对CPU和基于CUDA架构的GPU进行统一编程,从而解决了因编程复杂而被程序员敬而远之所造成的GPU应用难以普及的问题。进而,它又推出了面向高性能计算的Tesla系列GPU。2008年11月21日,NVIDIA在美国德克萨斯州奥斯汀市举办的2008超级计算大会上联手HPC的巨头Crayon推出个人HPC。与此同时,会上公布的Top500中,采用Tesla技术的HPC首战便占据了第29名的位置,标志着NVIDIA从个人HPC和高端HPC全面切入高性能计算领域。
为此,本报记者独家专访了NVIDIA高性能计算事业部总经理Andy Keane。
HPC中的GPU
记者:GPU在高性能计算中的性能已经到达了何种地步?
Keane:CPU的运算速度在很大程度上还取决于缓存的大小,而GPU则是在任务并行化后用大量的线程来进行运算。虽然CPU已经多核心化,可以多达8个内核,但在并行计算时,显然不是GPU上千个线程的对手。
比利时有所大学,以前用的是512个CPU组建的HPC,当他们了解到GPU的运行功能很强后,试着自己搭建了一台配置有8个GPU的台式机,结果性能竟与以前512个CPU的HPC不相上下。
记者:既然GPU的性能远远超过CPU,那么NVIDIA何时开始关注GPU的计算能力?
Keane:15年前,我们就开始针对3D游戏开发GPU了。但GPU的编程很复杂,因而应用主要是集中在图形显示领域。之后,我们开发了CUDA架构,你可以把CUDA想象成与x86相似的硬件架构,它允许应用开发者用他们熟悉的语言对GPU进行快速编程,从而为GPU拓宽了应用范围。现在,NVIDIA所有的GPU都支持CUDA架构。
记者:懂得计算机的人都知道,并行编程要比串行编程复杂得多。程序员如何在CUDA平台上对CPU和GPU统一编程?
Keane:尽管CPU与GPU之间在架构上存有很大的区别,但我们觉得CPU与GPU的结合才是最好的计算架构。于是我们在CUDA上推出了C语言编译器,程序员在开发应用程序时,只要对序列执行的程序代码和并行执行的程序代码简单地进行标注,C编译器就可以向PC解释哪部分该由CPU做,哪部分该由GPU做。
记者:CUDA的编程看来不难,那么搭建一个个人HPC难不难?
Keane:用Tesla组建个人HPC是件很容易的事。你只要把买到的Tesla卡插到PC主板上的PCI插槽,你的PC就变成了1台个人HPC。
记者:Tesla贵吗?
Keane:4个GPU的价格在9500美元~1万美元之间,3个GPU的Tesla价格为7000多美元。但与同等价位的工作站相比,我们的性能应该有百倍的提升。
竞争对手
记者:我们看到现在全球性能最高的HPC“走鹃”所采用的CELL处理器实际上就是一个集成了8个流处理器和一个CPU内核的处理器,而GPU也是由数百个流处理器构成的。你是如何看待CELL的?
Keane:CELL的编程要比CUDA复杂得多。CUDA本身就是一个GPU架构,我们所有GeForce、Quadro和Tesla产品线都可以很完美地对其提供支持。它的编程模式是很简单的,语言与C语言非常接近,编译器与C语言也基本一致。唯一的改变是将之前的串行计算更新为并行计算。在过去的一年中,CUDA积累了大量的应用程序,而且在美国,也有很多活跃的论坛讨论CUDA的编程问题。我们也在CUDA中文网站上开设了CUDA中国专区,上面有144个使用的案例。对于程序员而言,这些编码都是开放的。
记者:在基于Tesla搭建的HPC中,GPU与CPU从指令集上看是异构的。而英特尔最新展示的具有80个内核的Larrabee却采用的是x86指令集,从而实现了CPU和GPU在指令集上的兼容,对于程序员来说,这是否会比Tesla编程更为容易呢?
Keane:我并不这样认为。在NVIDIA的CUDA平台上,不管面对何种架构,编程人员都可以用很普及的C语言去对CPU和GPU进行统一编程。对于程序员来说,Tesla的编程是很简单的。而Larrabee无法用C语言来编程,程序员要学习这种新架构和它的语言并用两种语言分别对CPU和GPU进行编程。
记者:AMD选择GPGPU(通用GPU)来切入高性能计算领域,对此你有何见解?
Keane:关键要看它的普及率了。这里有两个数据:英特尔x86处理器市场占有85%的份额,AMD只占15%;同时,AMD的FireStream只有5%的使用率。你为客户定制产品的确会又好又快,但如果产量不高,成本无法有效摊薄,价格就会非常高。 而我们主要针对主流市场,用更加标准的界面来制作,让用户很容易使用,而且有能力承受。我们能够让很多研究人员将原本要跑到数据中心去做的计算转移到插有Tesla卡的工作站上,并很容易地获得高性能计算的体验。
应用领域
记者:TOP 500中,x86架构CPU已经占据了90%的地盘。请问Tesla进入高性能计算市场的机会有多大?
Keane:几乎是100%。我们强调的是异构计算,GPU不可能完全取代CPU,只是能显著地减少CPU的数量。如果我们从另外一个角度上看这个问题,其实全都采用一样的架构未必是件好事。如同在GPU领域,因为有我们GPU、Intel的Larrabee和AMD的ATI的存在,因此大家可以互相激励,充分开展竞争,刺激创新。但是服务器领域的架构几乎统一,这对创新是不利的。
记者:那么在工作站方面呢?
Keane:工作站的限制主要在于工作站机箱内部空间的限制,例如工作站的电源只能提供1000W的功率,那么,我们可以在这1000W之内给你提供尽可能高的计算性能,比如说1T的性能。
记者:无疑,Tesla个人高性能计算机的性能远好于现在的工作站,但目前工作站上的很多应用软件都是基于UNIX系统,厂商们愿意把它们移植到Tesla平台上吗?
Keane:这些开发商面临着决定应用何种并行运算解决方案的选择。其中之一为多核CPU解决方案,即将计算工作分配到双核、四核甚至八核上。这样,对于开发人员来说,如果他们要想通过并行计算来得到性能的提升,就必须将应用分解为4块甚至8块。这其中最大的挑战是如何将计算工作划分为完全均衡的4块或者8块。另外一种解决方案类似Intel的Larrabee,开放人员可以用比多核解决方案更为简单的方式解决并行计算的问题。但是针对并行运算,GPU架构可以非常简单地实现非常大规模的并行计算。如果你要按照时间和效率来衡量这几种选择方案,GPU无疑是效率最高的。
记者:未来工作站会不会被Tesla个人超级计算机替代?
Keane:对于任何使用集群的用户,都有应用Tesla GPU的需要。我将努力说服他们中的所有人。利用工作站进行高性能计算的用户也是我们的目标人群,我们也希望让他们认识到我们的好处。事实上,如果用户很看重预算和效率,对成本和时间很敏感,那么Tesla对他们来说就很有价值。
未来发展
记者:在CPU领域,虚拟化是一个很时尚的话题,Tesla也能虚拟化吗?
Keane:如果CPU可以做到虚拟化,那么GPU也可以做到虚拟化。因为他们都是基于处理器架构的。就好像将GPU作为CPU的一个资源,只要CPU可以实现虚拟化,那么GPU也可以作为CPU的资源实现虚拟化。
记者:Tesla现在使用C语言编程。我们知道C语言与硬件很容易结合,也易于控制。听说NV还要在Tesla上使用Fortran,这样会不会影响到效率?未来还会有其他语言吗?
Keane:Fortran是非常结构化的语言,并行计算的性能非常好,在GPU上的执行效率甚至更高。同时,在未来我们还将增加C++等语言。
记者:既然在Tesla计算机中,Tesla GPU要与CPU协同工作,那么,未来GPU和CPU会不会集成在一个芯片上?
Keane:我们不认为GPU和CPU将会融合。因为目前GPU的设计比CPU还要复杂,GPU拥有更多的核心,更高的内存容量,芯片的面积也很大。我们的客户也对计算性能和内存提出更高的要求。我们所能做的是提升制造工艺,从而降低芯片的面积。
我们当然可以把一个小型CPU集成进来,但这样对GPU计算性能的提升并没有益处。就高性能计算而言,高速异构计算架构是一个CPU搭配多个GPU,然后更多的CPU搭配更多的GPU,这样,GPU就可以发挥加速器的作用。
记者:既然高性能计算市场这么大, NVIDIA会不会借助Tesla成为HPC厂商?
Keane:不会的。我们的优势就在GPU上,我们也生产主板,但是我们的研发都是投在GPU上。这一点,我们的CEO说得很清楚,NVIDIA会一直专注在GPU上,不会在其他地方分神。