如何通过多个过程通知SGE工作

时间:2018-10-09 05:50:15

标签: sungridengine

我们在CentOS从站上运行的SGE上构建软件,并且运行良好。 我的问题是如何通过启动多个进程来告诉SGE,一个作业占用了给定从站上的几个内核?

说明:
该过程涉及培训模型,该模型需要对(相对)大数据文件进行大量连续的小更改,而作业数量超过10k。我们使用的大多数工具都支持从stdin / out进行读写。这将使我们能够将数据从一个工具传递到下一个工具(测试表明这也将很好地工作)。

问题在于,当作业启动通过管道连接的两个或多个进程时,从属设备将过载。为了避免这种情况,我该如何告诉SGE进程数?只有SGE和节点正常工作才需要这样做,而任何形式的计费都不需要。

示例:
2个计算节点,即NodeA和NodeB,每个节点有10个插槽,配置为以“填充”模式分配作业。
Job1“ tool1 -a A -b B | tool2 -c C | tool3 -d D”

当我启动“作业1”并将其分配给节点NodeA时,将在此处运行三个进程(“工具1”,“工具2”,“工具3”)。但是SGE只知道一项工作,并且仍然认为它可以为节点A分配9个工作,而不是7个,这可能导致节点过载。

我确实看过'pe_range',但它似乎是指多个作业,而不是具有多个进程的作业。

谢谢。

1 个答案:

答案 0 :(得分:0)

您的SGE群集必须配置有“并行环境”。与您的系统管理员联系,以确保存在并行环境及其名称。然后使用qsub提交作业,并指定并行环境的名称和节点上所需的CPU内核数。例如,如果您的并行环境称为“ foo”,并且您需要8个CPU内核,则将以下选项添加到qsub命令行中:

-pe foo 8