Oh noes, that's not what I ever intended. That code is creating an array that is much longer than it should be.<div><br></div><div>The logic for setting block size was also changed in the spring and evidently not propagated to this routine so I added the PetscLayoutSetUp() calls that ensure local size is divisible by block size.</div>
<div><br></div><div>I think this patch fixes both issues:</div><div><br></div><div><a href="http://petsc.cs.iit.edu/petsc/releases/petsc-3.3/rev/4e499e21f7a2">http://petsc.cs.iit.edu/petsc/releases/petsc-3.3/rev/4e499e21f7a2</a><br>
<div><br><div class="gmail_quote">On Tue, Oct 2, 2012 at 7:57 PM, Geoffrey Irving <span dir="ltr"><<a href="mailto:irving@naml.us" target="_blank">irving@naml.us</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Tue, Oct 2, 2012 at 4:48 PM, Geoffrey Irving <<a href="mailto:irving@naml.us" target="_blank">irving@naml.us</a>> wrote:<br>


> The dnnz argument to MatXAIJSetPreallocation is described as<br>
><br>
>     dnnz - number of nonzero blocks per block row of diagonal part of<br>
> parallel matrix<br>
><br>
> To me, this implies that if the matrix has size m and the block size<br>
> is bs, dnnz should have size m/bs.  However, the loop inside the<br>
> routine looks like<br>
><br>
>      for (i=0; i<m*bs; i++) {<br>
>         if (dnnz) sdnnz[i] = dnnz[i/bs] * bs;<br>
>         if (onnz) sonnz[i] = onnz[i/bs] * bs;<br>
>       }<br>
><br>
> which implies that dnnz should have m entries.  Is this a bug, or am I<br>
> misinterpreting the meaning of dnnz?<br>
<br>
</div></div>It looks like the loop hasn't changed since the beginning of<br>
MatXAIJSetPreallocation, but the comment changed from<br>
<br>
    dnnz - number of nonzeros per row of diagonal block of parallel matrix<br>
<br>
to<br>
<div><br>
    dnnz - number of nonzero blocks per block row of diagonal part of<br>
parallel matrix<br>
<br>
</div>in<br>
<br>
    commit abccccb5e4359792067c7bef9b175a0511adf626<br>
    Author: Jed Brown <jed@59A2.org><br>
    Date:   Thu Mar 1 11:51:58 2012 -0600<br>
<br>
        Remove the maximum nonzero arguments from MatXAIJSetPreallocation()<br>
<br>
I'll change my code to match the first comment and see if it works.<br>
<span><font color="#888888"><br>
Geoffrey<br>
</font></span></blockquote></div><br></div>
</div>