<p dir="ltr">It's not the same data layout, but I recommend that you just use AIJ and let it optimize internally. Partition the graph first, then allocate the matrix, then compute the Jacobian entries and use MatSetValues.</p>

<div class="gmail_quote">On May 14, 2013 5:11 PM, "Satish Balay" <<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
AIJ matrix format internally supports VBR listed below [called inodes in PETSc]<br>
<br>
So I'm not sure what problem you are having.<br>
<br>
Satish<br>
<br>
On Tue, 14 May 2013, Longxiang Chen wrote:<br>
<br>
> VBR like in this link, use 6 arrays to represent a matrix.<br>
> <a href="http://docs.oracle.com/cd/E19061-01/hpc.cluster5/817-0086-10/prog-sparse-support.html" target="_blank">http://docs.oracle.com/cd/E19061-01/hpc.cluster5/817-0086-10/prog-sparse-support.html</a><br>
><br>
> Each row is a vertex in the graph, , and use parmetis to partition the<br>
> graph to minimize the number of cuts between different processors. (reduce<br>
> communication when calculate Matrix-Vector)<br>
> The matrix is calculated from Jacobian and construct the A and b from the<br>
> result of Jacobian (in VBR).<br>
><br>
><br>
> Best regards,<br>
> Longxiang Chen<br>
><br>
> Do something every day that gets you closer to being done.<br>
> --------------------------------------------------------------<br>
> 465 Winston Chung Hall<br>
> Computer Science Engineering<br>
> University of California, Riverside<br>
><br>
><br>
><br>
> On Tue, May 14, 2013 at 2:51 PM, Jed Brown <<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>> wrote:<br>
><br>
> > What kind of VBR matrix? What are you partitioning using parmetis? A mesh?<br>
> > The blocks of the matrix? How do you create the entries in the matrix?<br>
> > On May 14, 2013 4:36 PM, "Longxiang Chen" <<a href="mailto:suifengls@gmail.com">suifengls@gmail.com</a>> wrote:<br>
> ><br>
> >> To whom it may concern,<br>
> >><br>
> >> I use parmetis to partition a mesh for a sparse matrix.<br>
> >> Then I distribute the data to the  appropriate processors according to<br>
> >> the result of partition.<br>
> >><br>
> >> The sparse matrix is stored in Variable Block Row(VBR) format.<br>
> >> After the distribution, I want to call PETSc KSP solver to solve Ax = b.<br>
> >> I tried to convert VBR to AIJ or CSR format, but the data would be<br>
> >> re-distributed.<br>
> >><br>
> >> The ideal method is to keep the distribution result from parmetis.<br>
> >> For example, after parmetis, processor 0 has 0, 1, 4, and processor 1<br>
> >> has 2, 3, 5. I wish the PETSc would not change this distribution and<br>
> >> solve Ax = b.<br>
> >><br>
> >> Are there any approaches to call KSP solver in VBR format from PETSc?<br>
> >> Or any suggestions for solving Ax = b?<br>
> >><br>
> >> Thanks in advance.<br>
> >><br>
> >> Regards,<br>
> >> Longxiang Chen<br>
> >><br>
> >><br>
><br>
<br>
</blockquote></div>