首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从bash脚本批处理模式运行mpi作业

从bash脚本批处理模式运行mpi作业
EN

Stack Overflow用户
提问于 2014-04-16 11:13:08
回答 3查看 2K关注 0票数 2

我正在尝试构建一个脚本,它在特定时间以批处理模式运行mpi作业。如果我在控制台mpdallexitmpdbootmpirun中运行,一切正常,并行作业将在mpd.hosts中的所有节点上启动。但是,如果我试图从bash脚本(现在与at script一起发送+1分钟)运行,mpd就会崩溃,并且不会启动作业。

这是脚本中的相关行

代码语言:javascript
运行
复制
$path_mpi/mpdallexit 
$path_mpi/mpdboot -n 5 &
time $path_mpi/mpirun -n 21 ./rams60 -f RAMSIN.operatiu 
$path_mpi/mpdallexit

以及日志中的错误消息。

代码语言:javascript
运行
复制
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不同的选项。

代码语言:javascript
运行
复制
--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)

代码语言:javascript
运行
复制
mpdboot -n 5 &

但没有成功

安装于/usr/local/mpich2-1.0.5p4/

编辑1:

在尝试了关于睡眠的@shellter建议之后,我无法运行并行作业,也无法使用at,也不能运行cron。在发出批处理mpirun作业时,一些进程从主节点开始,但不在其他集群节点中启动:

在主节点中

ps -ef grep报meteo 28043 26837 0 Apr21 ?00:00 time /usr/bin/mpirun -n 50 -f machinefile ./ rams 60 -f RAMSIN.operatiu meteo 28044 28043 0 Apr21 ? 00:00:00 /usr/bin/mpirun -n 50 -f machinefile ./rams 60 -f RAMSIN.operatiu meteo 28050 28045 0 Apr21 ? 00:00:00 /rams 60 -f RAMSIN.operatiu meteo 28051 28045 0 Apr21 ? 00:00:00。/rams60 -f RAMSIN.operatiu meteo 28052 28045 0 Apr21 ? 00:00:00 ./rams60 60 -f RAMSIN.operatiu meteo 28053 28045 0 Apr21 ?00:00 ./rams60 60 -f RAMSIN.operatiu meteo 28054 28045 0 Apr21 ? 00:00:00。/rams60 -f meteo 28055 28045 0 Apr21 ? 00:00:00。/rams60 -f RAMSIN.operatiu meteo 28056 28045 0 Apr21 ? 00:00:00 :00。/rams60 -f RAMSIN.operatiu meteo 28057 28045 0 Apr21 ? 00:00:00 ./rams60 60 -f RAMSIN.operatiu meteo 28058 28045 0 Apr21 ?00:00 ./rams60 60 -f RAMSIN.operatiu meteo 28059 28045 0 Apr21 ? 00:00:00 ./rams60 60 -f RAMSIN.operatiu meteo 28060 28045 0 Apr21 ? 00:00:00。

此外,rams60没有创建任何输出文件,而它的第一件事是编写开始分析文件。

如果在命令行中执行脚本,一切都会正常运行,但在批处理时,mpich似乎无法与节点通信。

首先,我在主节点中安装了mpich2,并将NFS导出到其他节点。现在,我已经在每个节点上安装了mpich2。

谢谢

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-20 07:45:25

最后,我可以解决cron工作的问题,多亏了“mpich-洽谈”邮件列表中的Goullardet。

问题来自于运行批处理作业的环境。Cron使用最小的环境,所以在集群节点中找不到我的工作所需的一些库。我不得不在我的脚本中添加一行,导出一些lib:

代码语言:javascript
运行
复制
export LD_LIBRARY_PATH=/usr/local/mpich2-1.0.5p4/lib:/usr/local/hdf5/lib:$LD_LIBRARY_PATH

现在一切都很好,我的脚本一天运行两次。谢谢大家的帮助,在这个过程中,我学到了一些关于cron的知识。

票数 0
EN

Stack Overflow用户

发布于 2014-04-27 09:30:39

错误信息非常清楚:

代码语言:javascript
运行
复制
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选项。

票数 1
EN

Stack Overflow用户

发布于 2014-04-28 04:30:30

您可以使用屏幕为脚本提供tty,因为cron、at或嵌套脚本在默认情况下不会分配脚本。如果必要的话,你可以用这种方式连接到它上。

代码语言:javascript
运行
复制
screen -D -m <command>

这将在一个独立的屏幕会话中启动您的命令,该会话将在命令完成时退出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23107758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档