人类对未知世界的探索是永无止境的,对计算能力的需求也是这样。虽然与世界上第一台电子计算机ENIAC相比,现在最快的计算机的运算速度已经快了将近100亿倍[1]。但是,对于精确的天气预报、石油地震数据处理、核爆炸模拟、飞行器数字模拟、作战模拟、高分子材料分析等超大规模的计算需求而言,仍然无法满足需要。
由于工艺水平和其他因素的限制,单处理机的性能无法无限提高,人们认识到并行计算机是解决这些大规模计算的唯一途径。自1972年世界上诞生了第一台并行计算机ILLIAC IV以来[9],并行计算机已经经过了30多年的发展,它们对推动计算机技术的飞速发展和高性能计算机在各个领域的应用具有不可磨灭的贡献。现在高性能并行计算机的研制与应用水平已经成为衡量一个国家科技、经济和国防综合实力的重要标志。
高性能并行计算机的研制始终以高性能作为目标,通常它们都基于专有系统进行设计和搭建,从而成本昂贵。这样对于中、小型计算用户而言,进行大规模的计算仍然是可望而不可及的奢求。
随着计算机技术和通信技术的迅猛发展,微机的计算能力以及网络通信速度已经今非昔比。上世纪90年代,工作站机群(COW/NOW)开始出现,它们配备一定的并行支撑软件(以PVM、MPI等消息传递软件为主),将多台同构或异构的工作站通过高速局域网相互连接起来,形成一个松散耦合的并行计算环境[9]。由于COW具有投资风险小、结构灵活、可扩展性强、软件财富可继承、通用性好、异构能力强等较多优点而被大量中、小型计算用户和科研院校所接受,成为高性能并行计算领域的一个新的发展热点。
但是,另一方面COW也具有并行程序设计难、结构不稳定、并行开销大、负载平衡、通信带宽低等许多亟待解决的问题,其中尤其因为并行程序设计难而不容易被用户所接受。具体而言,目前COW环境下(以应用最广的MPI为例,下同)的程序设计存在以下不足:
l 首先,它将各个并行执行部分之间复杂的消息交换和协调、控制的任务交给编程者来负责,这在一定程度上增加了编程者的负担。而且在该编程模式下,消息交换和计算任务通常需要编程者混合在一起考虑,这在一定程度上也增加了程序的复杂度。
l 其次,MPI通过提供并行库来表达并行语言,然而,其库函数数目异常繁多,而且还在不断增长(MPI-1共有128个调用接口,而MPI-2则增加到了287个[8]!)。对于编程者而言,掌握这些库函数本身就是一件费力的事情。
l 此外,在MPI-2之前不支持计算节点的动态增减,即使是在MPI-2下,要实现计算节点的动态增减也需要编程者自己通过调用其一系列的库函数来实现,大量的工作都需要编程者自己来负责。
l 正是由于MPI对计算节点的动态增减支持很弱,这便要求每一个计算节点都是可靠的系统,一旦某节点发生错误(系统错误、网络错误等等),整个计算将很难甚至不可能恢复(其恢复工作也需要编程者自己负责实现)。可以说MPI几乎不具有容错性。
归根结底,MPI仅仅提供了底层函数库的支持,许多功能(如可扩展性、容错性、计算过程的可控性以及对最终用户的友好性等等)的实现都需要编程者自己负责,这无疑极大地提高了COW的应用门槛,从而阻碍了COW的进一步推广。
为此,我们引入了分层计算(Hierarchy Computing)模型,通过该模型我们将致力于解决或改善目前COW环境下存在的上述问题,尤其是并行程序设计难的问题。
1972年,世界上诞生了第一台并行计算机ILLIAC IV,它含32个处理单元,环形拓扑连接,每台处理机拥有局部内存,为SIMD类型机器。
上世纪80年代,MIMD并行机的研制逐渐占据主流。早期主要以共享存储多处理机为主,到中后期,分布式存储体系结构开始崭露头角,这其中的代表是nCUBE(1024个节点)、nCUBE-2(8k个节点)。
进入90年代,得益于微电子技术和网络通信技术的快速发展,MIMD并行机已经占据绝对主导位置,其发展呈现以下几个趋势。
第一,以高性能微处理芯片和互连网络通信技术为基础,共享存储对称多处理机(SMP)系统得到了迅速发展。
第二,分布式存储并行程序设计开始以消息传递为主,配备PVM、MPI等消息传递软件支撑环境的工作站机群(COW,Network Of Workstations)开始出现,由于具有投资风险小、结构灵活、可扩展性强、软件财富可继承、通用性好、异构能力强等较多优点而被大量中、小型计算用户和科研院校所接受,成为高性能并行计算领域的一个新的发展热点。但是,另一方面它们也具有结构不稳定、并行支撑软件少、并行开销大、通信带宽低、负载平衡和并行程序设计难等许多亟待解决的问题。
第三,由于分布式存储的大规模并行计算机具有并行程序设计难、不容易被用户所接受的缺点,单纯的分布式存储已经朝分布共享方向发展,可扩展分布共享(DSM)类并行计算机已成为当前MPP研制的主要方向。
分层计算以降低大规模并行计算门槛为最终目标。一方面,它以微型机(工作站)作为主要目标平台,大大降低计算环境的搭建和维护成本;另一方面,它致力于降低当前COW环境下并行计算程序的开发的复杂程度。具体而言,该模型将具有以下特点:
第一,分层计算模型将采用中间件技术,在该模型下许多基本的公共功能(如可扩展性、容错性、负载平衡、计算过程的可控性以及对最终用户的友好性等等)都将几乎完全由中间件(我们称之为计算容器,Computing Container)完成,从而为计算任务开发者(简称开发者,下同)提供一套真正强大的底层支撑环境。
第二,分层计算采用树状拓扑结构,每一计算节点(Computing Node)将只与其父节点和子节点通信,从而简化通信模型,提高系统的可靠性、可扩展性和容错性。
第三,分层计算要求开发者分别实现任务的计算、任务的分解以及计算结果的合并,强制性地要求开发者按照“分而治之”的原则考虑问题,从而降低问题本身的复杂度。
第四,分层计算还具有支持异构系统、计算代码集中分发、采用XML来进行消息传递等等特点。
通过本课题的研究,最终将提交一套完整的分层计算模型规范,并在.Net环境下开发一套基于该模型的原型系统。
通过研究当前并行计算的国内外研究状况,我们发现,COW(包括其他基于分布式存储的并行计算机)所具有并行程序设计难问题依然存在,这已经严重阻碍了其进一步的推广和应用。而分层计算则能大大降低COW环境下并行程序设计和开发的复杂程度,从而降低大规模并行计算门槛,推动大规模并行计算在中小型用户中的应用。