好吧,我正在尝试在我们的超级计算机上运行隐藏为一项作业的串行 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
有时我会遇到每个子脚本的错误(作业立即终止):
/bin/bash: -
: invalid option
Usage: /bin/bash [GNU long option] [option] ...
/bin/bash [GNU long option] [option] script-file ...
*etc.*
最有趣的是,这是一个随机错误,这意味着如果我第二次(或第三次等)运行相同的脚本,它将运行没有任何问题。有时我很幸运,有时我不是......删除 -l 不会有帮助,因为在这种情况下模块无法加载并且 mpirun 将无法工作。有什么建议如何修复它吗?
预先非常感谢!
您的脚本中可能有您看不到的字符。也许它是使用错误的字符集转换复制/粘贴的或者是 DOS 格式。对于后者,您可以使用 tofrodos 或 dos2unix 包来纠正。
无论哪种情况,您都可以在“vi”或其他应用程序中将其拉出,这些应用程序通常会显示奇怪的字符,例如 ^@ 或 ^M。你可以尝试cat -v filename
这可能有助于发现这些奇怪的现象。到了紧要关头,请尝试 hexdump(或 hd,或 od)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)