On Fri, Feb 5, 2010 at 5:28 PM, NovA <span dir="ltr">&lt;<a href="mailto:av.nova@gmail.com">av.nova@gmail.com</a>&gt;</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;">
Thanks for the quick response!<br>
<br>
2010/2/6 Matthew Knepley &lt;<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>&gt;:<br>
<div class="im">&gt; 1) It will distribute block rows, so you will get 8 and 4 as you want<br>
<br>
</div>How can it distribute in such a way, if it doesn&#39;t know block size yet?<br>
Let&#39;s continue the example:<br>
   MatCreate(comm, &amp;A);<br>
   MatSetSizes(A, PETSC_DECIDE,12, 12,12);<br>
   MatSetType(A, MATMPIBAIJ);<br>
   MatGetOwnershipRange(A, &amp;rowS, &amp;rowE);<br>
  Then loop local rows from rowS/4 to rowE/4 to preallocate storage<br>
using MatMPIBAIJSetPreallocation(A,4,...)<br>
<br>
What will be the rowS and rowE here? I think they can be not divisible<br>
by 4 (block size)...<br><div class="im"></div></blockquote><div><br>You have to set the block size.<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;">
<div class="im">
&gt;<br>
&gt; 2) Warning: This is an incredibly small problem. Using 2 processors<br>
&gt;     might not show any speedup at all.<br>
</div>Sure! It&#39;s just an example. I suppose it&#39;ll be much slower on two<br>
processors actually.<br>
<br>
<br>
Regards!<br>
  Andrey<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt;   Matt<br>
&gt;<br>
&gt; On Fri, Feb 5, 2010 at 5:03 PM, NovA &lt;<a href="mailto:av.nova@gmail.com">av.nova@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hi everybody!<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m looking for the best way to distribute MPIBAIJ matrix among<br>
&gt;&gt; several processors.<br>
&gt;&gt;<br>
&gt;&gt; For example, I have square matrix 3x3 of blocks 4x4 each (i.e. 12x12<br>
&gt;&gt; values) and need to distribute it among 2 processors. The generic way<br>
&gt;&gt; of creating such a matrix would be:<br>
&gt;&gt;  Mat A;<br>
&gt;&gt;  MatCreate(comm, &amp;A);<br>
&gt;&gt;  MatSetSizes(A, loc_rows,12, 12,12);<br>
&gt;&gt;  MatSetType(A, MATMPIBAIJ);<br>
&gt;&gt;<br>
&gt;&gt; What is the optimal value for loc_rows here?<br>
&gt;&gt;<br>
&gt;&gt; Can I use PETSC_DECIDE for it? I suppose this will lead to division by<br>
&gt;&gt; 6 rows per processor, which is not consistent with block size. How<br>
&gt;&gt; MatMPIBAIJSetPreallocation(A,4,...) will deal with it?<br>
&gt;&gt;<br>
&gt;&gt; Most likely, I have to manually set loc_rows to 8 and 4 according to<br>
&gt;&gt; the processor rank. But probably I miss some more clean way, when<br>
&gt;&gt; PETSc really decides. :)<br>
&gt;&gt;<br>
&gt;&gt; Thanks in advance for any comments.<br>
&gt;&gt;<br>
&gt;&gt; Regards!<br>
&gt;&gt;  Andrey<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; What most experimenters take for granted before they begin their experiments<br>
&gt; is infinitely more interesting than any results to which their experiments<br>
&gt; lead.<br>
&gt; -- Norbert Wiener<br>
&gt;<br>
</div></div></blockquote></div><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>