![gnu parallel と mpirun を組み合わせる: コアの最大数をどのように処理しますか?](https://rvso.com/image/164740/gnu%20parallel%20%E3%81%A8%20mpirun%20%E3%82%92%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%3A%20%E3%82%B3%E3%82%A2%E3%81%AE%E6%9C%80%E5%A4%A7%E6%95%B0%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%87%A6%E7%90%86%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
32 個のコアを持つマシンがあり、可変数のコアでいくつかの mpi ジョブを実行したいと考えています (問題でそれが必要なため)。gnu parallel に mpi ジョブの数を認識させて、各ジョブをいつ起動するかを管理する方法はありますか?
例: 次の数の mpi ジョブで多数 (200) のジョブを起動する必要があるとします。
NMPI=(2 2 2 4 4 4 4 6 7 10 12 24 32)
したがって、最初は配列の最初の 8 要素のみを実行し (合計がコアの総数 32 より少ないため)、最初の各ジョブが終了するとすぐに、合計 32 の同時 MPI ジョブの制限を超えないように、他の各ジョブを徐々に順番に実行します。たとえば、最初の 8 つのプロセスが実行されていて、最初のプロセスが終了したとします (最初の NMPI[0] == 2 の場合)。次のジョブは NMPI[8]==7 であり、最大制限の 32 コアを超えるため、並列では十分なプロセッサが空くまで新しいものを実行しません。または、並列でジョブの起動を改善する方法はありますか。たとえば、最初に最後の MPI ジョブ (32 コア) を起動し、次に最後から 1 を引いた数と最初の 3 つ、というように起動します。
ご指導をよろしくお願いいたします
答え1
配列の順序を反転して、最初に最大のジョブから開始します。
おそらく、 を使用することで--load 100%
、--delay 10s
次のジョブを開始する前にジョブがすべてのコアを使用していることを確認できるのではないでしょうか。