<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Sep 10, 2013, at 8:47 PM, Matthew Knepley wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr">On Tue, Sep 10, 2013 at 8:43 PM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; "><div class="im">Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>> writes:<br>
>>   I was unclear.  The offset value should be in bytes from the beginning<br>
>> of the array, currently it is in ints from the beginning of the array. Ints<br>
>> is just plan confusing, Shri has to have this strange size sizeof(his<br>
>> struct)/sizeof(PetscInt) to indicate how big his chunk is.<br>
><br>
><br>
> No, its has nothing to do with Int. Where did this come from? In fact, I<br>
> use it all the time to mean Scalar offsets. It is<br>
> interpreter by the creator of the Section. I told him to put in bytes for<br>
> the sizes. Then you do not need any of that crap.<br>
<br>
</div>PetscSF cannot currently scatter individual bytes (4 bytes minimum), and<br>
even if it could, it's a horribly inefficient representation (4 or 8<br>
bytes of metadata for each byte of payload).  The quick fix at that<br>
moment was to send in units of size PetscInt (the struct was always<br>
going to be divisible by that size).<br></blockquote><div><br></div><div>The way I understand it, he never had a single MPI_BYTE, but always a bunch.</div><div>Shouldn't that packing handle that case?</div><div><br></div>
<div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
After looking at code with him yesterday, it looks like he just needs a<br>
separate Section for each of four different types of node.  Within each<br>
node type, the sizes are homogeneous (though there may be multiple<br>
structs at a vertex of the graph).  In that case, he can make an<br>
MPI_Datatype for sizeof(struct Node) bytes and communicate those.<br>
PetscSF should do fine with that.<br></blockquote></div></div></div></blockquote><div>   For my toy example, using four sections is fine. But in general I think there needs to </div><div>be a mechanism that the user can easily pack the data and I don't think the user would want</div><div>to create tens of sections. </div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
<br>
The indexing still needs the size of a unit, but there would be no stray<br>
sizeof(Int) running around.<br>
<br>
<br>
In that discussion, we also concluded that having the user add code to<br>
one big struct definition was a terrible approach and we should<br>
dynamically build structures by registration.  I pointed him to the<br>
monitor infrastructure in Parmod (like in TS ex11).<br></blockquote></div></div></div></blockquote><div><br></div>I'll take a look at in the next few days and get back to you. One thing that I am struggling to understand, and this is in reference to having one chunk of memory holding all the</div><div>different parameters for vertices, edges etc, is how to manage heteregenous data, i.e., for example one vertex has a struct of type G1 and another has a type G2. Currently from</div><div>PetscSection, we can only get the offset and the size.</div><div><br></div><div>Shri<br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>
</blockquote></div><br></body></html>