我正在尝试使用sun gridending(sge)在我的集群的所有节点上运行MPI作业的单独进程。
正在发生的事情是每个节点有12个处理器,因此SGE将我的60个进程中的12个分配给5个独立的节点。
我希望它为每个可用的30个节点分配2个进程,因为每个节点上运行12个进程(dna序列对齐),节点的内存不足。
所以我想知道是否可以明确地让SGE将进程分配给给定节点?
谢谢,
保罗。
答案 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节点集群上运行,但也许你可以尝试一下。