GTC 2015 - MPIを使ったマルチGPUのプログラミング「基礎編」
MPIによる通信は、メッセージの送信と受信のペアの動作で行われ、次の図のように、rank 0がMPI_Sendを行ってs_buf_dに入っているデータをRank n-1に送り。rank n-1がMPI_Recvを行ってRank 0からのデータを受け取るという手順で行われる。
最小のMPIプログラムは次のようなものである。最初にMPIのヘッダファイルをincludeしておく。そして、mainプログラムの中では、まず、MPI_Initを呼ぶ。この関数はMPI環境を初期化して、指定された数のランクの実行プロセスを立ち上げる。そして、これ以降はすべてのランクが並列に実行されることになる。
各ランクでは、まず、MPI_Comm_rankとMPI_Comm_size関数を呼ぶ。
MPI_Comm_rankは自分のランク番号を返し、MPI_Comm_sizeは全部でいくつのランクがあるかを返す。各ランクはsizeで自分がどれだけの処理を分担するか、自分のランク番号からどのデータ処理を行うのかなどを知ることができる。
そして、相手のランク番号を指定してメッセージの送受信を行い、各種の計算処理などを実行して行く。