MPIIntro
25/30 MPIプログラム化(1/2)
【テロップ】
※各テロップ文字をクリックすると該当の場所がピンポイントで閲覧できます。
【ノート】
まず、ランク0から他のプロセスへの転送を記述する前に、 ★ まずは、ヘッダファイルをインクルードし、必要な変数の宣言を追加します。MPIドットエイチをインクルードし、 ランクとサイズの変数およびMPIステータスの変数、および、 以降の計算で必要となる一時変数のティーサムの変数です。 さらに、MPIイニットを行い、サイズとランクのあたいを取得します。 ★ この後に、データ転送を行う部分を記述します。 ランク0では、他のプロセス、すなわち、1と2のプロセスに送信を行うので、forループでその繰り返しを記述します。MPIセンド関数では、 ★ 送信元のデータのアドレスを、ランク1の場合には、3番目の配列要素のアドレス、すなわち、xの3かける1の要素のポインタとします。 ランク2の場合には、6番目の配列要素のアドレス、すなわち、xの3かける2の要素のポインタとなっています。 ★ 送信する個数は3個とし、 ★ 送り先は、ランク1の場合は1、ランク2の場合は2としています。 ★ ランク0以外のプロセスは、MPIレシーブ関数で受信を行います。 受信したデータを格納する場所は、配列xの先頭としています。 ★ このように受信することにより、部分和を計算する区間は、すべてのプロセスで同じ場所、 すなわち、配列xの先頭から3個となります。