2017-09-07 15 views
0

実行時にインテルコンパイラを使用してMPI FortranでPEの数を変更できるかどうかは疑問でした。 私の問題は非常に具体的で、私は計算の中である時点に達した後でPEの数を減らすことができるかどうかを知りたいと思います。 私の場合は次のとおりです: 私は多くの番号を刻むコードを持っています。巨大な問題を解決するには、約128個のPEが必要です。しかし、計算が終わって解決策を印刷すると、残りの127個のPEはアイドル状態を維持し、これは膨大なリソースの無駄です。 私は計算を終えてまだ解決策を印刷しているときに、127個のPEを「割り当て解除」することは可能ですか?実行時にMPIで実行時にPEの数を変更

答えて

2

私はこれを達成するための簡単な方法はないと思います。

比較的単純なオプションは、1つのタスクでMPIアプリケーションを起動してからMPI_Comm_spawn() PEを127個計算し、127個のPEを終了してシリアル部分を続行することです。

一般に、このような128 PEジョブはリソースマネージャーを介して開始され、実際の問題は、バッチマネージャーがジョブ縮小(iirc、SLURM)をサポートできるかどうか、そしてこれがMPI (これは望ましい機能であり、PMIxにはその計画がありますが、SLURMがこれをサポートしているかどうかはわかりません)。

私の最善のアドバイスは、やり方を変えて、MPI-IOを使ってソリューションを並行して印刷することです。

+0

ご意見ありがとうございました。私は、MPI-IOの使用が最善の選択だとも信じています。数ヶ月前に実装しようとしましたが、私のパーティションが異なるため、これは本当に難しい作業でした。各ランクには独自の配列サイズがあります。私はその方向に進もうとします –

関連する問題