Thanks Jed,<br><br>I understood what you said. If I switch to use another run script which is used to set up two-level preconditioner, I have another question.<br><br>Without changing the source code, I used the following script:<br>
<br>  mpirun -n 1 ./ex29  -ksp_type fgmres -pc_type mg -pc_mg_levels 2 -pc_mg_cycle_type v -pc_mg_type multiplicative -mg_levels_1_ksp_type richardson -mg_levels_1_ksp_max_it 1 -mg_levels_1_pc_type asm -mg_levels_1_sub_ksp_type preonly -mg_levels_1_sub_pc_type ilu  -mg_levels_1_sub_pc_factor_levels 2  -mg_levels_1_sub_pc_factor_mat_ordering_type rcm -mg_coarse_ksp_type gmres  -mg_coarse_ksp_rtol 0.1  -mg_coarse_ksp_max_it 10 -mg_coarse_pc_type asm -mg_coarse_sub_ksp_type preonly -mg_coarse_sub_pc_type ilu -mg_coarse_sub_pc_factor_levels 2 -mg_coarse_sub_pc_factor_mat_ordering_type rcm -ksp_view  -pc_mg_log -da_refine 1 -log_summary >printresult<br>
<br>then I got:<br><br>4653296 bytes MatILUFactorSymbolic_SeqAIJ() line 1867 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aijfact.c<br>4653296 bytes MatILUFactorSymbolic_SeqAIJ() line 1840 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aijfact.c<br>
<span style="color:rgb(255,0,0)">2592848 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>2592848 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
2592848 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>2592848 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
</span>1167392 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>1167392 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
1165376 bytes MatILUFactorSymbolic_SeqAIJ() line 1840 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aijfact.c<br>1165360 bytes MatILUFactorSymbolic_SeqAIJ() line 1867 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aijfact.c<br>
<span style="color:rgb(255,0,0)">651264 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>651264 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
651264 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>651264 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
</span>520208 bytes VecScatterCreate() line 1008 in /home/fdkong/math/petsc-3.3-p7/src/vec/vec/utils/vscat.c<br>520208 bytes VecCreate_Seq() line 40 in /home/fdkong/math/petsc-3.3-p7/src/vec/vec/impls/seq/bvec3.c<br>520208 bytes VecCreate_Seq() line 40 in /home/fdkong/math/petsc-3.3-p7/src/vec/vec/impls/seq/bvec3.c<br>
520208 bytes VecCreate_Seq() line 40 in /home/fdkong/math/petsc-3.3-p7/src/vec/vec/impls/seq/bvec3.c<br><br><br>In this case, we have four MatSeqAIJSetPreallocations ( for fine matrix and coarse matrix respectively) rather than two. I want to set up preconditioner from options. Are there some things wrong for the script?<br>
<br><br><div class="gmail_quote">On Wed, May 29, 2013 at 7:08 AM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Fande Kong <<a href="mailto:fande.kong@colorado.edu">fande.kong@colorado.edu</a>> writes:<br>
<br>
> Last, I got:<br>
><br>
><br>
> 5279056 bytes MatLUFactorSymbolic_SeqAIJ() line 380 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aijfact.c<br>
> 5279040 bytes MatLUFactorSymbolic_SeqAIJ() line 392 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aijfact.c<br>
> 2592848 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
> 2592848 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
> 1167392 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
> 1167392 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
> 651264 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
> 651264 bytes MatSeqAIJSetPreallocation_SeqAIJ() line 3439 in<br>
> /home/fdkong/math/petsc-3.3-p7/src/mat/impls/aij/seq/aij.c<br>
<br>
</div>Fine-grid matrix, interpolation, coarse grid matrix, and LU factors for<br>
coarse grid matrix.  Each of these has two large allocations when<br>
running in debug mode:<br>
<br>
    ierr    = PetscMalloc3(nz,PetscScalar,&b->a,nz,PetscInt,&b->j,B->rmap->n+1,PetscInt,&b->i);CHKERRQ(ierr);<br>
<br>
In optimized mode (which you should *always* use when measuring<br>
performance), PetscMalloc3 is implemented with only one malloc.<br>
<br>
Add '-malloc' to get a tracing malloc when running with an optimized<br>
build of PETSc.<br>
<br>
</blockquote></div><br><br clear="all"><br>-- <br><div>Fande Kong</div>Department of Computer Science<div>University of Colorado at Boulder</div>