Linux中网络并行计算方法介绍

Linux中网络并行计算方法介绍

1977年,DEC公司推出了以VAX为结点机的松散耦合的集群系统,并成功地将VMS操作系统移植到该系统上。20世纪90年代后,随着RISC技术的发展运用和高性能网络产品的出现,集群系统在性能价格比(Cost/Performance)、可扩展性(Scalability)、可用性 (Availability)等方面都显示出了很强的竞争力,尤其是它在对现有单机上的软硬件产品的继承和对商用软硬件最新研究成果的快速运用,从两方面表现出传统MPP无法比拟的优势。

目前,集群系统已在许多领域获得应用。可以预见,随着 SMP产品的大量使用和高性能网络产品的完善以及各种软硬件支持的增多和系统软件、应用软件的丰富,新一代高性能集群系统必将成为未来高性能计算领域的一种主流平台。具有代表性的集群系统有IBM的SP2、SGI的POWER CHALLENGEarray、Microsoft的 Wolfpack、DEC的TruClusters、SUN的SPARCcluster 1000/2000PDB以及Berkeley NOW 等,中国国家智能计算机研究开发中心的曙光-1000A、曙光-2000I和曙光-2000II也都属集群系统。

什么是Beowulf?

集群已经成为现在各高性能计算机厂商的研究热点。据统计,在全球计算能力最强大的500台计算机当中,集群所占的比重从1997年到1999年依次为1台、2台和76台。集群研究的发展势头可见一斑。

Linux作为一个新兴的操作系统,以它为平台来构建集群有很多优点:

1. 廉价:与Windows以及其它商品化Unix操作系统相比,Linux的一个显而易见的优势就是廉价。硬件的花销加上很少的软件费用就可以拥有一个PC工作站或服务器,这方面显然是其它操作系统无法比拟的。而且Linux对于硬件的要求比Windows要低得多。一般的用户也可以利用Linux来构造一个高性能的集群来进行科学计算、实验,在很大程度上它可以替代以往昂贵的大型计算机。

2. 自由开放:自由开放是Linux的一个最迷人的特点。 Linux的开发者从Linus 等寥寥几人发展到全世界将近1000万的庞大用户群,其扩张速度令人刮目。Linux并不仅仅是给用户提供了更多的选择,更重要的是它宽阔的胸怀征服了那些好奇、上进、富于创造精神和协作精神的电脑爱好者。

而开放源码为提高性能提供了更加广阔的空间。开发者可以看到这个系统是怎样跑起来的,然后在操作系统一级进一步提高性能便成为可能。而在Windows或者AIX这样的操作系统中,得到它们的源码已是很不容易,要想舒舒服服地从操作系统着手来优化上层的大型应用更是难上加难。

3. 高效:目前,由于还比较缺乏对Linux的性能和功能评价的系统科学研究,在同等硬件配置和应用环境下,Linux与其他操作系统相比孰优孰劣还不太明了。但是,已经有不少数据说明,作为工作站或小型服务器,Linux已经可以与它的对手一较高低了,尤其是它的网络性能以及可靠性都备受称赞,而这些正是一个高效集群不可缺少的。

Linux环境下的集群系统中比较有影响力的要属Beowulf 集群了。Beowulf(发音为Bay oh wolf或者Bee oh wolf,这个词来自于传说中斯堪的纳维亚人中一个英雄的名字)集群的研究是由美国国家航空航天局(NASA)于1994年上半年发起的。1994年夏天,Thomas Sterling和Don Becker等人构建了一台由以太网连接的拥有16个DX4处理器的集群。他们把这个集群计算机叫做Beowulf。它主要用来进行地球、空间科学的研究。Beowulf的目的主要是使用普通的、相对廉价的计算机构建能够处理繁重计算的集群。此后,Beowulf的思想迅速被世界上许多研究机构认同和接受。 Beowulf集群的研究也热火朝天地开展起来。

关于究竟什么样才能叫做一个真正的Beowulf集群,目前还没有定论。就像我们前面提到的集群体系结构那样,Beowulf集群通常由服务节点(server node),成员节点(client node)通过以太网或者其他网络连接构成。尽管Beowulf 的初衷是使用成熟的大众化的配件来构建集群,现在也有人把为了提高性能而使用了一些专用部件(比如专用的高速互联网络等等)的集群叫做Beowulf集群。

在Beowulf集群上运行的软件是Linux、PVM和MPI。一般由服务节点来控制整个集群。这个服务节点是集群的控制台和对外的网关。在规模比较大的Beowulf集群中有可能出现多个服务节点。比如,专门使用集群中的一个节点来做控制台或统计整个集群的运行状态。通常,Beowulf集群中的成员节点都是哑成员,也就是说,它们不与外界交互。成员节点由服务结点来管理,做服务节点给它们分配的任务。

Beowulf集群与加州大学Berkley分校进行的NOW (Network Of Workstations)项目的研究有非常微妙但却很重要的区别。

Beowulf集群中的成员节点以及内部连接是集群专用的。从这一点来看,Beowulf更像是一台完整的机器,而不是一个由许多计算机组成的松散的群体。大多数集群的节点并没有键盘、显示器等,只是通过远程登录来访问控制它们。就像CPU和内存可以方便地安装到主板上一样,Beowulf的节点作为内置的模块插入 Beowulf集群中。Beowulf集群中的节点之间的连接(通常是高速网络,比如Fast Ethernet、 ATM、 Myrinet等)也是内部专用的。它与集群与外界连接的普通网络相隔离。这些特点使得Beowulf集群中的负载均衡以及结点之间的信赖关系变得更容易处理,因为它们不受外界的影响。而且结点之间的通信也会高效许多。

Beowulf并不是一个软件包,一种新的网络拓扑结构或者内核技术。它是一种使用跑Linux的机器来构建并行虚拟机的思想。尽管有很多软件(比如一些内核的修改,PVM和MPI并行运算库或者一些管理工具)可以使Beowulf体系结构更快,更容易管理和使用,但我们仍然可以只使用Linux来建造一个自己的Beowulf集群。一个最简单的Beowulf集群可以由两台互相连接并且拥有一些信任关系(比如NFS 和rsh权限)的Linux计算机组成。
Beowulf集群的重要模块

撇开并行应用本身不谈,跟任何集群一样,Beowulf的性能取决于下面几个因素:节点本身、节点之间互联设备、底层通信软件(包括互联设备的驱动)、全局资源管理系统以及并行计算环境(PVM或MPI)等等。

对于给定的应用问题,在节点数一定的条件下,则由以下三个方面的因素来决定并行处理的速度。首先是应用问题求解的算法,其次是处理结点软硬件的速度。另外,由于应用问题的不同部分之间往往有着某种数据依赖关系,不同部分之间需要进行一定的通信,因此通信性能成了另外的一个因素。下面,我们将着重介绍高性能集群的通信子系统:底层互联设备、底层通信软件以及并行计算环境。从下图可以看到,这几个部分对于整个集群的性能来说都是非常重要的。

· 底层互联网络

在集群系统中,分布在各个节点上的进程之间通常有大量的信息要交换,这都要通过互联网络来实现。因此,互联网络性能的优劣会直接影响信息交换的速率和效率,进而影响整个集群系统的整体性能。

理想状态下互联网络应该具有以下特征:

☆?较短的通信延时(Latency)

☆?较高的通信带宽(Bandwidth)

☆?极小的错误率(Error Rate)

☆?较好的可扩展性(Scalability)

集群中经常使用的互联设备有快速以太网、ATM网络、 Myrinet以及专用的mesh网络等等。

· 底层通信软件

底层通信软件是集群通信效率高低的关键。在这一层所要关心的问题是协议问题。TCP/IP协议把各种各样异构的机器连接起来,组成一个实际的计算机网络。这种强大的兼容性却往往需要以效率作为代价。比如用户的消息从发送方到接收方一般要经过多次拷贝(从发方用户空间拷贝到核心空间,从核心空间拷贝到接收方用户空间以及中间进行差错校验,重发机制等等带来的拷贝)。而统计表明,每增加一次拷贝,通信的效率就会降低至少20%。而在集群中,就采用一些专门的技术来解决这些问题。比如用户级通信技术用来减少通信软件进入操作系统核心的次数,零拷贝技术减少消息通路上的拷贝次数等等。

· 网络并行计算软件

有了高速网络和简洁高效的底层协议,集群并行计算软件的任务就是在提供完备的并行计算语义的情况下,尽量地把底层物理性能提供给上层的并行应用。集群(包括Beowulf)中最流行的两个并行计算环境是PVM 和MPI。

PVM(Parallel Virtual Machine)是由美国 田纳西大学、奥克里季国家实验室等研制的并行程序开发环境。它可以把多个异构的计算机组织起来成为一个易于管理的、可扩展的、易编程使用的并行计算资源。它的各个计算结点可以是共享存储或分布式存储的多处理机或者是向量超级计算机、专用的图形、标量工作站。这些异构的计算节点可以通过多种网络(比如Ethernet、FDDI等等)互联,成为一个网络计算虚拟机。用户的计算任务被分配到各个计算节点上,多个节点并行运算,从而实现粗粒度的并行。

PVM的免费、开放以及易用使其成为一个被广泛接受的并行程序开发环境,有很多并行机公司都宣布支持PVM、PVM 可以安装到各种Unix、 Windows操作系统上运行。所有这些又有力地促进了PVM的推广。现在所有的并行机都支持PVM3。

MPI是并行计算机的消息传递接口标准。指定该标准的主要目的是为了提高并行程序的可移植性和使用的方便性。有了统一的标准,并行计算环境下的应用软件库以及软件工具就都可以透明的移植。各个厂商可以依据标准提供独具特色和优势的软件实现和硬件支持,从而提高并行处理的能力。

MPI没有简单地指定某系统为标准,而是吸取许多已经广泛应用的消息传递系统的特点。它在采纳已有系统优点的基础上,增加了许多新的特点,从而使其成为非常有吸引力的标准。