21

さて、私はスーパーコンピューターで 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 が機能しないからです。それを修正する方法はありますか?

よろしくお願いします!

4

2 に答える 2

27

スクリプトには、見えない文字が含まれている可能性があります。おそらく、間違った文字セット変換を使用してコピー/貼り付けされたか、DOS 形式になっている可能性があります。後者の場合、tofrodos または dos2unix パッケージを使用して修正できます。

どちらの場合でも、「vi」または通常 ^@ や ^M などの変な文字を表示する別のアプリケーションでプルアップできます。cat -v filenameこれらの奇妙な点を確認するのに役立つ可能性があるものを試すことができます。プッシュが来ると、hexdump (または hd、または od) を試してみてください。

于 2013-06-16T19:23:45.277 に答える
4

これに遭遇したばかりで、無効な行末がありました。CRLF から LF に変更したところ、修正されました。

于 2019-05-11T02:49:38.997 に答える