<p>Dear Matthew:</p><p>thanks again. sorry for posting lots of equestions.<br></p><p>Regards,</p><p>Yujie</p><br><div class="gmail_quote">On Sat, Jan 3, 2009 at 10:57 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="Ih2E3d">On Sat, Jan 3, 2009 at 12:52 PM, Yujie <span dir="ltr"><<a href="mailto:recrusader@gmail.com" target="_blank">recrusader@gmail.com</a>></span> wrote:<br>
</div><div class="gmail_quote"><div class="Ih2E3d"><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<p>Dear Matthew:</p><p>I have checked the description of MatGetSubMatrix() and ISAllGather(). I am wondering if isrow is created by MPI_COMM, does it work when iscol is obtained based on PETSC_COMM_SELF? thanks.</p><p>MatGetSubMatrix(Mat mat,IS isrow,IS iscol,PetscInt csize,MatReuse cll,Mat *newmat)</p>
</blockquote></div><div><br>1) We do not check the comm of IS in this function<br><br>2) If we did we would issue an error code which would be checked by CHKERRQ and report the mismatch. This<br> allows experimentation with the code to uncover these answers.<br>
<br> Matt<br> </div><div><div class="Wj3C7c"><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><p><br>
</p><p>Regards,</p><p>Yujie</p><br><div class="gmail_quote">On Fri, Jan 2, 2009 at 6:20 PM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<div>On Fri, Jan 2, 2009 at 7:58 PM, Yujie <span dir="ltr"><<a href="mailto:recrusader@gmail.com" target="_blank">recrusader@gmail.com</a>></span> wrote:<br></div><div class="gmail_quote"><div>
<blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
Dear Barry:<br><br>When using MatGetSubmatrix() to get a submatrix in parallel mode, to my knowledge, this function will exact the rows and cols for submatrix. This submatrix is not redistributed. For example, if there is zero row and zero col in a process, the row and col of this submatrix in this process are zero, right?<br>
However, to get a subvector using Vec scatter, the user needs to create the subvector using MPI_COMM, that is new distribution for subvector is generated. Just regarding only rows or cols of the submatrix and the subvector, their distribution should be different even if using the same index to get them, right? thanks a lot.</blockquote>
</div><div><br>No. They work exactly the same way.<br><br> Matt<br> </div><div><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex"><br>
Regards,<br>Yujie<br>
<br><div class="gmail_quote">On Fri, Jan 2, 2009 at 5:15 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
<br>
The ix and iy are always global indices based on where the vector lives.<br>
<br>
If you are going from a parallel to parallel vector then both indices are "global"<br><font color="#888888">
<br>
Barry</font><div><div><br>
<br>
On Jan 2, 2009, at 2:21 PM, Yujie wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left:1px solid rgb(204, 204, 204);margin:0pt 0pt 0pt 0.8ex;padding-left:1ex">
Dear Barry:<br>
<br>
I have a new question about the parameter "iy"(new index set of subvector). To parallel vector, how to provide "ix" and "iy"?<br>
<br>
Just providing the local index subset for "ix" and "iy"? if it is, it is a little difficult to let the local vector know its global position in the new subvector? If the user needs to provide the global position of local vector for "iy". some MPI communication should be needed, it looks like not a good method. In exacting submatrix, the function hides this problem. could you give me any comments? thanks a lot.<br>
<br>
Regards,<br>
<br>
Yujie<br>
<br>
<br>
On Fri, Jan 2, 2009 at 11:46 AM, Barry Smith <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>> wrote:<br>
<br>
VecScatter is for this purpose.<br>
<br>
Rational: extracting subparts of vectors for ghost points etc takes place many times in a simulation; maybe millions.<br>
Thus separating it into a set-up followed by many uses is a worthwhile optimization. Extracting submatrices occur<br>
much less often in a simulation, maybe tens, hundreds or thousands of times so it is not worth the extra complexity<br>
of having separate set-up followed by many uses. One could argue that uniformity of design means we should have<br>
handled matrices with a MatScatter concept to parallel the Vec approach, but it is too late now :-).<br>
<br>
Barry<br>
<br>
<br>
On Jan 2, 2009, at 1:41 PM, Yujie wrote:<br>
<br>
Like MatGetSubMatrix(), whether is there a function to get a subvector in parallel mode? I have checked some scatter functios, they don't likely work. thanks a lot.<br>
<br>
Regards,<br>
<br>
Yujie<br>
<br>
<br>
<br>
</blockquote>
<br>
</div></div></blockquote></div><br>
</blockquote></div></div><font color="#888888"><br><br clear="all"><br>-- <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>
</font></blockquote></div><br>
</blockquote></div></div></div><div><div class="Wj3C7c"><br><br clear="all"><br>-- <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>
</div></div></blockquote></div><br>