<div dir="ltr"><div><div>Hi Rajeev,<br></div><div>thanks for the prompt response.<br><br></div><div>I am attempting to ensure that our code conforms to the standard.<br><br></div>Would it be correct to say that, for the MPI standard, the communicator used in MPI_Pack must<br></div><div>be a superset of the ranks in the communicator used subsequently by MPI calls that use the packed buffer?<br><br></div><div>And likewise, is it correct to state that MPI_Unpack must use a communicator that is a superset of the communicator used to<br></div><div>receive or create the buffer that is input to MPI_Unpack?<br><br></div><div>If that is the case, then would MPI_COMM_WORLD always bea valid option for use as a communicator<br></div><div>in MPI_Pack and MPI_Unpack?<br><br></div><div>Then, as you said, in a homogeneous system, there should be no disadvantage in specifying<br>MPI_COMM_WORLD.<br><br></div><div>Perhaps the standard and man pages for MPI_Pack could be restated:<br>
>        The comm argument must include all (be a superset) of all the communicator"s"  that will be<br>
>        subsequently used for sending the packed message.<br><br></div><div>And something similar for MPI_Unpack.<br></div><div><br></div><div>kindest regards<br></div><div>Mike<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 18 February 2016 at 12:57, Thakur, Rajeev <span dir="ltr"><<a href="mailto:thakur@mcs.anl.gov" target="_blank">thakur@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">You can use MPI_COMM_WORLD as the communicator. If you are running on a homogeneous system, there shouldn’t be any performance issue in using MPI_COMM_WORLD as the communicator either.<br>
<br>
Rajeev<br>
<br>
> On Feb 17, 2016, at 6:09 PM, Michael Rezny <<a href="mailto:michael.rezny@monash.edu">michael.rezny@monash.edu</a>> wrote:<br>
><br>
> Hi,<br>
> I have a question regarding the use of a communicator in MPI_Pack and MPI_Unpack.<br>
> I have googled and search the MPI mailing lists but haven't found an answer.<br>
><br>
> The OpenMPI man page for MPI_Pack states:<br>
>        The comm argument is the  communicator  that  will  be<br>
>        subsequently used for sending the packed message.<br>
><br>
> And something similar for MPI_Unpack.<br>
><br>
> Which seems to reflect what is defined in the MPI standards.<br>
><br>
> Basically, what I would like to do is to have an MPI rank as a coupler.<br>
> That is, receiving a packed message from one application and<br>
> passing it to another application.<br>
><br>
> Comm_A would be the ranks of application A plus the coupler and<br>
> Comm_B would be the ranks of application B plus the coupler.<br>
><br>
> In this case, MPI_COMM_WORLD = Comm_A U Comm_B.<br>
><br>
> I would like to have a solution that does not have the coupler unpacking<br>
> the buffer received from application A and then packing it to send it to application B<br>
><br>
> 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<br>
> second edition by Gropp, Lusk, and Skjellum.<br>
><br>
> If I understand this correctly, it would be legal to use MPI_COMM_WORLD as the communicator<br>
> for MPI_Pack and MPI_Unpack. The only downside is that one might not get the optimal performance.<br>
><br>
> The alternative we are using is to use MPI_Pack_external and MPI_Unpack_external<br>
> which requires no communicator. But the downside is that on homogeneous little-endian HPCs,<br>
> this will always entail byte swapping on packing and unpacking.<br>
><br>
> So my question is: What is the correct and optimal way to implement passing packed messages<br>
> in the coupling example described above?<br>
><br>
> kindest regards<br>
> Mike<br>
> _______________________________________________<br>
> mpi-forum mailing list<br>
> <a href="mailto:mpi-forum@lists.mpi-forum.org">mpi-forum@lists.mpi-forum.org</a><br>
> <a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum" rel="noreferrer" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a><br>
<br>
_______________________________________________<br>
mpi-forum mailing list<br>
<a href="mailto:mpi-forum@lists.mpi-forum.org">mpi-forum@lists.mpi-forum.org</a><br>
<a href="http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum" rel="noreferrer" target="_blank">http://lists.mpi-forum.org/mailman/listinfo.cgi/mpi-forum</a></blockquote></div><br></div>