On 21 Jul 2014, at 11:50, Dave May <dave.mayhe...@gmail.com> wrote:

> Hi Lawrence,
> 
> Hmm this sounds odd. The convergence obtained with chebyshev should be 
> essentially identical in serial and parallel when using a jacobi 
> preconditioner

So I was maybe a bit unclear in my previous mail:

If I run with:

-pc_type mg -mg_levels_ksp_type richardson -mg_levels_pc_type jacobi 
-mg_levels_ksp_max_it 2

then I get identical convergence in serial and parallel

if, however, I run with

-pc_type mg -mg_levels_ksp_type chebyshev -mg_levels_pc_type sor 
-mg_levels_ksp_max_it 2
(the default according to -ksp_view)

then I get very differing convergence in serial and parallel as described.

> 1) How did you configure the coarse grid solver in the serial and parallel 
> test? Are they consistent?

I initially just used the default (which is LU in serial and redundant with LU 
in parallel), when I rerun with:

-pc_type mg -ksp_type fgmres -mg_coarse_ksp_type gmres -mg_coarse_pc_type 
jacobi -mg_coarse_ksp_max_it 100

Which should be the same in serial and parallel, I again see bad behaviour in 
parallel.


> 2) Does using one level with PCMG and a chebyshev smoother give the same 
> answers in serial and parallel? If you precondition with jacobi, the 
> residuals in serial and parallel should be very similar. If this test didn't 
> pass, try a 1 level method again again without the preconditioner (i.e. just 
> apply chebyshev). If the residuals are really different between these runs, 
> there is likely something wrong/inconsistent with the definition of the 
> operator on each level, or the way the boundary conditions are imposed.

For these tests, I use the following options:

-pc_type mg -ksp_type fgmres -pc_mg_levels 2 -mg_coarse_ksp_type gmres 
-mg_coarse_pc_type jacobi -mg_coarse_ksp_max_it 100

I then tried the following options for the smoother:

-mg_levels_ksp_type chebyshev -mg_levels_pc_type sor -mg_levels_ksp_max_it 2

Works in serial, doesn't converge well in parallel.

-mg_levels_ksp_type chebyshev -mg_levels_pc_type jacobi -mg_levels_ksp_max_it 2

Converges veery slowly in both serial and parallel (but has the same 
convergence in both cases).

-mg_levels_ksp_type chebyshev -mg_levels_pc_type none -mg_levels_ksp_max_it 2

Converges well in both serial and parallel (identical convergence behaviour).


> 3) Is the code valgrind clean?

It's python-based, so it's a little difficult to say.  It appears to be so.

Cheers,

Lawrence

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to