MPICH を使用する MPI fortran アプリケーションがあります。これを使用すると、問題なく起動/実行できます。
mpiexec -n 16 -f $PBS_NODEFILE $PBS_O_WORKDIR/myMODEL.a
上記の例では、クラスターの各ノードに 8 つの CPU がある場合、2 つのノードを要求しています。
問題は、/home がヘッド ノードを介して計算ノードにマウントされている NFS であり、これらのディスクへの I/O が非常に遅いことです。さらに、私のアプリケーションには多くの I/O があり、経験上、ヘッド ノードへの NFS マウント ディスクへの過剰な I/O により、ヘッド ノードがロックされ (これは悪いことです)、完全に応答しなくなる可能性があります。
クラスタ システムには、各ノードの各 JOB 用にローカルにマウントされたディスクがあり (環境変数 TMPDIR を使用してこのディレクトリにアクセスできます)、ジョブをこのディスクで実行する必要があります。これを知っていれば、私の戦略は非常に単純です。
- ファイルを /home から $TMPDIR に移動します
- $TMPDIR でシミュレーションを開始します
- モデルが停止したら、アプリケーションからの出力を /home に戻します
上記のすべての手順を実行し、クラスター システム (PBS/Torque) を 1 つのノードだけに要求する場合、問題はありません。
#!/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): アサート (!closed) に失敗しました
[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): イベントを待っている demux エンジン エラー
[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): プロセスの 1 つが異常終了しました。中止する
[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): 完了待ちのプロセス マネージャー エラー
私は何を間違っていますか?