我有一个使用 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 来到达这个目录),所以我的作业需要在这个磁盘下运行。知道了这一点,我的策略就很简单了:
- 将文件从 /home 移动到 $TMPDIR
- 在 $TMPDIR 开始模拟
- 模型停止后,将应用程序的输出返回到 /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):进程管理器错误等待完成
我究竟做错了什么?