2013-06-16 23 views
8

Pekala, süper bilgisayarımızdaki tek bir iş olarak maskelenen seri MPI işlerini çalıştırmaya çalışıyorum. Ana gönderme komut temelde benziyor: gibi"/ bin/bash -l" Geçersiz seçenek

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

Her sub.script görünür: Her sub.script için bir hatayla karşılaşabilir

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

Ve bazen (işler hemen die):

/bin/bash: - 
: invalid option 
Usage: /bin/bash [GNU long option] [option] ... 
     /bin/bash [GNU long option] [option] script-file ... 
*etc.* 

En ilginç şey, ikinci (veya 3. vb.) Zaman için aynı komut dosyasını çalıştırırsam, herhangi bir sorun olmadan çalışacağı anlamına gelir. Bazen şanslıyım, bazen değil ... Çıkarma -l yardımcı olmaz çünkü bu durumda modüller yüklenemez ve mpirun işe yaramaz. Herhangi bir öneri nasıl düzeltilir?

Çok önceden teşekkürler!

cevap

13

Büyük ihtimalle, içinde göremediğiniz karakterler içeriyordur. Belki yanlış karakter kümesi çeviri kullanılarak kopyalandı/yapıştırıldı veya DOS biçiminde. İkinci durumda, düzeltmek için tofrodos veya dos2unix paketini kullanabilirsiniz.

Her iki durumda da 'vi' veya genellikle^@ veya^M gibi garip karakterler gösterecek başka bir uygulamada çekebilirsiniz. Bu garipliklerin görülmesine yardımcı olabilecek cat -v filename deneyebilirsiniz. Push, hexdump (veya hd veya od) denemek için geliyor.

+1

Oh, çok teşekkürler! Onlar gerçekten DOS formatındaydı. Ama benim için bazen garip, bazen işe yaramazlardı. Ne olursa olsun ... – Eofet

+0

'apt-get update' ' apt-get install tofrodos ' 'fromdos dosya.sh' veya ' todos arşivi.sh' –

İlgili konular