use of communicator in MPI_Pack and MPI_Unpack
Hi, I have a question regarding the use of a communicator in MPI_Pack and MPI_Unpack. I have googled and search the MPI mailing lists but haven't found an answer. The OpenMPI man page for MPI_Pack states: The comm argument is the communicator that will be subsequently used for sending the packed message. And something similar for MPI_Unpack. Which seems to reflect what is defined in the MPI standards. Basically, what I would like to do is to have an MPI rank as a coupler. That is, receiving a packed message from one application and passing it to another application. Comm_A would be the ranks of application A plus the coupler and Comm_B would be the ranks of application B plus the coupler. In this case, MPI_COMM_WORLD = Comm_A U Comm_B. I would like to have a solution that does not have the coupler unpacking the buffer received from application A and then packing it to send it to application B I just found a very nice explanation of the need for a communicator in Pack / Unpack on page 135 of Using MPI Portable Parallel Programming with the Message-Passing Interface second edition by Gropp, Lusk, and Skjellum. If I understand this correctly, it would be legal to use MPI_COMM_WORLD as the communicator for MPI_Pack and MPI_Unpack. The only downside is that one might not get the optimal performance. The alternative we are using is to use MPI_Pack_external and MPI_Unpack_external which requires no communicator. But the downside is that on homogeneous little-endian HPCs, this will always entail byte swapping on packing and unpacking. So my question is: What is the correct and optimal way to implement passing packed messages in the coupling example described above? kindest regards Mike
participants (1)
-
Michael Rezny