在sun Grid Engine(SGE)中将作业分布在集群的不同节点上

时间:2010-07-29 14:00:54

标签: mpi sungridengine

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

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

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

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

谢谢,

保罗。

4 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

在并行环境的配置中查看“allocation_rule”;无论是那个,还是通过为allocation_rule指定$ pe_slots,然后使用-pe选项到qsub,你应该能够做到你上面要求的那些。

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

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

SET

请求2 MPI p rocesses p er n ode(ppn)和30个节点。我认为如果其他用户也经营大量工作,我不能保证这个30x2布局可以在30节点集群上运行,但也许你可以尝试一下。