<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Mar 14, 2016 at 10:05 PM, Steena Monteiro <span dir="ltr"><<a href="mailto:steena.hpc@gmail.com" target="_blank">steena.hpc@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 dir="ltr"><div><span style="font-family:arial,helvetica,sans-serif;color:rgb(0,0,0)">Hello,</span><br></div><div><span style="color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif"><br></font></span></div><div><span style="color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif">I am having difficulty getting MatSetSize to work prior to using MatMult.</font></span></div><div><span style="color:rgb(0,0,0)"><font face="arial, helvetica, sans-serif"><br></font></span></div><div><font face="arial, helvetica, sans-serif"><span style="color:rgb(0,0,0)">For matrix A with rows=cols=</span><font color="#000000">1,139,905 and block size = 2, </font></font></div></div></blockquote><div><br></div><div>It is inconsistent to have a row/col size that is not divisible by the block size.</div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><font face="arial, helvetica, sans-serif"><font color="#000000">rank 0 gets </font><span style="color:rgb(0,0,0)">400000</span><font color="#000000"> rows and rank 1 </font><span style="color:rgb(0,0,0)">739905</span><span style="color:rgb(0,0,0)"> rows,  like so:</span></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">/*Matrix setup*/</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><div>ierr=PetscViewerBinaryOpen(PETSC_COMM_WORLD,file,FILE_MODE_READ,&fd);</div><div>ierr = MatCreate(PETSC_COMM_WORLD,&A);</div><div>ierr = MatSetFromOptions(A);</div><div>ierr = MatSetType(A,MATBAIJ);</div><div>ierr = MatSetBlockSize(A,2);<br></div></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif">/*Unequal row assignment*/</font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><div> if (!rank) {</div><div>    ierr = MatSetSizes(A, 400000, PETSC_DECIDE, 1139905,1139905);CHKERRQ(ierr);</div></font><font color="#000000"><div><font face="arial, helvetica, sans-serif">   } </font></div><div><font face="arial, helvetica, sans-serif">else {</font></div><div><font face="arial, helvetica, sans-serif">    ierr = MatSetSizes(A, 739905, PETSC_DECIDE, 1139905,1139905);CHKERRQ(ierr);</font></div><div><font face="arial, helvetica, sans-serif">}</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">MatMult (A,x,y);</font></div><div><br></div><div><font face="arial, helvetica, sans-serif">/************************************/</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Error message:</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><div><font face="arial, helvetica, sans-serif">1]PETSC ERROR: [0]PETSC ERROR: No support for this operation for this object type</font></div><div><font face="arial, helvetica, sans-serif">Cannot change/reset row sizes to 400000 local 1139906 global after previously setting them to 400000 local 1139905 global</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">[1]PETSC ERROR: [0]PETSC ERROR: Cannot change/reset row sizes to 739905 local 1139906 global after previously setting them to 739905 local 1139905 global</font></div></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">-Without messing with row assignment,  MatMult works fine on this matrix for block size = 2, presumably because an extra padded row is automatically added to facilitate blocking.</font><br></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">-The above code snippet works well for block size = 1.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Is it possible to do unequal row distribution <i>while using blocking</i>?</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">Thank you for any advice.</font></div><span class="HOEnZb"><font color="#888888"><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">-Steena</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><br></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div style="font-size:medium"><br></div></font></span></font></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">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></div>