<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Dear Dr. Brown, <br>
Thank you so much for your help. Your reply is really helpful
and knowledgeable. <br>
<br>
sincerely,<br>
Alan<br>
On 10/5/2012 2:42 PM, Jed Brown wrote:<br>
</div>
<blockquote
cite="mid:CAM9tzSmr8xoNXRZnJ2_peRDM2PSW2zWNaBQFG5uZb7vuHcBYyQ@mail.gmail.com"
type="cite">On Fri, Oct 5, 2012 at 2:33 PM, Zhenglun (Alan) Wei <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:zhenglun.wei@gmail.com" target="_blank">zhenglun.wei@gmail.com</a>></span>
wrote:<br>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Dear Dr. Brown, <br>
Thanks for your reply. I checked my grid partition by
output the corner points of the local domain. There is no
problem according to that. <br>
I ran the same case with smaller grid size with 8 cores
and find that the code occupy a lot of memory and slow if I
use the original script file which is<br>
<i>mpiexec -np 8 ./ex45 -pc_type exotic -ksp_type fgmres
-mg_levels_ksp_type gmres -mg_levels_ksp_max_it 1
-mg_levels_pc_type bjacobi -ksp_rtol 1.0e-7
-ksp_monitor_true_residual -ksp_converged_reason
-log_summary > out</i><br>
<br>
If I simply use <br>
<i>mpiexec -np 8 ./ex45 -ksp_monitor_true_residual
-ksp_converged_reason -log_summary > out</i><br>
<br>
Everything works fine. Therefore, I did more tests and
found out that the "-pc_type exotic" has some problem. </div>
</blockquote>
<div><br>
</div>
<div>PCEXOTIC is a special purpose, and mostly experimental,
method.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>Now I changed it to "-pc_type gamg"; like, <br>
<i>mpiexec -np 8 ./ex45 -pc_type gamg -ksp_type fgmres
-mg_levels_ksp_type gmres -mg_levels_ksp_max_it 1
-mg_levels_pc_type bjacobi -ksp_rtol 1.0e-7
-ksp_monitor_true_residual -ksp_converged_reason
-log_summary > out</i></div>
</blockquote>
<div><br>
</div>
<div>Add -pc_gamg_agg_nsmooths 1 to the options above and it
will likely converge much faster (in exchange for somewhat
higher setup, but you are spending almost no time in setup).</div>
<div><br>
</div>
<div>Why are you using GMRES on levels? It will probably go
faster if you drop all the -mg_levels_* options above (which
will use Chebyshev and SOR, should converge fast, but has
higher setup), perhaps going with -mg_levels_ksp_max_it 1
-mg_levels_ksp_type richardson which will probably also works
fine without the setup cost.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><i> </i><br>
it is super fast now, the log file is attached.
However, I have another question that it always show that
"unpreconditioned " although I already put pc_type over
there. <br>
" 0 KSP unpreconditioned resid norm 1.800295456670e+01
true resid norm 1.800295456670e+01 ||r(i)||/||b||
1.000000000000e+00"<br>
<br>
However, if I changed the 'ksp_type' from 'fgmres' to
'cg', it would give me:<br>
"0 KSP preconditioned resid norm 1.117293929796e+02
true resid norm 1.800293604638e+01 ||r(i)||/||b||
1.000000000000e+00"<br>
</div>
</blockquote>
<div><br>
</div>
<div>This "preconditioned" versus "unpreconditioned" is
reporting the norm used by the method, not whether
preconditioning is being used. Note that you can only use CG
(or normal GMRES) if the preconditioner is linear.
Changing/removing the option -mg_levels_ksp_type gmres will
make your method linear. Note that you can use normal GMRES in
unpreconditioned norm (-ksp_norm_type unpreconditioned) so you
don't have to pay for the extra memory and work done by
FGMRES.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div> <br>
The finial question: what are the choice for the <i>'</i>-mg_levels_ksp_type'.
Are they as the same as 'ksp_type'?</div>
</blockquote>
</div>
<br>
<div>Yes, you can also tell this via -help. Usually you want to
use a stationary method in the smoother, typically chebyshev or
richardson. A "Krylov" method like GMRES or CG will make the
multigrid cycle nonlinear.</div>
</blockquote>
<br>
</body>
</html>