问题描述:
想在高性能计算中心集群上运行一个简单的mpi程序,输入命令
mpirun -n 4 ./Demo_00.exe
后却出现如下提示:
mpiexec_logon01: cannot connect to local mpd (/tmp/mpd2.console_ycai); possible causes:
1. no mpd is running on this host
2. an mpd is running but was started without a "console" (-n option)
In case 1, you can start an mpd on this host with:
mpd &
and you will be able to run jobs just on this host.
For more details on starting mpds on a set of hosts, see
the MPICH2 Installation Guide.
解决办法:
$ cd $HOME
$ touch .mpd.conf
$ chmod 600 .mpd.conf
然后运行mpdboot。
然后运行就没问题了,不过运行的时候要注意这样用命令:
mpirun -n 4 ./Demo_00.exe
不要这样: mpirun -n 4 Demo_00.exe ,这样出现如下提示:
problem with execution of Demo_00.exe on logon01: [Errno 13] Permission denied
problem with execution of Demo_00.exe on logon01: [Errno 13] Permission denied
problem with execution of Demo_00.exe on logon01: [Errno 13] Permission denied
P.S:本文在解决问题时参考帖子:点击打开链接
另外可以阅读该文章:点击打开链接
总结:
这个问题的出现有可能是没有启动mpd,mpd的启动命令是mpdboot,所以说一般用mpdboot启动mpd就好了,启动前可以先用mpdtrace命令查看是否有mpd进程。
另外退出mpd的命令是mpdallexit
附 MPI常见命令:
1. mpdboot:
启动集群mpd守护进程,在运行MPI程序前必须开启每个节点上的mpd守护进程。
常用的参数: -n nodenum,需要启动的节点数量
-f hostsfile节点列表,与-n 一起使用表示启动节点列表中的nodenum个节点。
若没有-n选项,则只启动本地mpd进程。
2. mpdtrace:
查看集群mpd守护进程。
常用参数: -l 输出mpdid和IP
3. mpdexit:
杀死mpd守护进程。
常用参数: mpdid
4. mpdallexit:
杀死所有的mpd守护进程。
5. mpicc:
MPI程序编译命令。
常用参数: -g 加入调试信息。
6. mpiexec:
MPI程序运行命令,运行前必须开启mpd守护进程。
常用形式: mpiexec
mpiexec : \
mpiexec –configfile
其中, 全局选项运用于所有MPI进程。
本地选项应用于部分MPI进程集合。
可执行文件的路劲。
包含命令行选项的文件。
全局选项中常用参数:-gdb 调试运行
-machinefile MPI进程分配文件。
本地选项中常用参数:-n num 设置执行MPI程序的进程总数
注意:全局选项和本地选项顺序不要弄错。
7. mpirun:
MPI程序快速执行命令,运行前不必运行mpdboot开启守护进程。
8. mpd测试命令:mpdcheck和mpdringtest
mpdcheck用来检查mpi安装和运行时的故障和异常。
mpdringtest测试一个mpd回环的传输时间。
9. mpd帮助命令:mpdhelp
mpdhelp显示所有mpd命令。