2017-04-06 15 views
0

私はMPIの初心者ですので、私はMPIプログラムのランクの正確な定義を知りたいD」、そしてなぜ我々はそれMPIランクプロセス

は、例えば、ここでのコードの2行がある必要があります。

int world_rank; 
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); 

enter image description here

答えて

1

これを理解するには、MPIはSPMD(単一のプログラム複数データ)モデルを使用していることを認識する必要があります。つまり、このプログラムを並行して実行すると、たとえば次のようになります。同時に4つのプロセスで、すべてのプロセスが同じプログラムの独自の独立したコピーを実行します。だから、基本的な質問は、なぜすべてのプロセスが同じことをするのではないかということです。並列プログラミングを利用するには、さまざまな処理を行うプロセスが必要です。たとえば、1つのプロセスを複数の作業者にジョブを送信するコントローラとして動作させることができます。ランクは、各プロセスの基本的な識別子です。 4つのプロセスで実行すると、上記のプログラムは異なるプロセスで0,1,2,3のランクを返します。プロセスがそのランクを知ると、プロセスは適切に動作することができる。 "私のランクがゼロであれば、コントローラー関数を呼び出すか、それ以外の場合はワーカー関数を呼び出す"。

+0

「MPI_Comm_size(MPI_COMM_WORLD、&n)」があります。「n」はCommのグループ内のプロセス数です。 1ランクは複数のプロセスを持つことができますか、1ランクだけが1プロセスだけを識別することができますか?なぜ、これらの整数は初期化されずに値を持つのですか? –