(4) 星群系统(Constellation):系统由节点构成,每个节点是一台SMP或DSM子系统,包含的处理器数量巨大,计算功能十分强大。节点间通过集群交换机连接,节点间分布存储。各个节点运行专用的操作系统、编译系统和作业管理系统。与集群系统所不同的是,星群系统可以支持消息传递和共享存储两种并行编程模式:在节点间使用消息传递,节点内部则可以使用共享存储模式,这种混合模式充分利用了两种编程模式的特点,因此被认为是最有效率的编程模式。
(5) 大规模并行计算机系统(Massively Parallel Processing, MPP):由数百个乃至数千个结算节点和I/O节点组成,每个节点相对独立,并拥有一个或多个微处理器。这些节点的局部cache通过局部总线或互联网络与局部内存模块和I/O设备相连接。互联网络与集群互联网络不同,一般采用由多种静态拓扑结构耦合而成的混合拓扑结构,通信延迟和通信带宽明显优于集群系统。每个节点均拥有不同的操作系统,允许用户在某个特定节点上作业。各节点间内存模块相互独立且没有全局内存统一编址。如果要直接访问其他节点的内存则需要有操作系统的支持。MPP支持消息传递或高性能Fortran并行程序设计,但不支持共享存储模式。
各种并行计算机对于消息传递、共享存储、数据并行三种编程模式的支持在表2.3中列出。
SMP
DSM
集群
星群
MPP
消息传递
√
√
√
√
√
共享存储
√
√
X
√
X
数据并行
√
√
X
X
√
表2.3 各种并行计算机对与编程模式的支持
2.3 小结数据仓库的应用日渐广泛,但是数据量的增长使得OLAP系统的效率逐渐低下和数据立方体的容量呈指数上升。数据立方体的预计算需要大量的计算能力和存储空间,随着并行计算技术的发展,数据仓库将会更多地使用到并行计算技术。并行计算技术带来的不仅仅是计算能力和存储空间上的扩展,并行计算技术对于计算机性能的扩展使得更多更复杂的应用技术得以实现,扩展数据仓库的功能。
第三章 MPI
消息传递是一个广泛应用在并行计算机(特别是分布存储并行机:DSM、集群、星群和MPP)上的模式。自从20世纪80年代以来,经过10余年的发展,很多基于消息传递的应用系统有了长足的进步。由于基于消息传递模式的系统很多都具有效率高、适用性强等优点,所以人们认为通过定义一个核心库程序的语法与语义,将有益于广大用户,将可以在更大范围的机器上有效实现消息传递模式。本章的主要内容是介绍目前最为流行的基于消息传递模式的编程环境:MPI。在以下的章节中会介绍MPI的产生、MPI的实现和关于MPI编程的基本概念。
3.1 MPI的产生早期的商用并行计算机很多是基于消息传递的,因为它的成本相对于共享存储的机器更低。人们开发了基于消息传递模式的多种不同实现的消息传递程序库,但是这些程序库就像汇编语言一样,每个硬件制造商提供的程序库都与其他的不兼容。这些不同的程序库之间的实质上的差别其实很小,有的只是语法上的不同而已,但是要想将消息传递程序从一个库移植到另一个库中时,程序往往要作出很大程度的修改。由此人们便意识到需要指定一个消息传递程序设计的接口标准,以便并行计算科学的进一步发展,消息传递接口(MPI:Message Passing Interface)便是这个标准的产物。
MPI的标准化开始于1992年4月底,在美国弗吉尼亚州的Williamsburg召开的“分布式存储环境中消息传递标准”的讨论会上[MPI03a]。MPI1.0标准由Dongarra, Hempel, Hey以及Walker在1992年11月提出的初始草案和于1993年2月完成的修订版本所规定。为了促进MPI的发展,MPI论坛(MPI Forum)因此而诞生,负责MPI的完善和维护工作。
MPI-2[MPI03b]是在对原来MPI作了重大扩充基础上,于1997年7月推出的MPI扩展部分,原来的MPI各种版本改称为MPI-1。MPI-2的扩充很多,但最主要的是以下三部分:并行I/O,远程存储访问和动态进程管理。
MPI的标准化是多个组织和个人的努力成果,他们主要是来自美国和欧洲,大约60名来自40个不同组织的工作人员为此付出了辛勤的劳动。这其中包括了并行计算机大多数的并行计算机生产商、大学、政府实验室和工厂的研究人员。他们有Venus (IBM) 、NX/2 (Intel) Express (Parasoft)、 Vertex(nCUBE)、 P4 (ANL)、 PARMACS (ANL), 还包括Zipcode (MSU)、 Chimp (Edinburgh University)、 PVM (ORNL, UTK, Emory U.) 、Chameleon (ANL)、 PICL (ANL)等。
MPI建立了一套有效的、可移植的、灵活的标准,并已经成为国际上应用最为广泛的并行程序设计平台。MPI可以使用于几乎所有的并行计算环境(共