以批处理模式从bash脚本运行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 -

我试图构建一个脚本,在特定时间以批处理模式运行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 -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