2012-03-13 2 views
1

私は、FORTRANでMPIベースの並列プログラミングを使用しています。たとえば、プログラムを実行するには私は、標準のMPIを使用しています10個のプロセッサはMPIベースの並列プログラミングでコードを実行する際のプロセッサ数を変更します。

だからプログラムは、コードの実行中に、すなわちプロセッサの数は一定で、開始から終了までに10個のプロセッサ上で実行されます

mpirunのprog_name 10 -nコマンド。

私の質問は、プログラムの実行中にプロセッサの数を変更することが可能です。 2つのプロセッサーから始め、いくつかの基準の後で私はプロセッサーの数を4から6から10から20などに変更したいと考えています。

ありがとうございます。

+0

私の問題は最初は非常に小さく、実行中に大きくなってきているので、これを行う理由。 –

答えて

8

MPI-2は(ほぼ)この種の操作をサポートしています.Googleにはmpi_comm_spawnのドキュメントと関連するルーチンがあります。私はを約と書いています。厳密に言えばMPIは、プロセッサではなく、プロセスでしかないからです。 mpi_comm_get_attrのルーチンと、あらかじめ定義された定数mpi_universe_sizeのドキュメントも参照してください。プログラムと実行時環境との間の通信により、使用可能なプロセスの数などが把握できます。

並列コンピュータ上のジョブ管理システムでは、プログラムの実行中にさらに多くのプロセッサを取り込むことができない場合があります。

あなたが避けたいのは、ジョブの実行開始時に10個のプロセスに対して10個のプロセッサを取得し、その後同じ10個のプロセッサで実行するために20個のプロセスを後で生成することです。

関連する問題