并行计算PC机群的构建 随着计算机硬件技术的高速发展,处理器和网络的性能不断地迅速提高和价格的日益下降,使得并行计算日益从传统的超级计算平台转移到由一组高性能节点或工作站/PC机构成的称之为机群的计算平台上,从而机群成为构建可扩放并行计算机的一大趋势。机群在计算机界有很多称呼,其中松耦合的工作站/PC机群也被称为工作站机群COW(Cluster of Workstation)或工作站网络NOW(Network of Workstation);而紧耦合的高性能服务器节点机群也被称为构筑高端大规模并行机的机群系统(如SP2和Option Red)。 本文将主要从PC机群软、硬件环境的选择及配置出发给出一个逐步的PC机群构建手册,以使广大的科研工作者能够更为方便的在PC机群环境中开展自己的工作。 并行计算机群是目前由于硬件的时效性很强,所以给出例子的意义并不是很大。我们这里给出一套配置主要是为了以后叙述的方便,读者应该根据当前最新的硬件信息进行选择。 PC机群硬件部件的选择 在PC机群的构建过程中,硬件部件应根据所要部署应用的类型又针对性的加以选择,具体原则请参见《并行算法实践》第2.2节(硬件的选择与安装)。本文沿用该章所给出的示例配置,如下: 该PC机群包括1个服务节点(兼作计算节点)和63个计算节点。 (1)服务节点配置: CPU:Pentium Ⅳ 2.0G(512KB全速二级缓存) 内存:1G(2(512M)Rambus 硬盘:80GB IDE 主板:ASUS P4T Socket 423 网卡:3com 905 –TX(两个) 显卡、显示器、键盘、鼠标、光驱、软驱:略 (2)计算节点配置: CPU:Pentium Ⅳ 1.5G(512KB全速二级缓存) 内存:512MB(2(256M) Rambus 硬盘:40GB IDE 主板:ASUS P4T Socket 423 网卡:3com 905 –TX 另外,交换设备由2个3com 3c16980和1个3com 3c16985的交换机通过一个matrix module堆叠而成,并安装了一个千兆光纤模块,以备服务接点连接内部机群的网卡升级为千兆网卡。 据此配置清单,从市场上采购硬件并连接成功后便可以开始机群软件环境的配置。 PC机群软件环境的配置 如《并行算法实践》第2.2节(软件的选择与安装)本节将主要讲述如何在Linux环境下构建并行计算PC机群的软件环境。 OS的选择与安装 Linux是目前构建高性能计算机群的一个最佳的选择。在众多的Linux发行版本中,还要考虑的是系统管理工具的友好性,这一点Redhat与Suse的工作是成功的;同时系统功能的可裁剪性也是很重要的,如Debian系统在这一点上做的就非常出色。 在此笔者建议对Linux系统有比较深入认识的读者可选用Debian作为系统平台,因为Debian能够根据用户的需要最精确的选择安装、更新相应的软件包,避免过多的冗余服务占用系统资源,最大限度的满足用户对性能的要求;若是Linux系统的入门者则选用Redhat或Suse较为合适,因为这些发行版本提供了较为友好的用户安装、使用界面,并且配备了图形化的系统管理工具,避免了众多的命令行操作。 在所创建的示例机群中使用的是Redhat 9.0版本(内核2.4.28)。介绍Linux系统具体安装的书籍有很多,这里就不再敷述。 安装过程中请选择“定制”,并在“选择软件包组”时在默认的基础上选中【服务器】|【网络服务器】(telnet-server、rsh-server)、【服务器】|【服务器配置工具】(NFS等服务器配置工具)、【开发】|【开发工具】(gcc等基本开发工具)、【系统】|【管理工具】(图形化的系统管理工具)等软件包组。 操作系统安装完毕后,我们假设具有如下信息: 服务节点主机名为“node0”,IP地址为“192.168.0.100”;计算节点相应的主机名为“node[1..63]”,IP地址为“192.168.0.[1..63]”。 单一登录(Single Sign On)的构建 用户可以从机群系统的任何一个节点登录,而且在整个作业执行过程中只需登录一次,不必为将作业指派到机群中的其它节点而重新登录。这里我们采用《并行算法实践》中所介绍的第二种方法“构建用户管理脚本”来维护系统中用户信息的一致性,使用户不再重复输入密码即可登录到机群中的另一个节点上。这包括以下步骤: 以root用户登录到节点node0,修改文件/etc/hosts、/etc/host.equiv,在其中写入机群所有节点的名称和IP。  图 1  图 2  图 3  图 4 修改系统的服务设置,通过服务设置工具启动如下系统服务:nfs、rexec、rsh、rlogin。其中后面三个服务是与Remote Shell相关的,负责在远程节点启动进程。  图 5  图 6 经过上述设置后需以普通用户身份测试RSH是否配置成功,运行命令如图7所示。对于root用户需要经过图8所示的配置才可以不重新输入密码即可以通过RSH登录远程节点。  图 7  图 8 通过图9所示的脚本即可以完成创建全局统一的用户信息。该脚本首先在本节点新增用户,然后通过RSH将用户配置文件/etc/passwd复制到机群中所有其余的节点。图9中建立了全局用户cluster。  图 9 单一文件系统(Single File System)的构建 NFS是一种Unix/Linux之间通过网络共享文件的标准方式。使用NFS,就能够透明的安装和访问网络上远程主机的文件系统,将其安装(mount)在本地的文件系统中,类似于Windows下的映射驱动器。在示例机群中,节点node0是服务器,把目录/home和/cluster进行共享;节点node1到node63是客户端,把服务器的/home和cluster安装到自己的文件系统当中。下面分别进行讨论: 首先在节点node0上建立目录/cluster,然后将该目录授权给用户cluster。  图 10 可以通过如图11所示的服务器设置工具配置共享目录,也可以通过图12-13所示的直接修改/etc/exports文件改变目录的共享。图13表示将目录/home和/cluster以可读可写的方式共享给192.168.0.0/24范围(IP从192.168.0.1到192.168.0.254)内的所有机器。  图 11  图 12  图 13 运行命令exportfs –a完成目录的共享。  图 14 客户端节点同样需要首先建立/cluster目录,然后修改分区配置文件/etc/fstab,在其中加入对/home和/cluster的映射。  图 15  图 16 运行命令mount –a完成目录的共享。  图 17 通过图18中的脚本可以将该分区配置文件拷贝到机群中所有其他节点。  图 18 并行编程环境(Parallel Programming Environment)的构建 MPI(Message Passing Interface):消息传递接口MPI目前是最流行的分布存储并行编程环境。MPICH是由美国的Argonne国家实验室开发的基于MPI标准的一套开放源码的软件包,目前最新的版本是1.2.4。从链接http://www-unix.mcs.anl.gov/mpi/mpich/可以获得更多关于MPICH的资料以及下载该软件包。其具体配置步骤如下: 首先需要结压缩安装文件包并通过configure脚本完成初始配置。其中-prefix指定/cluster/mpich为安装目录;--with-device指明所使用的通信系统类型为TCP/IP通信系统;--with-arch指明所使用的操作系统为Linux。  图 19  图 20 完成初始配置之后即可以使用make、make install完成mpich的安装。  图 21  图 22 修改mpich的节点配置文件/cluster/mpich/shar/machines.LINUX,指明该机群所包含的节点。  图 23  图 24 在安装目录的example子目录下可以找到其所提供的示例源程序,通过编译运行cpi程序可以测试该MPI编程环境是否建立成功。  图 25 单一作业管理系统(Single Job Management System)的构建 PBS是由NAS(National Academy of Sciences)开发的面向批作业调度以及系统资源管理的软件包。它主要用于管理使用UNIX或Linux的同构或异构的机群系统。这里主要介绍OpenPBS的安装及简单使用。 首先需要解压缩安装文件包并通过configure脚本完成初始配置。其中-prefix指定/pbs_home为安装目录;--set-server-home指定OpenPBS的spool目录,其用于存放各守护进程的配置文件、log文件以及任务调度的临时数据。--set-default-server指定该机群系统的作业服务守护进程(Job Server)所处的节点为node0。  图 26 完成初始配置之后即可以使用make、make install完成OpenPBS的安装。  图 27  图 28 通过修改服务器节点node0上的OpenPBS配置文件指明该并行运行环境中的节点名称。  图 29  图 30 通过修改客户节点上的配置文件来指明日志文件的记录格式以及服务器节点的名称。  图 31  图 32 完成基本配置后需要首先启动客户节点的OpenPBS守候进程。  图 33 最后启动服务器节点上的三个守候进程。其中对pbs_server的首次启动需要加上-t create参数。启动完成后通过OpenPBS所提供的工具qmgr完成任务队列设置如图35所示。  图 34  图 35 首先转换成预先建立的机群用户cluster并通过OpenPBS的基本命令完成作业的提交以及状态查询。从图37可以看出,该作业以提交并分配在节点node1上执行;图38给出了这次执行输出文件的内容。  图 36  图 37  图 38 图39、40测试了OpenPBS对并行作业的支持,包括作业提交以及状态的查询。  图 39  图 40 结束语 至此,通过以上步骤即完成了一个PC机群系统的构建。该系统通过OpenPBS完成作业的管理,通过mpich完成并行作业的执行。该系统应能基本满足科研用户的一般需求,对于其余一些附加的功能用户可以采用相类似的方法逐步的完善系统。例如可以通过建立更多的脚本完成系统的可控管理(关机、启动等);通过安装HPF等其他的并行编程环境;通过配置OpenPBS的队列实现更完善作业调度。