Cactus的思想
Cactus是一种集成的、通用的、开放源码的计算科学和工程问题解决环境。Cactus允许用户将原来在个人计算机上开发的程序(不管它们原来是用C语言、C++写的,还是用Fortran、Java语言写的),转换成能够在虚拟的“网格计算机”上运行的并行程序;Cactus提供了简单、抽象的API调用接口,屏蔽了系统的复杂特性,从而简化了用户界面,获得很强的可移置性;Cactus能够在不同体系结构的机器上运行,如单处理器、集群计算机和其他体系结构的并行计算机;Cactus具有许多先进特征,诸如先进的数字计算技术、自适应的网眼细化、并行I/O、实时远程可视化、远程操控、Web接入等[3];Cactus中还集成了许多现成的成熟应用模块,只要提供初始数据并修改参数,就可以得到计算结果,减少了重复开发的现象;Cactus环境既可以用来数字相对论中,求解爱因斯坦方程,又可以用在其他领域,诸如天体物理学、化学工程、气象模拟、密码科学等。
Cactus不仅在虚拟的网格超级计算机上建立了庞大的问题求解环境,还带来了一种崭新的“大科学”思想。例如,求解数字相对论这样的问题,不仅需要精通物理学、天文学、数学,还需要精通数字算法、网络工程、计算科学等,这些是任何个人或团体都无法单独完成的。Cactus提供了一个平台,把不同学科的、不同地域的科技工作者凝结在一起。当一个物理学家正在研究爱因斯坦方程的一种新的表达式时,数字分析师可能正在探寻求解其中某种椭圆方程的更有效方法,而计算机科学家正在寻找更有效的并行I/O 算法,而软件工程师正在开发一种新的并行编程环境,硬件生产商正在研制更高效的并行体系结构[1]……Cactus使人类探索未知世界的能力达到了前所未有的高度。
Cactus在其实现上,也具有非常独到之处。Cactus(仙人掌)这个名字本身就体现了它的实现之巧妙:正象仙人掌一样,Cactus由一个主干(flesh)和若干生长在主干上的枝干(thorn)构成,枝干可以任意多个,直接插上主干就能使用,如图 2‑1所示[9]。

图 2‑1 Cactus的插件式思想
主干是Cactus的基础,用标准的C语言开发,提供一组API,其目的是使枝干能够动态地结合在一起。为此,它需要能够控制由哪些枝干、用何种方式、怎样传递数据、何时执行哪些程序,等等。一个枝干是一个软件模块或一些子程序的集合,可以用任何常见的语言编写,如Fortran 77、Fortran 90、C、C++、Java、Perl及Python等。枝干分为两类,一类是计算网格的中间件(例如:实现MPI、PVM、SHMEM的驱动程序、并行I/O驱动程序,以及Web服务支持程序、网格监控工具等),另一类是各种现成的应用程序(例如黑洞模拟程序、椭圆方程求解程序等),它们插入到主干上即可工作。奇妙的是, Cactus不是建立在Globus的基础上的,而是将Globus作为Cactus的一个枝干插在主干上,一旦Cactus插上了Globus枝干,使用MPI的应用程序立即就可以不加修改地运行于网格之上。
Cactus体系结构
Cactus的体系结构如图 2‑2所示[2]。

图 2‑2 Cactus体系结构
体系结构最上面的一层是应用层,也就是普通用户所能感知的层面:他们只需要指定初始状态、提交初始数据、指定求解问题的精度等,就可以得到计算的结果,而不需要考虑网格计算是在什么样的异构环境中、集结了多少动态的资源、用了什么样的优化算法完成的。
接下来就是Cactus层,它由Cactus主干及主干所融合的大量枝干插件构成。枝干大致可以分为两类:应用枝干和网格枝干。应用枝干用来完成具体的科学计算,比方说求解某种物理方程。应用枝干可用常用的编程语言书写,理论上讲,不用考虑网格的复杂情况,只需要针对抽象的虚拟机器编程。如果说应用枝干更接近于具体的应用的话,网格枝干则更接近于网格本身,它从诸多方面完善网格的功能,以更好地支持应用,如并行性、I/O、Web接口、可视化、高性能通信、数据映射等。应用枝干之所以能够在抽象的层次上进行编程,得益于网格枝干对细节的封装。
再下面是MPICH-G2层。MPICH-G2提供了与MPI完全一致的并行编程界面,只不过它已经从并行计算机扩展到了异构的网格环境。MPICH-G2与MPICH-G一样融入了Globus的资源发现、资源分配、运行管理、安全验证等功能,但它的通信效率更高,加强了对服务质量的控制。除了通过MPICH-G2实现统一的编程界面外,Cactus也通过直接调用Globus的网格服务功能,实现了数据分解器、通信调度器等功能模块。
最下面是Globus层。MPICH-G2需要通过动态更新请求在线协同分配器DUROC进行资源的协同分配。DUROC既屏蔽了在不同并行计算机上分配资源的细节,又屏蔽了启动、监视和管理进程的细节。Globus的网格服务功能相当于网格操作系统,它管理的是更底层的功能,如资源发现、验证、预留以及存贮、通信、安全等问题。
Cactus应用举例——模拟黑洞
根据爱因斯坦相对论,当质量很大的星球的原子能用尽,将向内部发生坍塌,星体所有的物质和能量会向内聚合成无限小的一个区域,称为黑洞。这个区域磁场引力太大,任何物质都无法逃脱,包括光和其他形式的射线都将被吸进这个区域中,黑洞之名即由此而来。科学家们推测,每一个星系的中心都至少有一个黑洞。根据测算,我们的银河系中心至少有一个质量300万倍于太阳的黑洞。
黑洞特性研究,是当今天文学的热点问题之一。由于无法直接观察到黑洞,只好从一些间接现象来证实它的存在。目前世界范围内正在兴建一些新型引力波探测器。它们可通过检测黑洞碰撞产生的引力波,来帮助科学家发现和研究黑洞。此时,超级计算就大显身手了,它可以事先模拟出黑洞碰撞所产生引力波的特征波形。这些波形不仅能指导实际观测,还可用来对观测结果进行检验判断。科学家们认为,超级计算机模拟黑洞碰撞等新型研究,有可能推动实验物理学进入一个全新的发展阶段。
对黑洞的模拟是一个典型的网格问题:一方面,它需要很大的计算能力。例如,要模拟一大一小两个黑洞的碰撞,其计算量不是单台超级计算机所能完成的。为此,就必须借助网格,把计算任务分解到多台超级计算机上;另一方面,要使分布在各地的、不同专业背景的研究人员能够紧密协作,就必须有一个能够在动态的多机构虚拟组织中进行资源共享和协同解决问题的公共平台。仅从这个意义上讲,网格也是必不可少的。
利用Cactus并与Globus结合模拟黑洞的项目,是在德国Max Planck引力物理研究所(即阿尔伯特.爱因斯坦研究所)的带领下,由德国和美国多个研究机构共同完成的。在Supercomputing 2001会议上,他们展示了最新成果,并获得了Gordon Bell奖。可以说,这个项目相当引人注目。

图 2‑3 黑洞模拟网格拓朴结构
该实验的网格拓朴结构如图 2‑3[2]所示。该网格一共使用了四台并行计算机,它们分布在两个地方:三台位于美国伊利诺斯州Champaign-Urbana的国家超级计算应用中心NCSA(National Center for Supercomputing Applications),分别是128、128和256个CPU的SGI Origin 2000机,相互之间使用Gigabit以太网连接,带宽达到100MB/s;另一台位于加州的圣地亚哥超级计算中心SDSC(San Diego Supercomputing Center),它是具有1024个CPU的IBM Power-SP机。NCSA和SDSC之间使用OC-12专线连接,它的带宽是622Mb/s,但实际测试效果不理想,只达到2.5MB/s。
所有的处理器组成了一个虚拟的三维长方体阵列。每台并行机首先在X和Y方向都分别安排了5个和12个处理器,构成一个5×12平面,然后,视该机处理器总数,将该平面向Z方向延伸。为此,NCSA的三台SGI Origin机分别用了5×12×2、5×12×2和5×12×4个处理器,SDSC的IBM Power-SP机用了5×12×17个处理器。所以,处理器阵列的尺寸为5×12×25,用上的处理器总数为1500。需要计算的问题本身可以划分为360×720×3345个子问题,由于IBM Power-SP每个处理器的处理能力大约是SGI Origin 2000单个处理器的两倍,故在IBM机的每个处理器上放了70×60×155个子问题,而在SGI的每个处理器上只放了70×60×95个子问题。
由于问题本身的特殊性,每个处理器只需要与紧邻它的处理器通信。这个特性使得该应用非常适合分布到不同的并行计算机上处理,因为绝大多数的通信都只发生在并行计算机内部,即使发生在SGI Origin 2000机之间,问题也不大,因为它们之间的网络带宽高达100MB/s,唯一需要重点考虑的问题是NCSA最右侧的5×7处理器阵列与SDSC最左侧的5×7处理器阵列之间的通信效率问题。事实上,这个问题的解决也是比较容易的,只需要给这两侧的处理器阵列分配较少的任务即可。由于任务少,所以它们的通信需求就相对少些。
该项目还采用了其他一些手段来优化性能。例如,使用TCP/IP协议跨越广域网进行通信时,TCP建立连接的时间非常长。为此,可以增加数据包大小,减少发送次数,从而提高通信效率;再如,将计算结果数据进行可视化,也面临海量数据传送问题。好在黑洞引力波是连续的,可以采用压缩后再传输的方法,有时压缩后节省的数据量竟高达99%。由于Cactus非常易于扩展,只需要编写一个压缩插件,并插入到Cactus主干中即可实现压缩功能。
需要指出的是,如果优化只是针对固定的配置手工指定的,则有两个问题:一方面很难使优化参数正好与实际情况匹配;另一方面,网络和高性能计算机在运行过程中会不断出现变动,手工优化无法适应变动。为此,该项目利用了Globus的动态更新请求在线协同分配器DUROC(Dynamically-Updated Request Online Coallocator)功能,实现了自适应优化——自动实现负载平衡,自动根据网络带宽和时延优化配置和设定通信参数,自动选择压缩方式(在压缩比与压缩开销之间作出平衡),自动容错,等等。
实验结果表明,优化后的系统性能大大优于优化前。优化前,应用程序的整体运行效率只有15%,而优化后的整体效率达到了63%(1500个CPU时)[10]。这个效率是这样算出来的:其中,168MFlop/s是该应用在单个SGI Origin 2000 处理器上的运行速度,这种处理器一共有480个;306MFlop/s是在单个IBM Power-SP处理器上的运行速度,这种处理器一共有1020个;249GFlop/s是应用程序在整个网格上的运行速度。试验中,尝试过只使用一台SGI Origin 2000(120个CPU)和IBM Power-SP(1020个CPU),曾创下高达88%的使用效率,这无疑非常惊人。图 2‑4[3]展示了模拟的漂亮结果。

图 2‑4 模拟的黑洞
尽管已经非常成功,但作者认为该项目还存在一定局限性:
1.它虽然使用了四台并行计算机,但由于其中三台类型相同来自同一地点,不能算是一个复杂的异构环境。而且,有一句话是在Cactus的获奖论文中没有明白地讲出来的:只使用两台并行计算机,得到的性能(285.5GFlop/s,这个数值是从其88%的高使用效率反推出来的)居然比四台(249GFlop/s)还高。
2.系统只使用了1500个处理器,规模甚至比不上某些单台超级计算机,如当时排名世界第一的ASCI White就拥有8192个处理器。因此,这个实验并不能充分证明网格的优越性。
3.由于应用的特殊性,只是相邻处理器之间需要通信,因而NCSA和SDSC之间的远程连接没有成为一个大的障碍,优化工作相对容易。
4.实验工作做得不够细,例如NCSA和SDSC之间使用的OC-12专线带宽的实际传输性能只是理论值的3%多一点,应当找出其原因。尽管如此,我们还是认为Cactus及其应用,是网格发展史上的一个里程碑。
参考文献
[1] Gabrielle Allen, Tom Goodale, Gerd Lanfermann, Thomas Radke, Edward Seidel, Werner Benger, Hans-Christian Hege, Andre Merzky, Joan Massó and John Shalf, Solving Einstein's Equations on Supercomputers, IEEE Computer, 32, (1999) [cover story]
[2] Gabrielle Allen, Thomas Dramlitsch, Ian Foster, Nick Karonis, Matei Ripeanu, Ed Seidel, Brian Toonen, Supporting Efficient Execution in Heterogeneous Distributed Computing Environments with Cactus and Globus, Supercomputing 2001. [Winning Paper for Gordon Bell Prize (Special Category)]
[3] Gabrielle Allen, Edward Seidel, John Shalf, Scientific Computing on the Grid, Byte, Spring 2002
[4] I. Foster and C. Kesselman, editors, The Grid: Blueprint for a New Computing Infrastructure. Morgan Kaufmann, 1998. Chapter 3
[5] Sharon Brunett and Steven Fitzgerald, Metacomputing Supports Large-Scale Distributed Simulations, May 1998, http://www.cacr.caltech.edu/SFExpress/pubs/sc98/sc98.html
[6] Sharon Brunett and Steven Fitzgerald, Balancing the Load in Large-scale Distributed Entity-level Simulations, May 1998, http://www.cacr.caltech.edu/Publications/techpubs/cacr163.html
[7] http://www.cacr.caltech.edu/SFExpress/
[8] http://www.cactuscode.org
[9] Gabrielle Allen, Cactus Grid Computing, http://www.cactuscode.org/Presentations/Europar_August01.ppt
[10] Thomas Dramlitsch, Supporting Efficient Execution in Heterogeneous Distributed Computing Environments with Cactus and Globus http://www.cactuscode.org/Presentations/SC2001_November01.ppt
[78] Awards Cap SC2001 HPC and Networking Conference, http://www.npaci.edu/online/v5.24/sc2001.awards.html
作者介绍 刘鹏,清华大学计算机系 高性能所网格研究组博士研究生,IEEE、GGF、CGF会员。个人主页:http://hpclab.cs.tsinghua.edu.cn/~pengliu/。
