2013年6月17日,在德国莱比锡召开的2013国际超级计算大会上,世界超级计算机TOP500组织正式发布了第41届世界超级计算机500强排名,国防科技大学研制的"天河二号"超级计算机,以峰值计算速度每秒54902.4万亿次、持续计算速度每秒33862.7万亿次双精度浮点运算的优异性能位居榜首。
此消息一出,有网友为祖国的又一科技进步感到兴奋;也有网友泼出冷水:使用了进口CPU;当然也有不少更理性的网友,运算速度第一是否意味着性能就是世界领先。
我们需要先来认识一下超级计算机的概念,特别是现代超级计算机究竟是一个什么样的玩意。
最早期的超级计算机严格遵循了"冯·诺依曼"体系,在架构上与我们今天的家用电脑没什么区别,即计算机由控制器、运算器、存储器、输入设备、输出设备5部分组成。其性能提升的方法是,采用专门设计的中央CPU以达到极快的运算速度。例如1976年克雷公司推出了著名的Cray-1型超级计算机,其速度为133MFlops(每秒百万次浮点运算),中国的"银河一号"超级计算机也是参考了Cray-1的结构而设计的。但是这样采用"超级"CPU做成的超级计算机很快遭遇了瓶颈。因为单个CPU的速度不可能无限线性上升,当达到一定速度之后,要再提高主频、降低能耗、解决散热问题,所需付出的代价、成本以及面临的困难开始呈指数式的上升。
既然单个中央CPU的运算能力提升困难,要想继续提高巨型机的运算能力,那就只能另辟蹊径了,最简单的就是增加中央CPU数量,用更多的中央CPU去运算。1982年,克雷公司推出了一款Cray X-MP型超级计算机,速度为941MFlops,就是采用了4个CPU。这样的结构叫做对称多处理(SMP)结构。SMP结构的计算机一般在一个计算机中包含两个以上CPU,各CPU完全相同,平等地访问软硬件资源,共享整个计算机的内存以及总线结构,但有各自独立的缓存。其实,我们现在家用电脑普遍采用新型多核CPU,也可以算作是一台SMP架构的计算机了。在SMP结构中,多个CPU运行操作系统的单一复本,并共享内存和一台计算机的其他资源。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。系统将任务队列对称的分布于多个CPU之上,可以极大地提高整个系统的数据处理能力。
世界上第一台采用多个处理器提高速度的Cray X-MP超级计算机
但是,SMP架构的计算机由于对公共内存和I/O的竞争,加上维护缓存一致性方面的困难,导致其扩展能力有限,很难做到64个以上的CPU。所以,SMP架构的超级计算机的运算速度提升也是有限的。
于是,新一代巨型计算机结构——分布式大规模多CPU系统结构出现了。分布式大规模多CPU系统(MPP)结构是指使用数个拥有独立内存空间的CPU构成,同时执行一个任务的计算机结构。MPP结构采用了分布式存储系统,每个CPU和自己独立的内存构成一个节点,节点间通过高速网络连接,各CPU可以直接访问自己节点内部的存储器,可以通过消息传递方式获得或传送其他节点的数据,因而有效避免了SMP结构中由于多个CPU同时存取一个存储单元所产生的瓶颈问题。MPP结构的代表机型有克雷公司的的T3D/T3E等,上海超级计算中心安装的第一台超级计算机一一国产"神威1"超级计算机系统也采用了MPP结构,安装有128颗CPU。
无论是SMP结构还是MPP结构,一个共同的问题在于,使用的都是专用的中央CPU。由于大型机使用的中央CPU与批量生产的通用中央CPU相比,生产数量较少,因此价格高昂。当超级计算机中央CPU越来越多的时候,这样的代价显得越发难以承受,随着网络技术的飞速发展,新一代超级计算机结构——集群结构逐步拨开云雾了。
集群(Cluster)结构相对于其它结构而言,是随着计算机网络技术的飞速发展而兴起的基于网络的计算机并行系统。是一种把多个独立计算机(或称服务器、节点)通过高速网络连接在一起,进行统一调度、协调处理,实现高效并行处理的系统。集群系统中的每个节点有自己的存储器和I/O设备,可以分别独立运行,因此集群计算系统可以被认为是基于网络的分布式资源的集中计算。在用户的角度看来,集群就是一个计算机系统,他可以从中取得任意数量多需要的计算资源,而对于系统管理员而言,他也可以任意添加和删改集群系统中的任何节点。与时下流行的"云计算"概念相比,集群(Cluster)结构的超级计算机,实际上就是在专用高速局域网下进行"云计算"。
集群式超级计算机的复杂布线
集群结构的超级计算机在上世纪九十年代末才出现,但是发展非常迅速。目前TOP500的统计中,排名前列的相当大一部分都是集群结构的超级计算机。此次排名超级计算机世界第一的"天河二号"超级计算机也是集群结构的超级计算机。而我国研制的超级计算机上一次名列榜首还是两年半之前的"天河一号A"超级计算机。
至此,大概可以看出超级计算机发展至今一个追求,那就是在单个CPU性能有限的情况下,如何采用尽可能多的CPU来提高运算速度。理论上,在单个CPU性能相当的情况下,超级计算机采用越多的CPU,其运算速度越快。但实际情况并不是1+1=2,集群结构的超级计算机基于网络进行分布式计算,每个CPU的效能并不是100%发挥出来的,存在一个效率的问题。这就是为什么我们介绍"天河二号"运算速度时,会有两个速度,一个是峰值计算速度,另外一个是持续计算速度,后者才是实测性能。
由于现在的集群结构超级计算机采用的都是大批量生产的通用CPU,如"天河二号"使用的CPU就是英特尔Xeon E5 2692,其姐妹版Xeon E5 2690的市场报价是1.2万元人民币。研制一款超级计算机,真正的核心技术,是其架构设计,即网络系统和软件系统,如何让所安装的上万枚CPU的性能尽可能发挥出来。
现在来看"天河二号"超级计算机的具体情况。
"天河二号"采用了384000颗12核的Intel Xeon E5-2692处理器,48000颗Intel Xeon Phi 31S1P协处理器,4096颗国产Galaxy FT-1500前端节点处理器。处理器数量规模比起第二名的"Titan"、以及上一代的"天河一号A"高出了一个数量级,这可见"天河二号"在架构设计方面的难度。
超级计算机的水平,在不同的CPU/GPU的品种和数量的情况下,从效率的角度来看无疑是一个体现水平的指标。"天河二号"的峰值速度为54902.4TFlop/s(每秒万亿次浮点运算),持续速度为33862.7 TFlop/s,可以算出,其效率约为61.7%,而"Titan"的这两个数值分别为27112.5和17590,计算下来,效率约为64.9%,再和"天河一号A"的53.3%与"Jaguar"的75.5%相比,我们可以看出,无论是横向比较还是纵向比较,"天河二号"的效率相比有了较大幅度的提高,与国外先进超级计算比相比,差距已经大为缩小。
同时,还必须指出的是,"天河二号"采用的Intel Xeon Phi 31S1P协处理器的一个特点是浮点运算效率较低,其在运行浮点运算基准测试linpack时,实际性能只相当于理论最大运算性能的60%左右。从这样的角度来看,"天河二号"的网络系统和软件系统的水平是相当的高,能够在300多万颗核心组成的庞大系统,在协处理器本身效率较低的情况下达到了这样的效率。要知道,在使用了比起"Titan"多出一个数量级的核心的情况下,核心越多,系统会越复杂,相互之间的协作就会越困难,瓶颈也会越多。
在单位运算能力功耗上,以"天河二号"的峰值速度54902.4TFlop/s和最大运行功耗17808kW,可以算出其单位运算能力功耗为3.1 TFlop/skW,而"Titan"的这两个数值分别为27112.5和8209,计算下来为3.3 TFlop/skW。从这两个数值来看,"天河二号"比起"Titan"还是略有差距的。
当今超级计算机前5名的性能对比
总的来说,"天河二号"在CPU核心数量达到百万数量级的情况下,还可以在实际运算效率、功耗效率两个指标上,达到国外先进超级计算机的水平。这说明我国超级计算机的核心技术已迈入世界领先行列。"天河二号"并不仅仅在于运算速度世界第一。
最后需要再强调一下,集群式超级计算机的核心技术是架构设计,是如何安装尽可能多的CPU,并让所有CPU的工作效率尽可能地高;CPU本身并不是超级计算机的核心技术。如果真有必要,当然也可以采用国产CPU,付出的代价不外乎是CPU安装数量更多、效率、经济性和稳定性降低,并不会达不到所需的运算速度。其实,国内在去年就已经研制成功采用全国产CPU的"神威蓝光"超级计算机。(文/蒹葭)
天河二号计算机的机柜设计也很具特色