可扩展高性能并行计算机的关键技术与发展远景
国家智能计算机研究开发中心
李 国 杰
以市场大量销售的主流微处理机芯片、主板甚至微机或工作站为基本单元构成大规模并行计算机已成为发展高性能计算机的主要方向。微处理机芯片与并行处理是促使计算机技术突飞猛进的两项关键技术。传统的以独家使用的芯片为主的高性能计算机将逐渐退出市场。过去人们常用的巨、大、中、小、微计算机分类也将逐步被两大类机器取代:一类是只有单处理机的微机与工作站(除了操作系统不同以外,高档微机与工作站的界限也日益模糊。),另一类是各种不同档次的并行计算机,机器的性能与规模将取决于系统所包含的处理机数目。以并行处理技术为基础的高性能计算机被认为是高技术的一个致高点,美、日、西欧等发达国家和一些发展中国家都制定了国家科研计划下大力气发展高性能计算机。研制可扩展的高性能并行机究竟难不难?如果说难,到底难在哪里?我国已制定了2010年远景发展规划,要求我国在高技术方面缩小与国外的差距。到2010年国际上高性能的并行计算机将达到什么水平?到那时,最高水平的计算机将是一副什么模样?我们能不能在高性能计算机方面缩小与国外先进水平的差距?本文试图回答上述几个普遍关心的问题,旨在抛砖引玉,引起各位院士对高性能计算机研制与产业化的重视。
有人认为现在造一台高性能并行机技术上已很容易,只要用高速网络,如高速以太网,FDDI或ATM交换机,将若干台微机或工作站连接起来,就是一台高性能并行计算机。实际这是一种误解,这种简易型的机群系统只能适用于处理机间通信要求不高所谓粗粒度计算。要研制通用性较强、性能很高的并行机,不仅要实现低延迟高带宽的互连网络接口,而且要突破可扩展性(Scalability),单一系统形象(Single System image),友好的并行编程环境和并行算法设计等一系列关键技术,许多技术国外也不成熟,需要我们下功夫去攻克。下面简要地讨论并行处理的几项关键技术。
1.可扩展性技术
Scalable这一术语最近几年使用越来越频繁,在文献中被翻译成可扩展、可伸缩、可扩缩等,中文里似乎找不到一个恰当的词表达其丰富的内涵。美国HPCC计划的目标不称为MPP而称可扩展高性能计算机(Scalable High Performance Computer)。Scable的含义不只是系统中处理机数目可多可少,也不仅仅是系统可达到接近线性的加速比。实现可扩展性如其说是一种技术,不如说是一种设计原则,它与系统及应用的规模、性能、成本都有联系,而且与技术更新及产品升级换代有关,涉及资源、应用与技术等几个方面。为达到可扩展的目的,需要解决降低或隐藏通信延迟、共享虚存与单一文件系统等一系列关键技术。
从资源可扩展性来看,系统的性能应随着资源(处理器、存储容量、磁盘等)的增加而成比例地增加,这就要求地址空间、共享的通信带宽等留有充分余量,而留余量是要付出代价的。事实上,每一种并行机设计总是以某一种规模为参考点,考虑向上发展多留余量可能导致缩小规模时性能价格比降低。设计小规模到大规模并行都合适的可扩展并行机需要恰当地选择各种部件。所谓技术或换代(generation)可扩展性是指系统的某些部件,如处理机等,升级换代被更换时,其他部件不动,系统能以更高的性能工作。相对而言,微处理机芯片升级换代最快,一年半左右性能就翻一番。如果每一次处理机芯片升级都要从新设计并行机的每一个节点机,并行机的升级换代就很困难。可扩展并行机的一个重要发展趋势是从器件级集成过渡到微机、工作站主板甚至整机集成。HP和IBM的MPP产品都是以市场上大量销售的微机与工作站主板为基本部件,Princeton大学正在研制以PC整机为部件的并行机。这种新的构造并行机的方式可以保证并行机与微机或工作站完全同步升级,几乎没有延迟。应用问题可扩展性(Scalability over Problem Size)涉及并行算法研究。有许多应用问题光靠增加问题规模并不能增加并行性。比如分子动力学问题,只增加被模拟计算的分子数量,并不能提高并行性。挖掘问题本身的并行性是一门大学问,往往需要考虑新的模型与新的算法。
研制可扩展并行计算机需要遵从各部件可独立扩展的原则,比如处理机升级或增加处理机个数时不要求操作系统和编程环境升级。可扩展的系统一定是一个开放系统,其追求的目标是:算法不依赖于体系结构,应用不依赖于平台,节点设计与网络无关而网络接口与网络拓扑无关。可扩展的系统一定是一个各方面平衡的系统,没有明显的性能瓶颈。经验规则(Amdal’s Other Law)指出1MIPS计算速度(实际速度)需要1MB内存和1MB/s I/O速度,当系统扩展时,计算能力、存储容量与I/O能力必须同步提高。最新研究结果表明,存储容量的提高可以大大低于计算速度,Petaflops(1015)计算机并不需要1015B内存而只要30Tera byte(1012B)内存。当用几千个处理机构成大规模并行系统时,由于机器的尺寸增大,通信延迟不可避免要增加。对主频几百兆赫以上的高速计算机,数据不可能在一、两个时钟周期内从机器一头传到另一头,如何在长线上减少延迟或在体系结构上想办法隐藏延迟(Latency hiding)已成为很受关注的专利技术。在长线传输上降低延迟的思路是改变异步通信方式,收到几个信息包才发回答信号或者采用流水线方式,一条线上同时传几个消息包。当机器规模扩大时,机柜之间的连线延迟可能成为制约可扩展高性能并行机发展的一道难关。通过体系结构设计(如高速缓存)、优化编译和用户编程,充分利用程序的时间与空间局部性,减少远程传输也是当前可扩展技术的热门课题。
隐藏延迟是发展可扩展并行机的另一途径,主要技术是数据预取与多线程机制。所谓数据预取是通过优化编译改变指令执行顺序,提前存取或传送将延迟到达的数据。这种技术也广泛用于RISC编译,即所谓软件流水线。毫无疑问,编译技术将在可扩展并行机研制中发挥越来越重要的作用。线程是上下文切换开销较小的一段执行程序。多线程机制允许当一个线程等待数据或同步时,启动另一线程执行,即多个线程以上下文切换方式并行。采用多线程机制可实现计算与通信重迭,当一个通信线程挂起等待时,可启动另一计算线程。可扩展并行机不管有多少节点,为方便用户应该具有单一系统形象,即统一地址空间,单一文件系统,单一系统形象可以在系统级也可以在用户级实现,前者难度较大。由于通过互连网到其他节点内存取数比到本节点磁盘取数快一个数量级以上,其他节点内存可看成本节点的虚存。在共享虚存的体系结构中实现可扩展性,需要考虑共享数据结构的压缩表示与页面交换等问题。总之,可扩展技术是高性能计算机的核心技术,从共享存储多处理机,包含几十个处理机的机群发展到由几百、几千甚至更多处理机组成的可扩展高性能计算机,还要攻克一系列技术难关。
2.低延迟高带宽的互连网络接口
目前市场很容易买到每秒运行数亿次的微机与工作站,也不难买到每秒几百兆位甚至上亿位带宽的ATM互连设备,为什么不能直接用这些部件与通信协议构成可扩展的高性能并行机?目前市场上提供的大规模并行机,如IBM SP-2,Intel Paragon等,其互连网络的物理通信带宽已达到每秒100MB以上,为什么还不能支持细粒度的并行?(所谓细粒度并行是指平均每执行几十条或上百条计算指令甚至更短间隔就要进行一次通信,处理机之间小的通信十分频繁)其原因在于实现通信的软件开销太大,每启动一次通信至少要执行上千条甚至上万条指令,造成用户级通信延迟在几十微秒以上甚至毫秒级,用户实际得到的通信带宽远远小于物理上可提供的带宽。以Intel Paragon大规模并行机为例,发送接收一个短信息,软件开销要占总开销97%以上,网络传输的硬件延迟不到1微秒。而对于细粒度并行的高性能计算机,用户级的通信延迟最好降到几个时钟周期以内。就用户级通信延迟而言,用ATM或快速以太网协议直接连接离我们的要求差两个数量级以上。所以研制高性能并行机的关键技术主要集中在设计低延迟高带宽的互连网络接口。各大公司各大学校的技术特色也反映在独特的网络接口上。
一般来讲,一个程序在计算机上运行有两种开销,一是系统开销,即操作系统管理资源、协同配合的开销,二是用户层的开销。由于操作系统是十分复杂的系统软件(几十万行甚至几百万行)。为了保护数据,操作系统要进行许多数据拷贝、打包和传送,因此实现一个系统调用至少需几千个周期。传统的网络接口采用DMA机制,发送与接收数据都要向操作系统发中断请求,系统开销很大。设计低延迟高带宽的网络接口的一条原则是节点间通信要在用户层进行,不进入操作系统。而在用户层实现通信也有两种思路,一是通过存储器映射(Memory Map);二是寄存器级映射(Register Map)。CM-5采用了存储器映射机制,传输延迟降到1.6微秒但不支持用户级多道程序。Princeton大学研制的SHRIMP并行机采用虚存映射机制,软件开销降至几个指令周期,而且支持多道程序。CM-2、iWAP的Systolic通信接口以及MIT研制的J-machine采用寄存器级映射,将网络接口做到处理机芯片中,更有效地支持细粒度低延迟通信,这种网络接口需要设计专门的硬件。从科研与产品开发两种角度考虑思路不一样。以MIT为代表的科研人员强调性能指标,网络接口做到寄存器一级,与微处理机芯片有密切联系,比如他们研制的Monsoon和Alewife分别要求改进Motorola 88110和SUN SPARC芯片。尽管通信接口性能很高,但厂商出于市场考虑,往往不乐意为可扩展并行机单独开发处理机芯片。KSR等公司自已专门开发芯片,尽管体系结构先进,仍逃脱不了因财务困难而申请破产保护的命运。数据流计算机具有通信接口方面最强的硬件支持,但市场上并不成功。因此在考虑硬件支持时应该遵循上面提出的技术可扩展原则,在具有较长生命周期的工业标准基础上创新,才会有市场竞争力。
3.并行软件
并行计算机难用已成为影响其推广的主要障碍。在并行机硬件与用户需求之间有一巨大间隔,只能靠软件来填补。可扩展高性能并行计算机的应用效率和可用性主要取决于并行软件。可扩展并行机对软件的依赖性表现在用户程序(程序结构、数据结构、问题规模等)的改动可能引起机器性能很大的改变,用通信与控制领域的术语来讲,目前并行机是Q值很高的系统。要使并行机在较大的应用范围呈现较稳定的性能,并行软件方面还要突破许多关键技术。使用并行机是为了加速问题求解,如并行机节约的时间补偿不了用户在编程和调试上多花的时间,并行处理就毫无实际意义。一台并行机的峰值速度由硬件决定(单处理机峰值*处理机数),我国学术界评价计算机研制水平习惯用峰值速度容易造成错误导向。实际上用户关心的是实际解题的速度或作业吞吐量,而实际速度(Sustained Speed)主要取决于软件,尤其是并行优化编译和并行算法。为了减少使用并行机的“人时”和获得满意的实际运算速度,最关键的软件技术是与机器无关的并行编程与功能较全的高性能并行算法库。
经过多年努力,串行计算机的编程已做到与机器无关,与机器有关的优化工作都已交给编译程序。事实上,RISC技术的兴起主要得益于编译技术的进步。同样,向量机编译技术的发展也提供了与机器无关的向量机编程界面。而并行机有共享存储、消息传递、数据并行等多种与机器有关的编程模式,机器升级换代时所有应用程序都要重写。比如从CM-2升级到CM-5,原来基于SIMD结构写的应用程序完全不能用。这种与机器相关的编程方式导致长期以来超级计算机只能是大实验的仪器设备,很少独立软件开发商敢于投资开发并行软件。为了改变这种局面采用标准语言(如HPF)与标准编程界面(如MPI),设计高效率的并行优化编译是一项关键任务。由于数据分配、指针处理的本质困难性,短期内难以做到完全依靠自动并行编译将用户写的串行程序转换成效率高的并行程序。
并行算法的效率与体系结构密切相关。将常用的并行算法经充分优化后做成并行算法库供用户调用,将目前广泛使用的库函数并行化变成标准的并行库函数,这是推广并行机必须要做的事,也是提高并行机实际性能的关键技术。发展并行机的目标应该是让用户只考虑应用领域本身的问题而不必关心并行机本身的结构。优化编译和算法库、函数库应能保证机器的实际性能足够高,不应驱使用户为了适应并行机的结构一点一点地修改程序改善性能。
对一门迅速发展的技术做长达15年的预测是件十分困难的事。但为了配合我国刚刚制定的2010年远景目标,宏观估计一下2010年高性能计算机的发展水平和可能采用的体系结构对我们的决策有帮助。本文的预测主要根据微处理机器件发展的趋势与体系结构权威们的判断。
目前商品化的微处理机芯片主频已达到300MHz(Alpha 21164),今年年底400MHz以上的芯片可能推出。单处理机最高速度已达513 Specfp 92。CMOS工艺已采用0.35μ生产线批量生产,单片晶体管数已达930万,芯片面积300mm以上,功耗30~50瓦。美国半导体工业协会(SIA)预计到2007年以前,CMOS器件水平还会继续提高,到那时,0.1μ工艺将投入生产,处理器芯片集成度可达2000万门,主频速度将达1GHz,工作电压1.5V,功耗40~200W,存储器芯片将推出16Gb DRAM和4Gb SRAM。最近研究结果表明,2007年以后,CMOS工艺有可能进步提高到0.05μ甚至0.025μ。按SIA的预测外推三年,到2010年0.07微米工艺可以实现,工作电压0.9V,主频可到1.4GHz。
到2010年前后,半导体技术可能到达它的极限。由于量子效应,以CMOS工艺为基础的微处理器很难象最近十年这样,速度与存储容量每三年翻两番。科研人员正在努力寻找取代半导体器件的新技术,如超导器件、光学器件、分子器件、量子器件等。在所有这些新技术中超导器件最有可能成为2010年前后构造超高性能计算机的基础。超导器件具有频率高、功耗小、无RC充电延迟、可以VLSI实现等优点,比半导体器件快1~2个数量级而功耗小1~2个数量级,但目前集成度比半导体器件低一个数量级。10年之内有可能研制出工作频率高达50GHz的超导器件和每秒一万亿次的超导处理机,低温下功耗只有4瓦。由于在器件尺寸、集成度与功耗等方面缺乏优势,光学逻辑器件不大可能十几年内取代电子器件,但在互连通信和外存储器方面具有优势。15年内可能采用100Gb/s以上的光纤互连器件与100Gb以上的光存储器。
计算机体系结构已相当成熟,国外计算机权威人士们估计20年内要实现每秒一万亿次(Petaflops)的超高性能计算机,目前采用或提出的体系结构可以达到目的,冯·诺依曼50年前提出的程序存储型体系结构也不会改变。存储延迟与数据存取的带宽是进一步提高性能的关键,可能会采取新的措施,如加大处理机芯片中存储器容量等。推动高性能计算机发展的主要动力是市场而不仅仅是技术,只有大量采用的处理机芯片才会大幅度降低价格,反过来推动高性能计算机发展,因为即使10年以后,每台价格超过1亿美金的计算机也很难商品化。从这种意义上讲,微机或工作站的大量推广与芯片升级是可扩展高性能并行计算机发展的前提。
到2010年,超高性能的并行计算机的速度可能达每秒几百万亿次水平,即0.1 Petaflops(1014flops)数量级。94年2月一批世界著名学者在有关“Petaflops计算的可能技术”讨论会对20年后最高水平的计算机技术做过预测,他们认为三种可能的体系结构结合起来可以满足不同领域Petaflops计算的要求。第一种是采用400台左右速度为一万亿次的处理机(可能采用超导计算机),通过交叉开关(可能是光互连Crossbar)构成共享存储的紧耦合多处理机。这是一种类似Cray公司巨型机的结构。第二种是用几万台工作站(每台10~100Gflops),通过多级互连网络构成机群结构式的MPP。第三种结构采用一种新概念,即所谓智能随机存取存储器或称为主动存储器,将处理器(1Gflops/CPU)做在存储器芯片中,每块芯片包含8GB存储器和100个CPU,采用4000块主动存储器芯片(共40万个处理器)构成多维网络结构。采用这种结构的计算基本上在片内存取数据,存储带宽大大增加,机器成本也大大降低。美国能源部制定了一个更为乐观的加速战略计算计划(ASCI),要求96年(财政年度)做出一万亿次机,99年做出10万亿次机,到2002年研制出每秒100万亿次的超高性能计算机,经费已落实,96年~2002年研制经费约3.6亿美元。此计划能否如期实现,人们试目以待。
科技是第一生产力,计算机是最活跃的第一生产力。国民经济和国防建设都有一些“巨大挑战”(Grand Challenge)问题需要极高速度的计算机才能解决。能源、材料、环境、工业制造、基础研究等领域要赶上世界先进水平,都必须采用高性能的计算机。超高性能的大规模并行机是一个国家综合国力的代表,如同核武器一样,有与没有大不一样。我国国民经济要实现由粗放型向集约型转变,推广计算机应用是一条关键措施。欧盟各国为提高产品竞争力,将ESPRIT计划的主攻方向已调整为“高性能计算机用于工业生产”。采用高性能计算机做产品设计与性能仿真,是我国大中企业打翻身仗的一条重要途径。可是在刚刚通过的九五计划与2010年远景目标纲要里,计算机没有象集成电路一样列入高技术产业的重点。决策上的失误可能导致我们丢失赶上世界先进水平的大好机遇。研制几千亿次的可扩展高性能并行计算机可以带动高性能计算机产业,让几十亿次,几百亿次高性能计算机进入国民经济各个部门,大大提高我国的生产力。
由于半导体工艺快达到其极限,而新的技术又不成熟,下世纪第一个十年间,高性能计算机的性能可能会维持在百万亿次水平,难以达到Petaflops水平。如果我们在九五期间抓紧打下基础,研制出几千亿次甚至上万亿次计算机,同时布署力量开展超导芯片与光互连研究,到2010年,我们在可扩展高性能并行计算机方面有可能赶上世界先进水平,同时为今后的发展打下了基础。国家智能计算机研究开发中心已研制成曙光1000大规模并行机,并准备研制更高性能的大规模并行机。国防科大与江南计算所研制的大规模并行机也即将问世,这说明我国已基本掌握并行处理的关键技术。研制并行机的主要难点已转移到软件,国外这方面也不成熟,这为我国提供了一个后来居上的大好机遇。只要决策正确,在科研人员努力下,今后15年我国在可扩展高性能并行机方面一定能做出令世人赞叹的出色成果。
1996年