<p><br>
On Sep 25, 2013 7:28 PM, "Jed Brown" <<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>> wrote:<br>
><br>
> Analabha Roy <<a href="mailto:hariseldon99@gmail.com">hariseldon99@gmail.com</a>> writes:<br>
><br>
> > Progress Report:<br>
> ><br>
> >  So I modified my code to remove all the wrong usages of MatCopy where I<br>
> > was trying to AllScatter/AllGather a parallel matrix, and replaced with<br>
> > usage of MatGetRedundantMatrix(). The highlighted diff is<br>
> > here<<a href="http://goo.gl/yyJVcV">http://goo.gl/yyJVcV</a>><br>
><br>
> Looks fine.<br>
><br>
> > Now, running it with 1 proc crashes, I guess because the documentation<br>
> > says<<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatGetRedundantMatrix.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatGetRedundantMatrix.html</a>>that<br>

> > only parallel matrices are supported by MatGetRedundantMatrix(), and<br>
> > running with 1 proc means the parallel matrices are sequantial (from what I<br>
> > read in the PetSc users manual).<br>
><br>
> You can use this to run on a single process.<br>
><br>
>   MPI_Comm_size(PetscObjectComm(PetscObject)mat,&size);<br>
>   if (size > 1) {<br>
>     MatGetRedundantMatrix(mat,&rmat);<br>
>   } else {<br>
>     rmat = mat;<br>
>     PetscObjectReference((PetscObject)rmat);<br>
>   }<br>
><br>
> (In parallel, rmat is a copy, but in serial, rmat is the same matrix.)<br><br><br><br></p>
<p>Thanks very much. <br>
</p>