【问题标题】:MPICH stop running across more than one nodeMPICH 停止跨多个节点运行
【发布时间】:2014-10-20 09:20:09
【问题描述】:

我有一个使用 MPICH 的 MPI fortran 应用程序,如果我使用它可以毫无问题地启动/运行:

mpiexec -n 16 -f $PBS_NODEFILE   $PBS_O_WORKDIR/myMODEL.a

在上面的例子中,我问的是 2 个节点,一旦集群上的每个节点有 8 个 cpu。

问题是我的 /home 是通过头节点安装在计算节点上的 NFS,并且对这些磁盘的 i/o 非常慢。此外,我的应用程序有很多 i/o,根据经验,过多的 i/o 到 NFS 安装的磁盘到头节点会锁定头节点(这很糟糕),并且它可能会变得完全没有响应。

集群系统有一个磁盘,每个节点上的每个作业都本地挂载(我可以使用环境变量 TMPDIR 到达这个目录),所以我的作业需要在这个磁盘下运行。知道了这一点,我的策略就很简单了:

  1. 将文件从 /home 移动到 $TMPDIR
  2. 在 $TMPDIR 开始模拟
  3. 模型停止后,将应用程序的输出返回到 /home

如果我做了以上所有步骤,只要求一个节点的集群系统(PBS/Torque),没有问题。

 #!/bin/csh

 #PBS -N TESTE
 #PBS -o stdout_file.out
 #PBS -e stderr_file.err
 #PBS -l walltime=00:01:00
 #PBS -q debug
 #PBS -l mem=512mb
 #PBS -l nodes=1:ppn=8

 set NCPU        = `wc -l < $PBS_NODEFILE`
 set NNODES      = `uniq $PBS_NODEFILE | wc -l`

 cd $TMPDIR
 cp $PBS_O_WORKDIR/myMODEL.a ./myMODEL.a
 mpiexec -n $NCPU -f $PBS_NODEFILE   ./myMODEL.a

但如果我问的不止一个节点

 #!/bin/csh

 #PBS -N TESTE
 #PBS -o stdout_file.out
 #PBS -e stderr_file.err
 #PBS -l walltime=00:01:00
 #PBS -q debug
 #PBS -l mem=512mb
 #PBS -l nodes=2:ppn=8

 set NCPU        = `wc -l < $PBS_NODEFILE`
 set NNODES      = `uniq $PBS_NODEFILE | wc -l`

 cd $TMPDIR
 cp $PBS_O_WORKDIR/myMODEL.a ./myMODEL.a
 mpiexec -n $NCPU -f $PBS_NODEFILE   ./myMODEL.a

我收到以下错误:

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69):​​execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69):​​execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69):​​execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69):​​execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69):​​execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69):​​execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69): execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:1@compute-4-5.local] HYDU_create_process (/tmp/mvapich2-1.8.1/src/pm/hydra/utils/launch/launch.c:69): execvp 文件 /state/partition1/74127.beach.colorado.edu/myMODEL.a 上的错误(否 这样的文件或目录)

[proxy:0:0@compute-0-1.local] HYD_pmcd_pmip_control_cmd_cb (/tmp/mvapich2-1.8.1/src/pm/hydra/pm/pmiserv/pmip_cb.c:955): 断言 (!close) 失败

[proxy:0:0@compute-0-1.local] HYDT_dmxu_poll_wait_for_event (/tmp/mvapich2-1.8.1/src/pm/hydra/tools/demux/demux_poll.c:77): 回调返回错误状态

[proxy:0:0@compute-0-1.local] 主要 (/tmp/mvapich2-1.8.1/src/pm/hydra/pm/pmiserv/pmip.c:226):解复用引擎 错误等待事件

[mpiexec@compute-0-1.local] HYDT_bscu_wait_for_completion (/tmp/mvapich2-1.8.1/src/pm/hydra/tools/bootstrap/utils/bscu_wait.c:70): 其中一个进程严重终止;中止

[mpiexec@compute-0-1.local] HYDT_bsci_wait_for_completion (/tmp/mvapich2-1.8.1/src/pm/hydra/tools/bootstrap/src/bsci_wait.c:23): 启动器返回错误等待完成

[mpiexec@compute-0-1.local] HYD_pmci_wait_for_completion (/tmp/mvapich2-1.8.1/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c:191): 启动器返回错误等待完成

[mpiexec@compute-0-1.local] 主要 (/tmp/mvapich2-1.8.1/src/pm/hydra/ui/mpich/mpiexec.c:405):进程 等待完成的管理器错误

我做错了什么?

【问题讨论】:

    标签: mpich pbs torque mpiexec


    【解决方案1】:

    看起来当 mvapich 在第二个节点上启动进程时,它没有找到您的可执行文件。尝试在您的 mpiexec 之前添加以下内容,以将您的可执行文件和您需要的任何其他内容复制到节点暂存目录。我不是 csh 用户,所以你可以做得更好。

    foreach n ( `uniq $PBS_NODEFILE` )
        scp $PBS_O_WORKDIR/myMODEL.a $n:$TMPDIR
    end
    

    【讨论】:

    • 嘿@chuck。谢谢。就这么简单。我只需要修改一些代码以将完整的地址合并到节点中,然后它就可以完美地工作了。最终版本是: scp $PBS_O_WORKDIR/myMODEL.a username@$n":"${TMPDIR} 。谢谢你的回答,真的。
    • 这只是为了完成答案。在将文件复制到那里之前(使用 shell 创建远程目录),我还需要在节点上创建目录。这个怎么做?简单,使用 ssh: 首先: ssh username@$n mkdir ${TMPDIR} 然后: scp $PBS_O_WORKDIR/myMODEL.a username@$n":"${TMPDIR} ...我希望它对其他人有所帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多