MPI_Send と MPI_Recv ==================== .. literalinclude:: mpi_sample2.cpp :language: c++ :linenos: :download:`Download the source code` この例では最も基本的な通信関数の MPI_Send と MPI_Recv を使っています。 プロセス数 2 で起動されると、rank 0 として起動されたプロセスの側では 送信を行い、rank 1 として起動されたプロセスの側では受信を行います。 このプログラムは 2 プロセスとして起動された場合にだけ対応しているので プログラムの入り口でプロセス数のチェックをしています。 送信データは配列として用意します。配列の先頭アドレス、送るデータの 要素数、データの型のコード、送り先相手などを指定して MPI_Send を呼びます。 受信側では受信データを受け取る配列を用意します。受信データの個数が 分かっていないと配列を用意できませんが、ここでは10個で固定になっています。 受信側も、送信側と似たような情報を指定して MPI_Recv を呼びます。 このサンプルのコンパイルと実行した例を示します。:: $ mpic++ -o mpi_sample2 mpi_sample2.cpp $ mpiexec -n 2 mpi_sample2 Receiving data. Sending data. send_data: [ 0 1 2 3 4 5 6 7 8 9 ] recv_data: [ 0 1 2 3 4 5 6 7 8 9 ]