2013-06-16 61 views
8

私は、スーパーコンピュータで1つのジョブとしてマスクされたシリアルMPIジョブを実行しようとしています。メイン提出スクリプトは、基本的には以下のようになります。"/ bin/bash -l"無効なオプション

#!/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 

各sub.scriptは、次のようになります。

#!/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は動作しないからである。どのようにそれを修正するための任意の提案?

ありがとうございます!

答えて

13

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

いずれの場合でも、通常は「vi」または^ @または^ Mのような奇妙な文字を表示する別のアプリケーションでプルすることができます。あなたはこれらの奇妙を見るのに役立つcat -v filenameを試すことができます。プッシュは、hexdump(またはhd、またはod)を試してみることになります。

+1

ああ、ありがとう!彼らは確かにDOS形式でした。しかし、時々彼らは働き、時にはそれはしなかったことは私には奇妙です。何でも.. – Eofet

+0

'apt-get update' ' apt-get tofrodos' 'fromdos file.sh' または ' todos archive.sh' –

関連する問題