0

我有一个使用 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 安装的磁盘到头节点会锁定头节点(这很糟糕),并且它可能会变得完全没有响应。

集群系统有一个磁盘,在每个节点上为每个 JOB 本地挂载(我可以使用环境变量 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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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):文件 /state/ 上的 execvp 错误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] main (/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] main (/tmp/mvapich2-1.8.1/src/pm/hydra/ui/mpich/mpiexec.c:405):进程管理器错误等待完成

我究竟做错了什么?

4

1 回答 1

3

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

foreach n ( `uniq $PBS_NODEFILE` )
    scp $PBS_O_WORKDIR/myMODEL.a $n:$TMPDIR
end
于 2014-08-27T13:15:52.877 回答