24小时热门版块排行榜    

查看: 2314  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

新丰客

木虫 (小有名气)

[求助] shell脚本问题

写shell脚本提交sge,但提交集群之后qstat显示run一会就Eqw。刚刚接触shell脚本,跟着书学了一遍,sge以及mpi用法都是临时查网上的。主要疑问有这几个:
0,先说我要做的,就是通过不同大小的k点数目来测试其在多少k点时候能量已经开始收敛。我的做法是把pwscf的脚本K_POINTS部分先删掉成beta12.ktest.in文件,然后创建一个$k_points.in的文件存放不同的k点,然后用cat将原来pwscf脚本beta12.ktest.in文件连接起来成为一个新脚本conjunction.in。这些都通过for(())循环来用pw.x来执行。
1,shell虽然都当作字符处理但是我的np已经声明declare过了为何错误提示还会说Unable to read script file because of error: Numerical value invalid!
The initial portion of string "$np" contains no decimal number非十进制???
2,若把#$ -pe orte8x $np定义并行环境,后改成数字就可以交但运行后Eqw,投递任务出错,这是什么意思?
4,我再写sge或者pbe环境变量时到底需要编写那些必要变量(网上虽然有一些但是都必要的么)集群上并没有提示。
5,mpirun的用法上的理解,np是核数就是总共用np个核来计算,npool是通信池数,就是把总的k点分成npl个块来计算。np个核除以npl个块就是每个块用来计算的核数。是这个意思么?还有网上只有fortran和c的mpi编写,对于shell来说调用mpi时候用什么解释器么?还是说其中的那个#$ -S /bin/bash/就够了。
6,我有一个可以修改的脚本,但我希望能有朋友能帮忙解答一下问题,当然您要是给现成的脚本我也谢谢,可我还是希望能得到答复。谢谢。


#! /bin/bash/
#$ -S /bin/bash/
declare -i np=128
declare -i npl=16
np=${np}*1
npl=${npl}*1
INPUT_PATH="pwd"

#$ -pe orte8x $np
#$ -N beta12.kpoints.in
#$ -cwd
#$ -o /home/oai/work/tmp/outdir/err.out
#$ -j y
#$ -l h_cpu=12:00:00
#$ -q para0.q

if [ -f conjunction* ]
then rm -f conjunction*  
fi      
         
for((k=10;k <=30;k=k+10))
do      

cat > $k.points.in << EOF
K_POINTS {automatic}
$k $k 1 1 1 1
EOF


cat  beta12.ktest.in  $k.points.in > conjunction_$k.in


mpirun -np ${np} home/oai/work/software/espresso-5.2.1/bin/pw.x -npool $npl <$INPUT_PATH/conjunction_$k.in >> $INPUT_PATH/beta12.vcrelax_$k.out
  qsub $INPUT_PATH/beta12.kpoints.in
done
回复此楼

» 收录本帖的淘帖专辑推荐

pwscf

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cugmsn

木虫 (著名写手)

Don't stay in step,the profect partner is waiting there.
5楼2016-05-19 19:59:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

新丰客

木虫 (小有名气)

#! /bin/sh
#$ -S /bin/sh
module load intel/intel-ll
module load openmpi/intel-ll
export workdir=/home/oai/work/tmp/
export OMP_NUM_THREADS=1
export MKL_NUM_THREADS=1

#$ -pe orte 4
#$ -N beta12.kpoints.in
#$ -cwd
#$ -o /home/oai/work/tmp/outdir/err.out
#$ -j y
#$ -l h_cpu=12:00:00
#$ -q para0.q


declare -i np=128
declare -i npl=16
np=${np}*1
npl=${npl}*1
INPUT_PATH="pwd"


if [ -f conjunction* ]
then rm -f conjunction*
fi

for((k=10;k <=30;k=k+10))
do

cat > $k.points.in << EOF
K_POINTS {automatic}
$k $k 1 1 1 1
EOF

cat beta12.ktest.in $k.points.in > conjunction_$k.in

mpirun -np ${np} home/oai/work/software/espresso-5.1/bin/pw.x -npool $npl <$INPUT_PATH/conjunction_$k.in >> $INPUT_PATH/beta12.vcrelax_$k.out


qsub $INPUT_PATH/beta12.kpoints.in
done
这是按照集群要求新修改的
2楼2016-05-09 12:09:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cugmsn

木虫 (著名写手)

引用回帖:
4楼: Originally posted by 新丰客 at 2016-05-19 13:06:12
已解决

可以分享一下正确的脚本吗?

发自小木虫Android客户端
Don't stay in step,the profect partner is waiting there.
6楼2016-05-19 20:00:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

新丰客

木虫 (小有名气)

引用回帖:
6楼: Originally posted by cugmsn at 2016-05-19 20:00:29
可以分享一下正确的脚本吗?
...

其实把if以及for格式写正确就没什大错误了,写成提交脚本的形式更好
7楼2016-05-23 13:58:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见