3

我正在尝试让 sun gridending (sge) 在集群的所有节点上运行 MPI 作业的单独进程。

发生的事情是每个节点都有 12 个处理器,因此 SGE 将我的 60 个进程中的 12 个分配给 5 个单独的节点。

我希望它为 30 个可用节点中的每一个分配 2 个进程,因为每个节点上运行 12 个进程(dna 序列比对),节点内存不足。

所以我想知道是否可以明确让 SGE 将进程分配给给定节点?

谢谢,

保罗。

4

4 回答 4

1

查看并行环境配置中的“allocation_rule”;或者然后通过为 allocation_rule 指定 $pe_slots 然后使用 qsub 的 -pe 选项,您应该能够执行您上面要求的操作。

于 2010-07-30T11:35:56.113 回答
1

您可以通过创建一个队列来完成此操作,您可以在其中定义该队列仅使用每个节点中 12 个处理器中的 2 个处理器。

您可以使用命令查看当前队列的配置

 qconf -sq queuename

您将在队列配置中看到以下内容。这个队列以这样一种方式命名,即它每个只使用 5 个执行主机和 4 个插槽(处理器)。

....
slots                 1,[master=4],[slave1=4],[slave2=4],[slave3=4],[slave4=4]
....

使用以下命令更改队列配置

qconf -mq queuename

然后将这 4 个更改为 2 个。

于 2012-01-26T13:01:55.063 回答
0

在管理主机上,运行“qconf -msconf”来编辑调度程序配置。它将在编辑器中显示配置选项列表。寻找一个名为“load_factor”的。将值设置为“-slots”(不带引号)。

这告诉调度程序,当机器使用的插槽最少时,它的负载最少。如果每个 exec 主机的插槽数量相似,您将获得均匀分布。如果您有一些 exec 主机的插槽比其他主机多,那么它们将是首选,但您的分布仍然会比 load_factor 的默认值更均匀(我不记得了,在我的集群中更改了这个值已经有一段时间了前)。

您可能需要在每台主机上设置插槽。我自己已经这样做了,因为我需要将一组特定盒子上的作业数量限制为少于它们的最大值,因为它们没有其他一些盒子那么多的内存。我不知道这个 load_factor 配置是否需要,但如果需要,您可以为每个主机添加一个插槽消耗。使用“qconf -me hostname”执行此操作,向“complex_values”添加一个类似于“slots=16”的值,其中 16 是您希望该主机使用的插槽数。

于 2011-08-31T04:38:37.970 回答
0

这是我从我们的系统管理员那里学到的。将此 SGE 资源请求放入您的作业脚本中:

#$ -l nodes=30,ppn=2

每个节点( ppn ) 和 30 个节点请求 2MPI进程。我认为如果其他用户也运行大量作业,则无法保证这种 30x2 布局可以在 30 节点集群上运行,但也许您可以尝试一下。

于 2016-08-26T13:50:52.900 回答