scripting - 为什么 pbs(dsh) 将我的任务安排到一个节点上?

标签 scripting distributed-computing pbs

我想在 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 分配作业两次。但是我仍然不明白为什么作业没有安排在不同的机器上。

最佳答案

它仅在一个节点上启动,因为您的作业仅在一个节点上运行。我不确定为什么你的调度程序只在 cn11 上启动你,但是 $PBS_NODEFILE 告诉你你的工作正在使用什么主机。

如果可能的话,一些调度器将你的请求合并到 1 个节点上,甚至节点的值> 1。这部分并不奇怪。

关于scripting - 为什么 pbs(dsh) 将我的任务安排到一个节点上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20412814/

相关文章:

带变量的 Linux rm 命令

linux - Unix - 创建文件夹和文件的路径

linux - 在 bash 脚本中检查远程端口状态

python - PBS 集群节点上的多处理

pbs - 查看 pbs 作业当前使用的内存量

java - IntelliJ IDEA 脚本编写

multithreading - ZeroMQ:如何处理 ZeroMQ 节点中与消息无关的异步事件?

memcached - AWS 上的分布式计数器

java - Clojure/Java分布式计算框架

c++ - 为 OpenMP + MPI 应用程序定位资源