さて、私はスーパーコンピューターで 1 つのジョブとしてマスクされたシリアル MPI ジョブを実行しようとしています。メインの送信スクリプトは基本的に次のようになります。
#!/bin/bash -l
#PBS -l nodes=4:ppn=8,walltime=24:00:00
cat $PBS_NODEFILE | uniq | tr '\\012' ' ' > tmp-$PBS_JOBID
read -a NODE < tmp-$PBS_JOBID
rm tmp-$PBS_JOBID
inode=-1
ijob=0
for ((K=1;K<=8;K++))
do
[ $((ijob++ % 2)) -eq 0 ] && ((inode++))
ssh ${NODE[inode]} _somepath_/RUN$K/sub.script &
done
wait
exit 0
各添え字は次のようになります。
#!/bin/bash -l
#PBS -l walltime=24:00:00,nodes=1:ppn=4
module load intel
module load ompi
export FORT_BUFFERED=1
*run executable*
wait
exit 0
また、sub.script ごとにエラーが発生することがあります (ジョブはすぐに終了します)。
/bin/bash: -
: invalid option
Usage: /bin/bash [GNU long option] [option] ...
/bin/bash [GNU long option] [option] script-file ...
*etc.*
最も興味深いのは、これはランダム エラーであり、同じスクリプトを 2 回目 (または 3 回目など) に実行しても問題なく実行されるということです。幸運な場合もあれば、そうでない場合もあります... -l を削除しても役に立ちません。その場合、モジュールをロードできず、mpirun が機能しないからです。それを修正する方法はありますか?
よろしくお願いします!