[petsc-users] Mat/Vec with empty ranks

Matthew Knepley knepley at gmail.com
Wed Oct 4 05:08:55 CDT 2017


On Tue, Oct 3, 2017 at 10:27 PM, Florian Lindner <mailinglists at xgm.de>
wrote:

> Am 03.10.2017 um 16:05 schrieb Matthew Knepley:
> > On Mon, Oct 2, 2017 at 10:11 PM, Florian Lindner <mailinglists at xgm.de
> <mailto:mailinglists at xgm.de>> wrote:
> >
> >
> >
> >     Am 02.10.2017 um 21:04 schrieb Matthew Knepley:
> >     > On Mon, Oct 2, 2017 at 6:21 AM, Florian Lindner <
> mailinglists at xgm.de <mailto:mailinglists at xgm.de>
> >     <mailto:mailinglists at xgm.de <mailto:mailinglists at xgm.de>>> wrote:
> >     >
> >     >     Hello,
> >     >
> >     >     I have a matrix and vector that live on 4 ranks, but only rank
> 2 and 3 have values:
> >     >
> >     >     Doing a simple LSQR solve does not converge. However, when the
> values are distributed equally, it converges
> >     within 3
> >     >     iterations.
> >     >
> >     >     What can I do about that?
> >     >
> >     >     I have attached a simple program and creates the matrix and
> vector or loads them from a file.
> >     >
> >     >
> >     > There are a few problems with this program. I am attaching a
> cleaned up version. However, convergence still
> >     differs starting
> >     > at iteration 2. It appears that LSQR has a problem with this
> system, or we have a bug that I cannot see.
> >
> >     Thanks for having a look at it!
> >
> >     And good to hear it's not by design. If I can be of any more help
> tracking this down, pleae let me know.
> >
> >     In the meantime, what could be a good way to work around this? This
> is admittedly a very malformed example. Is there a
> >     way to force solving on a single CPU and then distribute the results
> resp. KSP object to the original parallel layout?
> >     Of course, we would first try to solve in parallel, but we have
> little influence about the actual parallel layout, since
> >     we are just a library and other solvers give us the data.
> >
> >
> > I need to be more clear. I do not think convergence has anything to do
> with being on 1 process. I think this is an
> > ill-conditioned
> > example and convergence is an accident in one case. Unless you see this
> in a bunch of cases, I would not worry about
> > gathering
> > to a single process. However, that can be done using PCREDUNDANT if this
> is really a problem.
>
> Why do think it is ill-conditioned? The condition number is around 5, The
> singular values are [5.93710645,  1.85088733,
> 1.15107911] (both according to NumPy) and QR decomposition with NumPy
> works fine.
>
> I believe you're right about that, giving your proficiency in the subject,
> just want to learn and maybe fix my input
> data, if it's possible.
>

I don't know if that is right. However, the sequential and parallel
algorithms agree on both the initial residual (so that parallel
matrix and rhs appear correct) and the first iterate. Divergence of the
second iterate could still be a bug in our code, but it
was harder for me to see how.

The real thing to do, which should not be that much work but I don't have
time for now unfortunately, is to step through the
algorithm in serial and parallel and see what number changes. The algorithm
only has 20 or so steps per iterate, so this
would probably take one day to do right.

  Thanks,

     Matt


> Thanks,
> Florian
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.caam.rice.edu/~mk51/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20171004/4a82a63d/attachment.html>


More information about the petsc-users mailing list