MPIIntro
23/30 簡単なプログラム例(3個のプロセス)

【テロップ】
※各テロップ文字をクリックすると該当の場所がピンポイントで閲覧できます。



【ノート】
まず、簡単な、プロセス間の通信を行うプログラムを考えましょう。このプログラムは3個のプロセスで実行するとします。 ★ まず、ここで、初期化された後、変数マイアイディーにプロセスのランク、すなわち、0、1、2のどれかが設定され、変数エヌサイズにプロセスの総数、すなわち、3がセットされます。 ★ 次に、変数データ0にランクのあたいに10を加算したあたいを設定します。 ★ さらに、送信の関数を起動します。ランク毎に送信先が異なるので、イフ文を用いて、ランク毎に起動する関数を変えています。つまり、ランクが0の場合は送信先は2、ランクが1の場合は送信先は0、ランクが2の場合は送信先は1に指定します。 ★ これらの送信の関数に応じて、受信の関数を起動します。つまり、ランク0はランク1から受信し、ランク1はランク2から受信し、ランク2はランク0から受信します。なお、送信と受信のタグは同じ値にするので、ここでは11にしています。また、受信したデータは変数データ1に格納されます。 ★ 最後にランク1のプロセスがデータ1のあたいを表示します。なので、 ★ この受信関数を見ると、ランク1が受信するデータ1はランク2のプロセスから送信されたデータなので、 ★ この送信関数を確認し、ランク2が送信するのはデータ0なので、データ0のあたいを確認することになり、 ★ この代入文でデータ0には、ランクのあたいに10を加算したあたい、すなわちランク2は2に10を加算し、12が代入されているので、結局、表示されるのは、12ということになります。 このように、MPIのプログラムは、どこからどこにデータが送受信されるかを確認して、プログラムの動作を確認することが必要になります。