急救室 2018-01-07
Document
系统配置/含NFS
$ mpiicc -o test test.c
$ mpirun -r ssh -f mpd.hosts -n <# of processes> ./test
PATH
环境变量中编译器设置正确。使用Intel编译器,确保LD_LIBRARY_PATH环境变量中含有编译库的路径。$ mpicc <path-to-test>/test.c
mpiifort
).Intel MPI 库使用 Multi-Purpose Daemon (MPD) 任务调度机制。为运行使用 mpiicc 编译的程序,首先需要设置好 MPD 守护进程。
与系统管理员为系统中所有用户启动一次 MPD 守护进程不同,用户需要启动和维护自己的一组 MPD 守护进程。这种设置增强了系统安全性,并为控制可执行程序的环境提供了更强的灵活性。
设置MPD的步骤如下:
.zshrc
或 .bashrc
文件中:<installdir>/bin
或者 Intel 64 位架构对应的 <installdir>/bin64
目录,其中 <installdir>
指的是 MPI 的安装路径。可 使用 Intel MPI 库中带有的 mpivars.[c]sh
来设置此变量。LD_LIBRARY_PATH
变量包含有编译器的库目录。可使用编译器中带有的 {icc,ifort}*vars.[c]sh
脚本来设置。创建 $HOME/.mpd.conf
文件,设置 MPD 密码,需要在文件中写入一行:secretword=<mpd secret word>
不要使用 Linux 登陆密码。 <mpd secret word>
可为任意字符串,它仅仅在不同的集群用户对 MPD 守护进程进行控制时有用。
$HOME/.mpd.conf
文件的权限$ chmod 600 $HOME/.mpd.conf
PATH
和 .mpd.conf
内容。 比如在集群的所有节点上执行下面的命令:$ rsh <node> env
$ rsh <node> cat $HOME/.mpd.conf
sshconnectivity
脚本。该脚本使用提供所有节点列表的文件作为参数,每个节点一行:$ sshconnectivity.exp machines.LINUX
-r ssh
或 --rsh=ssh
创建文本文件 mpd.hosts
, 其中列出了集群中所有的节点,每行一个主机名。比如:
$ cat > mpd.hosts node1 node2 ...
$ mpdallexit
$ mpdboot -n <#nodes>
$PWD/mpd.hosts
存在,则会被用作默认参数。如果没有主机名文件,启用 mpdboot
只会在本地机器上运行 MPD 守护进程。mpdtrace
命令检查 MPD
守护进程的状态:$ mpdtrace
mpd.hosts
文件中节点列表符合。Intel MPI 库会动态选择大部分适用的网络结构以便 MPI 进程之间进行通讯。设置环境变量 I_MPI_DEVICE为下表中的某个值:
I_MPI_DEVICE 值 | 支持的结构 |
---|---|
sock | TCP/Ethernet/sockets |
shm | Shared memory only (no sockets) |
ssm | TCP + shared memory |
rdma[: | InfiniBand, Myrinet (via specified DAPL provider) |
rdssm[: | TCP + shared memory + DAPL |
要保证所选择的网络结构可用。比如,使用 shm 只有当所有进程可以通过共享内存进 行通讯时才行;使用 rdma 只有当所有进程可以通过单一的 DAPL 相互通讯时才行。
运行使用 Intel MPI 库连接的程序,使用 mpiexec 命令:$ mpiexec -n <# of processes> ./myprog
使用 -n
参数设置进程数,这是 mpiexec
唯一需要明显指定的选项。
如果使用的网络结构与默认的不同,需要使用 -genv
选项来提供一个可以赋给 I_MPI_DEVICE
变量的值。
比如使用 shm 结构来运行 MPI 程序,可执行如下命令:$ mpiexec -genv I_MPI_DEVICE shm -n <# of processes> ./myprog
比如使用 rdma 结构来运行 MPI 程序,可执行如下命令:$ mpiexec -genv I_MPI_DEVICE rdma -n <# of processes> ./myprog
可以通过命令选择任何支持的设备。
如果应用程序运行成功,可将其移动到使用不同结构的集群中,不需要重新链接程序。