Sun Grid Engine,每个节点强制执行一项作业

bil*_*l_e 2 python parallel-processing numpy sungridengine starcluster

我正在使用 numpy 在使用 sun Grid Engine 分发作业(starcluster)的集群上运行相同作业的多次重复。我的每个节点都有 2 个内核(AWS 上的 c3.large)。所以说我有 5 个节点,每个节点有 2 个内核。

numpy 中的矩阵运算一次可以使用多个核心。我发现 SGE 将发送 10 个作业同时运行,每个作业使用一个核心。这导致作业的运行时间更长。看看 htop,看起来每个核心上的两个作业都在争夺资源。

我如何告诉 qsub 为每个节点分配 1 个作业。这样当我提交作业时,一次只能运行 5 个,而不是 10 个?

Fin*_*ers 5

步骤 1:向集群添加复杂值。跑

qconf -mc
Run Code Online (Sandbox Code Playgroud)

添加一行,如

exclusive        excl      INT         <=    YES         YES        0        0
Run Code Online (Sandbox Code Playgroud)

步骤 2:对于您的每个节点,为该复杂值定义一个值。

qconf -rattr exechost complex_values exclusive=1 <nodename>
Run Code Online (Sandbox Code Playgroud)

这里我们将exclusive设置为1。然后,当您启动作业时,请求该资源的“1”。例如。:

qrsh -l exclusive=1 <myjob>
Run Code Online (Sandbox Code Playgroud)

如果您愿意每个节点有 2 个作业,则可以在步骤 2 中将该值定义为 2。

编辑:这是如何为每个节点配置它。您可以在步骤 1 中通过将“默认”列中的值设置为 1 来为整个集群完成此操作。