【问题标题】:How to submit a job to a specific node in PBS如何将作业提交到 PBS 中的特定节点
【发布时间】:2013-08-25 21:53:36
【问题描述】:

如何将作业发送到 PBS/TORQUE 中的特定节点? 我认为您必须在节点之后指定节点名称。

#PBS -l nodes=abc

但是,这似乎不起作用,我不确定为什么。 这个问题是在PBS and specify nodes to use

上提出的

这是我的示例代码

#!/bin/bash
#PBS nodes=node9,ppn=1,
hostname
date 
echo "This is a script"
sleep 20    # run for a while so I can look at the details
date

另外,我如何检查作业在哪个节点上运行?我在某处看到$PBS_NODEFILE 显示了详细信息,但它似乎对我不起作用。

【问题讨论】:

  • 您是否尝试过删除#!/bin/bash。我想知道 bash 是否将 #PBS 解释为评论...
  • 我没试过。那你觉得我应该在第一行写什么呢?
  • 还有一个命令可以知道作业在哪个节点上运行,我的意思是通过echo显示。我从终端知道我可以使用 qstat -n
  • qstat -n1 为您提供有关您的作业正在运行的节点的信息。
  • @iamauser:是的,bash 将#PBS 解释为注释,但qsub 将其识别为指令。这正是选择该语法的原因。删除 #!/bin/bash 无济于事。

标签: bash shell pbs torque


【解决方案1】:

你可以这样做:

#PBS -l nodes=<node_name>

您还可以指定处理器的数量:

#PBS -l nodes=<node_name>:ppn=X

或者您可以请求其他节点,指定或未指定:

#PBS -l nodes=<node_name1>[:ppn=X][+<node_name2...]

这为您提供了多个特定节点。

#PBS -l nodes=<node_name>[:ppn=X][+Y[:ppn=Z]]

这会从该节点请求具有 X 个执行槽的特定节点,以及每个具有 Z 个执行槽的额外 Y 个节点。

编辑:简单地请求多个节点和每个节点的执行槽:

PBS -l 节点=X:ppn=Y

注意:这一切都适用于 TORQUE/Moab。它可能适用于其他 PBS 资源管理器/调度器,也可能不适用。

【讨论】:

  • 此答案不适用于 PBS Pro > v10 或 v11。 PBS Pro 已更改此类选择的语法。有关信息,请参阅用户指南的第 5 章。我只是自己熟悉它,所以不想在这里试图做到公正。
  • 没错,这个答案是专门针对TORQUE的。
  • 我如何知道我的集群有什么 PBS 资源管理器? (不问管理员,终端有没有可以使用的命令?)
  • qstat --version 可能会有所帮助。 PBSPro 版本远高于 Torque 版本。
  • 你知道如何提交到负载均衡器中的特定节点吗?
【解决方案2】:

上述答案不适用于 PBS Pro。以下适用于包含节点列表(node1node2)。

#PBS -l select=1:host=node1+1:host=node2

对于还包括处理器的数量,

#PBS -l select=1:ncpus=24:host=node1+1:ncpus=24:host=node2

【讨论】:

  • 我在 PBS Pro 14.0.1 上收到“作业违反队列和/或服务器资源限制”。知道这意味着什么吗?
  • @soungalo 这通常意味着您正在运行作业的队列不允许您使用您指定的资源提交作业。您可以通过在终端中键入qstat -Qf 来获取您使用的集群的各种可用队列和相应的资源限制。您可以通过在作业脚本中添加一行 #PBS -q queuename 来指定作业应该在哪个队列中运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多