MPI_Gatherv =========== .. literalinclude:: mpi_sample7.cpp :language: c++ :linenos: :download:`Download the source code` MPI_Gatherv では、rankごとに個別に指定した個数の配列データを ルートrankに用意した全rank分の配列に格納します。 送信側と受信側の双方で転送するデータの個数を指定する必要が あるので、必要に応じて MPI_Gatherv の呼びたしに先立って 個数の情報を通信で伝達します。 この例では各rankで乱数によりデータの個数を決めており、その後で MPI_Gather を使って、全rankの個数情報をルートrankに集めています。 その後でMPI_Gatherv を使ってデータ本体を転送しています。 openmpiによる実行例を示します。:: $ mpic++ -o mpi_sample7 mpi_sample7.cpp $ mpiexec -n 4 mpi_sample7 rank: 0, send_data: [ 0 1 2 3 4 5 6 7 ] rank: 1, send_data: [ 10 11 12 13 14 15 16 17 ] rank: 2, send_data: [ 20 21 22 23 24 ] rank: 3, send_data: [ 30 31 32 33 34 35 ] rank: 0, recv_data: [ 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 30 31 32 33 34 35 ]