On Tue, May 26, 2009 at 2:10 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@59a2.org">jed@59a2.org</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im">Matthew Knepley wrote:<br>
<br>
> Yes, I want to go into the code and every place we query the diagonal<br>
> block, replace cMap by rMap. This is the only thing that makes sense<br>
> to me. By my definitions, diagonal blocks are disjoint, so they must<br>
> be square. Since we normally own rows, it makes sense to use row<br>
> blocking to define them.<br>
<br>
</div>This seems very wrong to me.  The diagonal block is the part of the<br>
matrix that is applied to a local part of the vector.  In other words,<br>
it's the A part of Mat_MPIAIJ and the off-diagonal part is the B part.<br>
It doesn't make any sense to me to redefine these based only on the row<br>
map.<br>
<br>
Maybe I'm misunderstanding you though.  In any case, the actual diagonal<br>
of a non-square matrix has very little to do with the distribution (it's<br>
not in the A block), and I don't see where it's terribly useful.  What<br>
specifically are you suggesting to change?<br>
<div class="im"><br>
<br>
> I think there is an inconsistency in our definitions. If you create a matrix which<br>
> is 4x8 on 2 procs, then you end up with a row and column map like this:<br>
><br>
>     rowMap           colMap<br>
>   [0..2) [2..4)      [0..4) [4..8)<br>
><br>
> However, we use the column map for queries which then give nonsense. The most<br>
> damaging is in MatSetValues(). If I give a value for (2,2) on proc 1, then since<br>
> 2 < cstart = 4, this value is considered "off-diagonal"<br>
<br>
</div>I think this is correct.  When we apply to a vector, entry 2 (owned by<br>
rank 0) must be gathered, thus it is in mpiaij->B (the diagonal block is<br>
mpiaij->A).  Setting (2,4) on proc 1 should go in the diagonal block.<br>
Is this usage inconsistent?</blockquote><div><br>I am fine with this too, which is option 1 in my original mail. However, this means that<br>when users preallocate, they must understand the column layout. I guess this is better<br>
than changing the code unless I can think of a case where is plainly does not apply.<br><br>   Matt<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<font color="#888888"><br>
Jed<br>
<br></font></blockquote></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<br>