网格计算
取消
显示结果 
搜索替代 
您的意思是: 

分享我的技巧 : 分布式异构计算环境Cactus及其应用

mybabys
本科生

分享我的技巧 : 分布式异构计算环境Cactus及其应用

Globus是一个构成网格基础设施的平台,它的作用相当于网格操作系统,担负管理网格资源的重任,但它离具体应用的距离还比较远。如果直接基于Globus编写应用程序,就象直接使用底层API编写Windows程序一样麻烦,那么,为什么不在Globus和应用程序之间搭建一个桥梁呢?Cactus(仙人掌)正是这样一个桥梁。有了Cactus的支持,编写应用程序几乎就不需要考虑网格的具体问题,甚至以前的应用程序可以不加修改就能使用。Cactus项目由德国爱因斯坦研究所领衔开发,参加单位众多,已有多年积累,系统庞大而应用界面简单,因而受到普遍关注,成为最有影响的网格应用项目之一。其代表性应用是求解爱因斯坦方程并模拟出天体的运动规律,相关论文在2001年超级计算会议(Supercomputing 2001)上获得了Gordon Bell奖。



Cactus的思想



Cactus是一种集成的、通用的、开放源码的计算科学和工程问题解决环境。Cactus允许用户将原来在个人计算机上开发的程序(不管它们原来是用C语言、C++写的,还是用Fortran、Java语言写的),转换成能够在虚拟的“网格计算机”上运行的并行程序;Cactus提供了简单、抽象的API调用接口,屏蔽了系统的复杂特性,从而简化了用户界面,获得很强的可移置性;Cactus能够在不同体系结构的机器上运行,如单处理器、集群计算机和其他体系结构的并行计算机;Cactus具有许多先进特征,诸如先进的数字计算技术、自适应的网眼细化、并行I/O、实时远程可视化、远程操控、Web接入等;Cactus中还集成了许多现成的成熟应用模块,只要提供初始数据并修改参数,就可以得到计算结果,减少了重复开发的现象;Cactus环境既可以用来数字相对论中,求解爱因斯坦方程,又可以用在其他领域,诸如天体物理学、化学工程、气象模拟、密码科学等。



Cactus不仅在虚拟的网格超级计算机上建立了庞大的问题求解环境,还带来了一种崭新的“大科学”思想。例如,求解数字相对论这样的问题,不仅需要精通物理学、天文学、数学,还需要精通数字算法、网络工程、计算科学等,这些是任何个人或团体都无法单独完成的。Cactus提供了一个平台,把不同学科的、不同地域的科技工作者凝结在一起。当一个物理学家正在研究爱因斯坦方程的一种新的表达式时,数字分析师可能正在探寻求解其中某种椭圆方程的更有效方法,而计算机科学家正在寻找更有效的并行I/O 算法,而软件工程师正在开发一种新的并行编程环境,硬件生产商正在研制更高效的并行体系结构……Cactus使人类探索未知世界的能力达到了前所未有的高度。



Cactus在其实现上,也具有非常独到之处。Cactus(仙人掌)这个名字本身就体现了它的实现之巧妙:正象仙人掌一样,Cactus由一个主干(flesh)和若干生长在主干上的枝干(thorn)构成,枝干可以任意多个,直接插上主干就能使用,如图 2‑1所示。









图 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 Cactus体系结构





体系结构最上面的一层是应用层,也就是普通用户所能感知的层面:他们只需要指定初始状态、提交初始数据、指定求解问题的精度等,就可以得到计算的结果,而不需要考虑网格计算是在什么样的异构环境中、集结了多少动态的资源、用了什么样的优化算法完成的。



接下来就是Cactus层,它由Cactus主干及主干所融合的大量枝干插件构成。枝干大致可以分为两类:应用枝干和网格枝干。应用枝干用来完成具体的科学计算,比方说求解某种物理方程。应用枝干可用常用的编程语言书写,理