我想在 2 个不同的节点上执行 foo.sh。因此,我编写了以下脚本:
#!/home/farago/bin/dash
qsub -N dist -o P -e P-err -V -v
"EXECSCRIPT=foo.sh"
-l walltime=12:00:00,nodes=2:ppn=1 Cluster_ExecExp_pbsdsh.sh
使用 Cluster_ExecExp_pbsdsh.sh:
#!/home/farago/bin/dash
#PBS -l nodes=2:ppn=1
#PBS -l walltime=12:00:00
/usr/bin/pbsdsh -v dash $EXECSCRIPT
奇怪的是, foo.sh 总是在同一个节点的两个 CPU 上执行 :(
那么:为什么 pbs(dsh) 将我的任务安排到一个节点上,即使我指定了 nodes=2:ppn=1?(我是否必须在我的两个脚本中都提供这些参数?)
更新:如果 foo.sh 由
#!/bin/bash
echo "foostart" >> /home/farago/output.txt
cat $PBS_NODEFILE >> /home/farago/output.txt
echo "fooend" >> /home/farago/output.txt
然后我得到 output.txt:
foostart
cn11
cn11
fooend
foostart
cn11
cn11
fooend
因此,似乎给参数 -l nodes=2:ppn=1 两次会导致 qsub 和 pbsdsh 两次分配作业。但我仍然不明白为什么作业没有安排在不同的机器上。