MPI_Type_create_struct ======================== .. literalinclude:: mpi_sample11.cpp :language: c++ :linenos: :download:`Download the source code` 自分で定義した構造体またはクラスにデータを保持させて、その構造体の配列を データとして送信したい場合があります。そのような時に便利なのがMPIに 自作のデータ型を登録する機能です。 これを使うには、構造体のメンバ変数の登場順序、個数、型といった情報を MPIの関数に渡して型として登録します。登録すると型のコードを発行してもらう ことができ、MPIの各関数において、型コード(MPI_Type型)の値として指定する ことが可能になります。 このサンプルでは 2プロセスの間でデータをrank 0 から rank 1 に送信します。 openmpi を用いた実行例を示します。:: $ mpic++ -o mpi_sample11 mpi_sample11.cpp $ mpiexec -n 2 mpi_sample11 rank: 0, send_data: [ { boat_id: 0, pos: [ 1.01010096073150635 1.01010096073150635 ], heading: 0, vel: 1.01010101010101017} { boat_id: 1, pos: [ 2.0202019214630127 2.0202019214630127 ], heading: 0.785398163397448279, vel: 2.02020202020202033} { boat_id: 2, pos: [ 3.03030300140380859 3.03030300140380859 ], heading: 1.57079632679489656, vel: 3.03030303030303028} ] rank: 1, recv_data: [ { boat_id: 0, pos: [ 1.01010096073150635 1.01010096073150635 ], heading: 0, vel: 1.01010101010101017} { boat_id: 1, pos: [ 2.0202019214630127 2.0202019214630127 ], heading: 0.785398163397448279, vel: 2.02020202020202033} { boat_id: 2, pos: [ 3.03030300140380859 3.03030300140380859 ], heading: 1.57079632679489656, vel: 3.03030303030303028} ]