编者按:昨日,国外负责计算机运算速度测量的国际组织机构在美国发布了全球超级计算机500强最新排行榜。榜单中,中国“天河二号”超级计算机以每秒33.86千万亿次的浮点运算速度获得冠军。这也是自从2011年以来,“天河二号”第四次赢得全球运算最快超级计算机的称号。多次连任全球超级计算机冠军,天河二号是否彰显国家竞争力?
答案是肯定的!那么,为什么它能彰显国家竞争力?这就需要知道这种超级计算机研制的难点在哪里。
现在全球投入使用或将要投入使用的超级计算机,几乎全部都是集群式计算机。这种计算机简单说就是将大量的微型计算机通过网络系统连接起来,使用专用的操作系统控制来执行大规模的计算任务。搭建超级计算机所使用的节点,通常都使用市场上能买到的工作站/服务器使用的CPU、GPU等芯片。例如天河2使用的就是Intel的Xeon E5 V2处理器和Xeon Phi协处理器(后者类似GPU,负责一些特殊的计算任务),这两种芯片都是在公开市场上销售的。(Xeon E5 V2的正式销售要等到第三季度)类似地,超算的内存、存储单元等一般也是标准化的产品,没什么特殊和神秘的。
超级计算机研发的真正难点在于网络系统和软件系统
集群计算机系统在处理单一计算任务时,集群中的各个节点之间的通信是非常复杂的。不仅节点间传输的数据量巨大,延迟要求严格,而且动辄就需要数百数千乃至上万个计算节点之间同时传送计算数据。当网络系统的效率不足时,大量的数据会在网络上发生拥堵,可能会极大地降低整套系统的运算性能。整台超级计算机的运算速度越强,集群内的节点数目越大,对网络系统的要求就越高。因此,网络系统性能是硬件上制约超级计算机运算能力的最主要瓶颈。正因为存在这一瓶颈,厂商不可能通过无限制地堆砌节点数量来增加计算能力——当总的运算能力超过网络系统最高负荷后,继续增加的节点不仅不能提高计算能力,反而会让性能下降。
另一方面,控制大量的计算节点执行同一个或少数一些计算任务,对软件系统的要求是和我们日常接触的应用完全不同的。软件系统必须对硬件高度优化才能充分发挥硬件的潜力,否则就会产生瓶颈。此外,由于超算的节点众多,少数节点损坏是家常便饭,软件系统必须做到部分节点损坏时不影响任务的持续。当然,系统更不能频繁出现死机、崩溃等情况,对稳定性的要求远高过一般的家用、商用电脑。满足这些要求的前提下,系统还需要做到尽可能的易于使用,这样才便于执行多种多样的计算任务,处理各行各业的需求。
因为以上两大限制的存在,超级计算机的研制事实上是技术含量非常高的。节点的芯片随便可以买得到,但网络系统和软件系统都是超算研发厂商自己的实力所在。
再来看看天河2
天河2使用了自主研发的网络系统和操作系统,其中网络系统使用了国防科大自主研发的,基于SPARC指令集的飞腾1500处理器来处理网络数据,操作系统则是自主开发的麒麟。天河2目前有大约13000个计算节点,每个节点使用了两颗Intel的Xeon E5-2692 V2 CPU和三张Xeon Phi 31sp Co-processor。Xeon E5-2692 V2是Intel开发的CPU,尚未上市,每颗CPU有12个核心,主频2.2GHZ;Xeon Phi 31sp则是Intel开发的协处理器,专门用来执行密集浮点运算,其形态为类似显卡那样的PCIe扩展卡,卡上有一颗芯片和8GB高带宽内存,芯片内有57个主频约1GHZ的核心。Xeon Phi 的一个特点是浮点运算效率较低,其在运行浮点运算基准测试linpack时,实际性能只相当于理论最大运算性能的60%左右——相比之下,Xeon E5 CPU运行相同测试时的效率在80%以上。但是Xeon Phi的理论最大运算性能较高(每张卡1T Flops,亦即每秒1万亿次浮点运算),大大超过Xeon E5的212G Flops(每秒2120亿次浮点运算),因此一张Xeon Phi的实际运算能力可以达到三颗Xeon E5的水平。
天河2的整机理论最大浮点运算性能达到54900TFlops,而实测运算性能达到33860TFlops,效率达到60%左右,这是非常不容易的:这意味着拥有1.3万计算节点的庞大计算集群,效率和单个节点是差不多的水平。这说明天河2的网络系统和软件系统的水平是非常高的,在1.3万节点的水平下几乎没有网络和软件瓶颈的出现。相比之下,一些较小的使用较落后网络系统的超算,几百个节点下的运算效率相比单节点的效率几乎减半,说明瓶颈是非常严重的。现在的天河2只是完成了一期工程,未来通过增加节点和改用更快速的计算卡(后者类似于我们常说的电脑升级)预计可以达到超过5万TFlops的运算能力,这都要感谢国防科大自主研制的高性能网络系统和软件系统。
对于现代工业国家来说,超级计算机是增强研发能力、增强工业竞争力的一个重要的环节。一台超算既可以处理少量的超大计算量的任务(比如军事上模拟核试验),也可以处理大量的计算量较小的任务(比如为众多用户同时处理不同的计算需求,如计算产品的流体测试数据、为电影后期进行三维渲染、为学校物理实验提供科学计算支持等),其用途是十分广泛的。国内已经建成的超算中心都有各行各业的大量用户在使用,效益还是很不错的。经过多年发展,中国的超级计算机研发能力已经达到了仅次于美国日本的水平,在世界上属于第一梯队。虽然与美国的差距仍然较大(主要体现在核心芯片与软件系统上),但发展的前景是越来越好的。很多外行不明就里,动辄就说超算就是堆芯片没有技术含量,其实只是在证明自己的无知与自大罢了。
补充介绍下,除了超级计算机以外,12306的订票系统也属于大规模计算应用中的两个范畴,后者的任务是大规模实时整数数据处理,而前者的任务是大规模非实时浮点运算。任务类型的不同决定了两者的系统要求有着巨大的差别:用于订票系统的集群要求有非常高的I/O处理能力,足够快的响应速度和极低的错误率;用于超算的集群则要求非常高的浮点计算能力,不需要实时响应,也不需要那么高的IO处理,对错误率的容忍也更好。用超算系统的技术去做订票系统,前者的高浮点能力毫无用途,却缺乏后者需要的实时性能和IO能力,结果只会一塌糊涂。
文章作者:王强,内容来源知乎,经本人授权转载,转载须经本人同意许可。