作为计算机应用的一个重要分支,高性能计算一直被视为最为璀璨的一颗明珠,动辄成百上千的CPU用量,也让高性能计算成为了厂家必争的市场。高性能计算历来代表着国家科技实力水平的高低,而国际超级计算机年会(International Supercomputing Conference)每年两度发布全球HPC Top500排名榜也成为了万众瞩目的焦点。
进入Top500排名,也成为了衡量一个地区高性能计算水平高低的重要数据依据,每年我都会关注Top500排名榜,同时也关注国内的Top100 排名。其中国内厂商的排名表现,Top500的门槛变化,高性能计算整体计算能力的变化,这些数据就像是一种数字的游戏,透过这些数据变化,试图从中分析出国内高性能计算的发展和变化。如果把Top500排名比喻奥运会的金牌榜,那么此前关注的是金牌数量,渐渐地会发现,金牌数量不是唯一的衡量标准,金牌之外,还有全民体育水平。高性能计算也是如此,排名并不能够代表高性能计算应用的真实情况。
高性能计算体系结构
熟悉高性能计算的人知道,高性能计算在体系结构的发展上经历了很多代,从向量机,到SMP (Symmetrical Multi-Processing,对称多处理)、NUMA (Non Uniform Memory Access Architecture,非一致内存访问体系架构)、CC-NUMA(Cache-Coherent NUMA, Cache一致性NUMA),以及集群计算。新技术不断把高性能的计算能力推向极致,与此同时,降低高性能计算的拥有成本。
集群计算的出现,基本上改变了国内高性能计算应用的现状。可以说,集群计算大大降低了高性能计算的门槛,构建一个高性能计算的超级计算机系统变得非常简单。在服务器厂商内部,曾经流行过一句话:只要你肯出钱,购买足够多的服务器,采用集群的方法,可以很容易搭建所谓超级计算系统。换句话说,超级计算机系统已经由技术的比拼,变为了金钱的比拼,技术含量大大降低。
国内所说的集群系统,一般就是指采用x86服务器的集群,在学术上被称为Beowulf集群。除了Beowulf集群之外,集群还有很多种,如 SMP集群等,但在国内基本上没有太多应用。谈到其中的原因,东方物探的一位专家表示,x86集群已经成为一种普遍的选择,或者采用英特尔处理器,或者采用AMD的处理器,因为这样的高性能计算系统造价比较低,性价比更为出色。记者在采访上海超算中心的时候,他们工程师也表示,与其他体系结构的高性能计算系统相比,x86集群在稳定和可靠性方面的表现,的确存在不小的问题,举例说,它们所采用的Myrinet高速互联网络经常会出现计算节点不释放的难题。这些都会影响系统的稳定性。特别对于上海超算中心而言,作为上海市政府牵头构建的超级计算中心,它承担着对外提供运营服务的任务,系统的稳定和可靠性尤为重要。但是出色的性价比表现,也使得x86集群成为了国内的普遍选择。
透视Top500排名榜单,国外在体系架构的研究上更为丰富,在体系结构的创新上走得更远,与之相比,国内显然缺乏对于体系结构的创新和研究。近年来,混合体系结构非常流行,2008年,美国能源部Los Alamos国家实验室 (LANL) 的Roadrunner系统成为了第一个突破千万亿次/秒浮点计算能力的超级计算机,它就采用了混合体系结构,选用了Power、Cell和AMD处理器。
在国内针对Roadrunner有很多种质疑,其中最为典型的观点是,混合体系架构会造成变成的复杂性。不同的处理器体系结构,需要不同的编译器,需要不同的操作系统,应用非常复杂。因此,混合结构在国内颇具有争议。GPU的出现,让这种争论达到了一个新的高潮。"天河一号"成为了国内首个突破千万亿次/秒浮点运算的超级计算机。对此,我曾经撰文指出过,"天河一号"的千万亿次/秒是该系统的峰值计算能力,而通常所说的千万亿次/秒指的是 LinPack测试结果,"天河一号"LinPack测试值只有563.1万亿次/秒,并不是严格意义上的千万亿次/秒超级计算机。对于"天河一号"的争论,不在于千万亿次/秒,而在于它采用了CPU+GPU的混合方案,有舆论认为,GPU没有太多的价值,在它们看来,GPU就是垃圾。
在采访有专家支持,GPU高性能计算方案的问题在于,一来软件需要从新编译,代码需要重写;二来,GPU不支持双精度的浮点运算;另外,GPU所采用内存不支持ECC,不能进行校验,将导致计算结果不可信。
GPU方案
所谓GPU方案是相对CPU方案而言,GPU说白了就是显卡,计算机中的图形加速设备。在显示,在图形计算方面具有非常强大的性能。如果计算机显卡性能不够强大,那么它的计算任务就会由CPU来承担,严重降低系统的性能,甚至会导致系统崩溃。
与CPU多核技术相比,GPU具有更多的计算核心,以英特尔至强处理器为例,目前最多只有6核,GPU方面,以nVDIA产品为例,以及达到了 240核。目前, nVDIA显卡有5款产品:GeForce、Quadro、Tesla、Tegra和ION,这些显卡针对不同的应用而设计,其中Tesla被用于高性能计算。其他的产品,如GeForce是不推荐用于高性能计算的,如果有厂商利用GeForce构建高性能计算系统,将极有可能导致系统不可用。
在采访中,nVDIA中国公司技术市场经理施澄秋指出, Tesla系列GPU计算解决方案能够加快集群的速度。用户可以选择部署nVIDIA制造的1U系统或OEM厂商制造的混合式CPU+GPU方案,二者均集成了nVIDIA Tesla GPU。与四核CPU相比,Tesla 20系列GPU计算处理器以二十分之一的功耗,以及十分之一的成本即可实现同等性能。
谈到软件问题,施澄秋表示,软件的问题并不是想象中的复杂,为此nVIDIA推出了CUDA并行计算架构,可以有针对C语言、C++、 Fortran语言以及OpenCL、DirectCompute等驱动程序API提供丰富的编译器、分析器、调试器。目前,很多的高性能计算软件程序开发商,均已经提供了针对GPU适用软件版本。针对双精度浮点运算,目前Tesla已经可以支持。至于有些厂商有可能采用GeForce用于高性能计算,肯定是不行的,nVIDIA也不推荐这样使用。对于内存不支持ECC的问题,施澄秋表示,这个问题的确存在,Tesla所采用的内存确实不支持ECC。但是他同时指出,nVIDIA也在着手解决这个问题。今年上半年,nVIDIA就将推出代号为 "Fermi"的下一代CUDA GPU架构方案,在相应的产品方案中,将提供对ECC内存的支持。
nVIDIA联合创始人兼首席执行官黄仁勋指出:"Fermi架构整合了nVIDIA在全世界和数千名CUDA开发者共同工作总结出的各种工具、函数库以及引擎。未来的几年Fermi将会创造新的GPU产业。" 美国橡树岭国家实验室表示,2011年,他们将利用"Fermi"架构的nVIDIA GPU来打造出全球最大的超级计算机。据悉"Fermi"还得到了Bloomberg、微软、IBM、惠普、戴尔以及Cray等公司的支持。目前,国内厂商方面,浪潮、宝德以及华硕均推出了基于nVIDIA GPU设计的高性能计算机。
浪潮集团高性能服务器产品部总经理刘军表示,2010年,浪潮高性计算将进一步组织"GPU+CPU"应用在相关领域的开发,加强纵深应用的高性能解决方案的开发与研制工作。他指出,国内"CPU+GPU"技术的应用环境还不成熟,主要体现为缺少与之匹配的应用软件和算法,导致GPU的性能优势难以释放,应用范围也受到限制。针对这些问题,浪潮的工作将分为"软硬件"两个方面,一方面将进行专门应用软件的开发和优化;另一方面继桌面超算"倚天"之后,推出更多基于 "CPU+GPU"架构的产品,重点解决高速I/O优化、计算单元协同优化以及相关应用软件的CUDA环境移植等技术难题。
应用是更大的难题
如果说选择CPU,还是选择GPU是一个问题,那么应用软件的缺乏,将是目前国内必须面对的更大的难题。
有专家指出,多核技术的发展解决了处理器在发展过程中所遭遇的高主频、高能耗的问题,使得处理器能够在维持一定功耗的前提下进一步提升处理器的性能。但是与此同时,多核技术将更多的问题留给了软件。软件如何能够更好的利用多核的能力,将是一个巨大的挑战。混合结构的发展,又将软件的复杂度进一步提升。据了解,英特尔也在积极推进混合结构的发展,两年前的IDF会议上,英特尔就已经透露了80核的众核处理器芯片,代号为LarryBee,称为一个叫 Larry的"小蜜蜂",其实质就是CPU+GPU的混合方案。但这势必会增加编程的难题。
上海超算中心高性能技术总监姚继锋指出,软件将成为制约高性能及计算系统应用的主要问题,特别是那些可以使用到512个以上计算核心的高性能计算应用程序就更加稀少。为此,上海超算推出了一系列鼓励计划,鼓励用户使用更多的计算内核。据记者了解,目前国内应用环境中,很多的高性能计算系统被分割使用和管理,很多具有万亿次/秒浮点运算能力的超计算机,其计算结点从来就没有一起运行过,所谓万亿次/秒的计算从来就没有发挥作用。目前,"天河一号"号称具有千万亿次/秒的计算能力,但是是否具有相适应的应用呢?对此,不得不打一个大大的问号?
刘军指出,国内高性能计算机取得了很快的发展,但是高性能计算市场,迫切需要解决的是应用的问题,受制于中国高性能软件的落后,难以发挥超大规模的计算能力。据记者了解,国内基础科研对于高性能计算具有很大的要求,但是基础科研常常注重科技论文,在社会真正能够引起广泛的项目寥寥无几,为此,很难为基础科研的需求,投资构建高性能计算机。商业应用方面,国内也只是局限在模拟仿真、卫星气象等少数领域,与国外相比,国内的高性能计算应用领域具有巨大差距。国内用于数据分析、数据挖掘的商业应用基本没有开展,差距明显。
商业应用的缺乏,使得高性能计算中心的效益难以体现,更难形成良性循环。姚继锋指出,并行软件的设计,特别是扩展到可以应用上千个计算核心的应用软件设计,还存在相当的技术难度。需要大量资金投入。长期以来,国内高性能计算领域,重系统轻应用,使得应用软件以及I/O存储系统得不到应有的重视,强大的计算能力难以发挥。因此在资金的投入和使用上,软件和存储系统应该得到更多的重视。
据记者了解,继"天河一号"之后,国内很多城市都在热衷构建千万亿次/秒计算能力的超级计算机,大有将超级计算中心作为城市名片的趋势,但在这些投资中,软件和存储I/O可以占据多大的比例,情况堪忧。据了解,目前GPU尽管有商业的软件版本,但是这些软件要想投入商业使用,实际上还有非常大的距离。并不是一个软件版本就可以解决的。因此,高性能计算前景光明,但是还有很多的问题需要解决。