以批处理模式从bash脚本运行mpi作业
我试图构建一个脚本,在特定时间以批处理模式运行mpi作业。如果在控制台中运行以批处理模式从bash脚本运行mpi作业,bash,mpich,Bash,Mpich,我试图构建一个脚本,在特定时间以批处理模式运行mpi作业。如果在控制台中运行mpdallexit,mpdboot和mpirun一切正常,并行作业在mpd.hosts中的所有节点上启动。但是,如果我尝试从bash脚本运行(使用at script now+1分钟发送),mpd将崩溃,并且不会启动任何作业 这是脚本中的相关行 $path_mpi/mpdallexit $path_mpi/mpdboot -n 5 & time $path_mpi/mpirun -n 21 ./rams60 -
mpdallexit
,mpdboot
和mpirun
一切正常,并行作业在mpd.hosts中的所有节点上启动。但是,如果我尝试从bash脚本运行(使用at script now+1分钟发送),mpd将崩溃,并且不会启动任何作业
这是脚本中的相关行
$path_mpi/mpdallexit
$path_mpi/mpdboot -n 5 &
time $path_mpi/mpirun -n 21 ./rams60 -f RAMSIN.operatiu
$path_mpi/mpdallexit
以及来自日志的错误消息
mpiexec_ventus: cannot connect to local mpd (/tmp/mpd2.console_meteo); 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.
我尝试了mpdboot的不同选项
--loccons says you do not want a console available on local mpd(s)
--remcons says you do not want consoles available on remote mpd(s)
或
但没有成功
Mpich安装在/usr/local/mpich2-1.0.5p4/
编辑1:
在尝试@shelleter建议睡眠后,我无法运行并行作业,也无法使用at
或cron
。发出批处理mpirun
作业时,某些进程在主节点上启动,但在其他群集节点上不启动:
在主节点中
此外,rams60不创建任何输出文件,而它所做的第一件事就是编写开始分析文件
如果在命令行中执行脚本,一切都会正常运行,但在批处理时,mpich似乎无法与节点通信
首先,我在主节点中安装了mpich2,并将NFS导出到其他节点。现在我已经在每个节点上安装了mpich2
谢谢
提前感谢错误信息非常清楚:
mpiexec_ventus: cannot connect to local mpd (/tmp/mpd2.console_meteo); possible causes:
1. no mpd is running on this host
2. an mpd is running but was started without a "console" (-n option)
我想你的mpd正在运行,所以。。。选中它的
-n
选项。您可以使用screen为脚本指定tty,因为cron、at或嵌套脚本默认不分配tty。这样,您可以在必要时附加到它
screen -D -m <command>
screen-D-m
这将在一个分离的屏幕会话中启动您的命令,该会话将在命令完成时退出。最后,由于“mpich讨论”邮件列表中的Gilles Goullardet,我可以解决cron作业的问题 问题来自运行批处理作业的环境。Cron使用最小的环境,因此在集群节点中找不到我的作业所需的一些lib。我不得不在我的脚本中添加一行导出一些lib:
export LD_LIBRARY_PATH=/usr/local/mpich2-1.0.5p4/lib:/usr/local/hdf5/lib:$LD_LIBRARY_PATH
现在一切正常,我的脚本每天运行两次。谢谢大家的帮助,在这个过程中,我学到了一些关于cron的知识。也许mpdboot需要几秒钟的
睡眠
将它与下面的cmd分开?祝你好运。Hi@shellter最后,我尝试在脚本中构建一个函数,在脚本开始时检查mpd(mpdtrace输出)。如果检查失败,则在mpdboot
和mpdtrace
之间使用sleep 10
。当从命令行运行脚本时,这似乎起作用,我将尝试使用cron并让您知道。谢谢,在启动时使用不起作用。很抱歉,但“不起作用”并没有给我们太多的帮助。您是否有证据表明您的mpd
程序已经启动,或者您是否看到错误消息,如pdm:command not found
(或类似消息)。考虑用这个信息编辑你的问题,所以任何人都可以帮助。祝你好运。Hi@Shelleter和“不起作用”我的意思是“没有变化”。但你是对的,我这边的更多信息将帮助人们帮助我。我编辑了这个问题。谢谢你的回答。我认为这个错误是从一开始就出现的。然后我发出mpdboot-n5&
和mpirun-n21命令
我不熟悉该软件,但是。。正如本文所述,您应该运行mpd
。问题是你有没有(我想你有),它是用-n
运行还是不用。如果使用ps
时它不可见,请尝试cat/proc//cmdline
如何使用屏幕
screen-D-m myscript
或在我的脚本内部screen-D-m mpirun…
?谢谢你的回答。
screen -D -m <command>
export LD_LIBRARY_PATH=/usr/local/mpich2-1.0.5p4/lib:/usr/local/hdf5/lib:$LD_LIBRARY_PATH