SGE でのジョブの送信中に、ノード (procs ではなく) の数を要求する方法は?
たとえば、TORQUEでは、指定できます
qsub -l nodes=3
SGE で名前でノードを要求する方法は?
たとえば、TORQUE では
qsub -l nodes=abc+xyz+pqr
、 、abc
、xyz
およびpqr
はホスト名でこれを行うことができます。単一のホスト名の場合、
qsub -l hostname=abc
機能します。しかし、SGE で複数のホスト名を区切るにはどうすればよいでしょうか?
2 に答える
Grid Engine でのノード数のリクエストは間接的に行われます。並列ジョブを送信する場合は、並列環境 ( man sge_pe
) とスロット (プロセッサなど) の量を要求する必要がありますqsub -pe mytestpe 12
...
allocation_rule
並列環境 ( ) での定義に応じてqconf -sp mytestpe
、スロットは 1 つ以上のノードに分散されます。4 (ホストごとに 4 スロット) のような特定の数を割り当てルールとして追加する、いわゆる固定割り当てルールがある場合、それは簡単です。1 つのホストが好きな場合は、で送信する-pe mytestpe 4
だけです。10 個のノードが必要な場合は、で送信するだけです-pe mytestpe 40
。
によってノード名を要求できます-l h=abc
。Grid Engine ではノード名は
RESTRINGS
(正規表現文字列) なので、ホスト フィルタリング用の正規表現を作成できます: qsub -l h="abc|xyz"
. また、ホスト グループを作成し ( qconf -ahgrp
)、いわゆるキュー ドメインを要求することもできます ( qsub -q all.q@@mygroup
)。
ダニエル
-tc を使用して、同時実行タスクの数 (つまり、配列ジョブに使用されるスロットの数) を制限できます。キューへの影響を制限するために、100 個のサブジョブを持つ配列ジョブを送信するときにこれを使用します。デフォルトでは -tc 10 で 10 個の同時ジョブに設定されています。各ジョブが終了すると、保留中のプールから別の配列ジョブが送信されます。
これを実行するために私が見つけた唯一の方法は、使用したい特定のホスト グループを指定して (qconf -mrqs を使用して) 特定のリソース クォータ セットを設定することです。最初に、必要なすべての組み合わせを設定する必要があります。ただし、特定のホストを指定する本当の理由はわかりませんが、これらのホストに使用したい特定のリソースがある場合を除きます (その場合、それらの消費可能なリソースを設定し、適切な数のリソースを各ホストに適用します)。特定のジョブに特定のホストを指定する代わりに、それを使用します)。