<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 21, 2013 at 8:29 PM, Pavan Balaji <span dir="ltr"><<a href="mailto:balaji@mcs.anl.gov" target="_blank">balaji@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"><div id=":4xq">You'll still need to create a datatype for MPI_Pack.  This is the<br>
structure you mentioned:<br>
<div class="im"><br>
struct A<br>
{<br>
    int size;<br>
    int *lptr;<br>
};<br>
<br>
</div>I'm assuming you want to send the size and the data associated with lptr<br>
in a single message.  In this case, the only approaches I can think of are:<br>
<br>
1. Create a datatype every time you want to send this information and<br>
free it once you are done.<br>
<br>
2. Send two messages, one with the size parameter and the second with<br>
the data pointed to by lptr.<br>
<br>
Someone else might have a better way to do this.</div></blockquote></div><br>If the receiver does not know the size in advance (or at least an upper bound), then they would have to allocate before receiving anyway. If you have to do that, you may as well either send two messages or use MPI_Probe/MPI_Iprobe and allocate once you know the message size.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">If the receiver knows an upper bound in advance, just MPI_Recv that upper bound and use MPI_Get_count to find out how much you received.</div><div class="gmail_extra">
<br></div><div class="gmail_extra" style>If you have many of these, I would send all the sizes in one message and all the data in another message, unless the receiver knows the sizes in advance.</div><div class="gmail_extra" style>
<br></div><div class="gmail_extra" style>Once you know all the sizes, you could make an MPI_Type_create_hindexed and send with respect to MPI_BOTTOM to send all those separate arrays without explicit packing. I would only bother with that in a memory-constrained environment or after exhausting the simpler options.</div>
</div>