在联网的多台机器上安装、配置MPI 并行环境

来源:互联网 发布:美工电脑配置清单 编辑:程序博客网 时间:2024/06/16 11:35

在联网的多台机器上安装、配置MPI 并行环境


Linux 系统的安装要求与前一节单机环境一样。此外,在开始下面的步骤之前还应该先配置好TCP/IP 网络连接。为避免额外麻烦, 在配置网络时请不要开启任何防火墙设置。
此外,为方便相互访问,将所有机器的主机名放在/etc/hosts 文件中。可以在所有机器上使用同样的/etc/hosts 文件,它包含如下形式的内容:
127.0.0.1 localhost.localdomain localhost
10.10.10.1 node1.mydomain node1
10.10.10.2 node2.mydomain node2
... ... ...
10.10.10.n noden.mydomain noden
(按真实情况替换其中的主机名和IP 地址)。
下面介绍的方法使用NIS (Network Information Service, 也叫做SUN Yellow Pages) 管理用户帐号,使用NFS (Network File System) 共享用户目录。
首先根据情况选择一台机器作为NIS 和NFS 服务器,我们将该机器称为服务结点或主结点机,而其它机器称为从结点机。主结点机和从结点机的配置方式不同,下面将分别介绍。
1 设置NFS
主结点机
创建目录:
mkdir -p /home/local
将/usr/local 链接到/home/local:
/bin/rm -rf /usr/local
ln -s /home/local /usr/.
(注: 如果以前的/usr/local 中安装有有用的文件, 则在执行上述命令前应该将其拷贝或移
走)。
确认在主结点机上安装了nfs-utils 包。开启NFS 服务:
/sbin/chkconfig nfs on
/sbin/chkconfig nfslock on
/etc/init.d/nfslock restart
/etc/init.d/nfs restart
在文件/etc/exports 中加入下面一行:
/home *(rw,no_root_squash)
它将/home 目录输出给所有机器。(注: 出于安全考虑可以限制仅将目录输出给指定的结点机, 及将no_root_squash 改成root_squash。请用命令man 5 exports 查看相关参数的写法)。
输出指定目录(/home):
exportfs -a
(也可重新启动系统)。
从结点机创建目录:
mkdir -p /home
在文件/etc/fstab 中加入下面一行:
<主结点机名>:/home /home nfs defaults 0 0
(将<主结点机名> 替换成主结点机的主机名或IP 地址)。
运行命令:
/sbin/chkconfig netfs on
它使得系统启动时自动挂接主结点机上的/home 目录。
运行命令:
mount /home
(也可重新启动系统)。
将/usr/local 链接到/home/local:
/bin/rm -rf /usr/local
ln -s /home/local /usr/.
(注: 如果以前的/usr/local 中有有用的文件, 则在执行上述命令前应该将其拷贝或移走)。
上述所有操作必须以root 身份执行。本步骤完成后,所有结点机上的/home 和/usr/local 目录的内容应该是一样的。在从结点机上可用命令df 检查挂接情况。
有关NFS 的进一步材料可在网上搜索“NFS” 等关键字。
2 设置NIS
以下描述中假设以‘CLUSTER’ 作为NIS 域名。
主结点机
确认安装了下述包:
ypserv, ypbind, yp-tools
在文件/etc/sysconfig/network 中加入下面一行:
NISDOMAIN=CLUSTER
开启NIS 服务:
/sbin/chkconfig ypserv on
/etc/init.d/ypserv start
初始化NIS 数据库:
/usr/lib/yp/ypinit -m
程序运行时按Ctrl-D, 然后按“y” 和回车。该命令将生成NIS 数据库。可以忽略
No rule to make target ...
之类的错误信息。
开启NIS 客户程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start
验证NIS 设置
– 命令“ypwhich” 应该显示出主结点机主机名。
– 命令“ypcat passwd” 应该显示出(主结点机上的) 用户帐号。
从结点机
确认安装了下述包:
ypbind, yp-tools
在文件/etc/sysconfig/network 中加入下面一行:
NISDOMAIN=CLUSTER
开启NIS 客户程序:
/sbin/chkconfig ypbind on
/etc/init.d/ypbind start
验证NIS 设置
– 命令“ypwhich” 应该显示出主结点机主机名。
– 命令“ypcat passwd” 应该显示出主结点机上的用户帐号。
为了能够使用NIS 用户登录,还需要修改/etc/nsswitch.conf 文件,使其包含下述设置:
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
注意在从结点机上不要重复定义用户信息,即在从结点机上应该将所有NIS 用户(可用命令
“ypcat passwd” 显示出来) 从文件/etc/passwd 和/etc/shadow 中删除,将所有NIS 组(可用命令
“ypcat group” 显示出来) 从文件/etc/group 中删除。
完成NIS 配置后,创建新的用户帐号只需在主结点机上进行(注意将用户的主目录放到/home下), 然后运行命令“cd /var/yp; make” 即可。
如果在主结点机上修改了一个用户帐号信息,也应该运行一次上述命令以刷新NIS 数据库。
NIS 用户在从结点机上不能用“passwd” 命令修改用户口令,而必须用“yppasswd” 命令来修改。
上述所有操作必须以root 身份执行。
有关NIS 的进一步材料可在网上搜索“NIS” 等关键字。
3 设置rsh
确认安装了3.4.1 中列出的包。
将所主机名加到文件/etc/hosts.equiv 中。
开启rsh 服务:
/sbin/chkconfig rsh on
注: 为使root 用户能够用rsh 执行远程命令,需将/etc/hosts.equiv 文件拷贝/root/.rhosts,
并在文件/etc/securetty 中加入“rsh”。
上述操作必须在所有结点机上以root 身份进行。
完成上述设置后, 在任何一台结点机上应该可以在所有结点机(包括自己) 上执行远程命令。可按如下方法测试:
以一个NIS 用户登录到一个结点机上并运行命令:
rsh 另一台结点机名/bin/hostname
如果配置正确该命令应该显示对方主机名。如果出错可查看对方/var/log/messages 文件中的错误信息。
注意保证shell 初始化文件(.cshrc, .profile, .bashrc 等) 不要往stdout 和stderr 输出任何
信息,即上述命令的输出除了主机名外不应该有任何其它内容。否则可能影响到MPI 进程的启动。
4 MPICH 的安装
MPICH 的安装与单机下的安装完全一样,只需在主结点机上进行,因为所有结点机/usr/local
目录是共享的。此外,需要将文件
/etc/profile.d/mpich.sh
/etc/profile.d/mpich.csh
拷贝到所有结点机上。
5 MPICH 程序的编译、运行
MPICH 程序的编译可以在任何一台结点机上用mpicc (C), mpif77 (Fortran), mpiCC (C++) 等命令进行。它们是MPICH 提供的shell 脚本,用法与普通的C/C++/Fortran 编译器一样。
MPICH 程序的运行方式取决于编译MPICH 系统时选择的底层driver。这里介绍的编译方式使用ch_p4 作为底层driver, 这种情况下有两种方法选择运行一个MPI 程序使用的结点机和进程数, 即:
1。 mpirun -machinefile 文件名-np 4 MPI程序名[MPI程序参数]
文件文件名中列出希望使用的结点机名,一行一个:

结点机名1

结点机名2

结点机名3

结点机名4

mpirun 将在给定的结点机上启动指定数目的进程(这里是4)。当进程数目大于结点机数目时mpirun 会在一些结点机上启动两个或更多进程。命令“mpirun -help” 可以显示一个mpirun 的简要使用说明。
2。 ./MPI程序名-p4pg 文件名[MPI程序参数]
这种方式可以精确控制在每台结点机上启动的MPI 进程数与进程序号,并且允许在不同结点机上启动不同的可执行文件(适用于Master/Slave 模式的并行程序)。文件文件名中按下列格式列出各结点机上启动的程序名:
结点机名1 0 可执行文件名1
结点机名2 1 可执行文件名2
结点机名3 1 可执行文件名3
... ...
结点机名n 1 可执行文件名n
其中结点机名1 必须是运行该命令时所在的结点机, 可执行文件名1 必须与命令行上的MPI程序名为同一文件。所有可执行文件名必须使用绝对路径(如/home/zlb/test/cpi)。通常情况下,所有可执行文件名是一样的。而当同一结点机名出现多次时表示在该结点机上启动多个进程。
例如,假设用户在结点机node1 的/home/zlb/test 目录下,该目录中有已经编译好的MPI程序cpi。在该目录下创建一个名为p4file 的文件,它包含如下内容:
node1 0 /home/zlb/test/cpi
node2 1 /home/zlb/test/cpi
node1 1 /home/zlb/test/cpi
node2 1 /home/zlb/test/cpi
则命令“./cpi -p4pg p4file” 将在node1, node2 上运行四个进程, 其中进程0 和进程2 在node1 上, 进程1 和进程3 在node2 上。

原创粉丝点击