<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 20, 2013 at 12:26 PM, Hui Zhang <span dir="ltr"><<a href="mailto:mike.hui.zhang@hotmail.com" target="_blank">mike.hui.zhang@hotmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":2p3">I think about the method and find it is not as convenient as allowing inter-communicator operations.<br>
</div></blockquote><div><br></div><div style>Supporting general mixed-communicator operations is a non-starter because the semantics can be ambiguous, it's very easy to get deadlock, and you can't debug or check invariants.</div>
<div style><br></div><div style>Also note that inter-communicators require MPI-2 and have historically had implementation bugs since they are not heavily used.</div><div style><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":2p3">
For example, VecScatter actually allows the two Vec in different communicators (or one must include<br>
the other?).<br>
<br>
I have more questions.<br>
(1) Does MatScatter supports MatMatMult?<br></div></blockquote><div><br></div><div style>No, and VecScatter does not keep enough information to support such an operation. If you have the index sets, you can MatPermute(), but moving matrix entries around is quite expensive so you should usually avoid it.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":2p3">
(2) Does MatConvert works on MATNEST?<br></div></blockquote><div><br></div><div style>No, the implementation was never quite finished. We still think it's a useful thing.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":2p3">
(3) Does MatGetLocalSubMat support localization to a sub-communicator instead of a process?<br></div></blockquote></div><br>No, you might be misunderstanding the purpose MatGetLocalSubMatrix(). It always returns a Mat object, but the communicator is not specified and it may not be "functional" in the sense of supporting MatMult, etc. It does, however, support MatSetValuesLocal() and related operations. See snes/examples/tutorials/ex28.c for an example of assembling a partitioned system into nested versus monolithic format without any knowledge of the representation.</div>
</div>