全隣接rank同士の相互通信 ======================== .. literalinclude:: mpi_sample10.cpp :language: c++ :linenos: :download:`Download the source code` MPI_Isend と MPI_Irecv を使ったさらに踏み込んだ例として、 任意の数のプロセス数で起動された際に、前後のrankと相互に データを送り合う例を示します。 openmpiでの実行例を示します。:: $ mpic++ -o mpi_sample10 mpi_sample10.cpp $ mpiexec -n 4 mpi_sample10 rank: 2, send_left_data: [ -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 ] rank: 2, send_right_data: [ 20 21 22 23 24 25 26 27 28 29 ] rank: 0, send_left_data: [ 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 ] rank: 0, send_right_data: [ 0 1 2 3 4 5 6 7 8 9 ] rank: 1, send_left_data: [ -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 ] rank: 3, send_left_data: [ -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 ] rank: 1, send_right_data: [ 10 11 12 13 14 15 16 17 18 19 ] rank: 3, send_right_data: [ 30 31 32 33 34 35 36 37 38 39 ] rank: 0, recv_left_data: [ -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 ] rank: 0, recv_right_data: [ 30 31 32 33 34 35 36 37 38 39 ] rank: 1, recv_left_data: [ -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 ] rank: 3, recv_left_data: [ 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 ] rank: 3, recv_right_data: [ 20 21 22 23 24 25 26 27 28 29 ] rank: 2, recv_left_data: [ -30 -31 -32 -33 -34 -35 -36 -37 -38 -39 ] rank: 2, recv_right_data: [ 10 11 12 13 14 15 16 17 18 19 ] rank: 1, recv_right_data: [ 0 1 2 3 4 5 6 7 8 9 ]