Sun Grid Engine,强制每个节点一个作业
Sun Grid Engine, force one job per node
我运行在使用 Sun Grid Engine 分发作业的集群 (starcluster) 上使用 numpy 多次重复同一作业。我的每个节点都有 2 个核心(c3.large 在 AWS 上)。假设我有 5 个节点,每个节点有 2 个核心。
numpy 中的矩阵运算可以一次使用多个内核。我发现 SGE 将立即向 运行 发送 10 个作业,每个作业使用一个核心。这导致作业的 运行 时间更长。查看htop,好像每个核心上的两个作业在争夺资源。
如何告诉 qsub 为每个节点分配 1 个作业。这样当我提交工作时,一次只有 5 个 运行ning,而不是 10 个?
第 1 步:向您的集群添加复数值。 运行
qconf -mc
添加一行
exclusive excl INT <= YES YES 0 0
第 2 步:对于每个节点,为该复数定义一个值。
qconf -rattr exechost complex_values exclusive=1 <nodename>
这里我们将独占设置为 1。然后,当您启动作业时,请求该资源的“1”。例如:
qrsh -l exclusive=1 <myjob>
如果您愿意每个节点有 2 个作业,您可以在第 2 步将该值定义为 2。
编辑:这是每个节点的配置方式。您可以在第 1 步中通过将 "default" 列中的值设置为 1 来为整个集群完成此操作。
我运行在使用 Sun Grid Engine 分发作业的集群 (starcluster) 上使用 numpy 多次重复同一作业。我的每个节点都有 2 个核心(c3.large 在 AWS 上)。假设我有 5 个节点,每个节点有 2 个核心。
numpy 中的矩阵运算可以一次使用多个内核。我发现 SGE 将立即向 运行 发送 10 个作业,每个作业使用一个核心。这导致作业的 运行 时间更长。查看htop,好像每个核心上的两个作业在争夺资源。
如何告诉 qsub 为每个节点分配 1 个作业。这样当我提交工作时,一次只有 5 个 运行ning,而不是 10 个?
第 1 步:向您的集群添加复数值。 运行
qconf -mc
添加一行
exclusive excl INT <= YES YES 0 0
第 2 步:对于每个节点,为该复数定义一个值。
qconf -rattr exechost complex_values exclusive=1 <nodename>
这里我们将独占设置为 1。然后,当您启动作业时,请求该资源的“1”。例如:
qrsh -l exclusive=1 <myjob>
如果您愿意每个节点有 2 个作业,您可以在第 2 步将该值定义为 2。
编辑:这是每个节点的配置方式。您可以在第 1 步中通过将 "default" 列中的值设置为 1 来为整个集群完成此操作。