[petsc-users] GAMG speed

Matthew Knepley knepley at gmail.com
Tue Aug 13 19:51:23 CDT 2013


On Tue, Aug 13, 2013 at 7:05 PM, Michele Rosso <mrosso at uci.edu> wrote:

>  Hi Matt,
>
> I attached the output of the commands you suggested.
> The options I used are:
>
> -log_summary -ksp_monitor -ksp_view -ksp_converged_reason -pc_type mg
> -pc_mg_galerkin -pc_mg_levels 5 -options_left
>

The convergence is great. I notice that your coarse solve takes no time.
You could probably use fewer levels for
this problem. For this problem there is no easy things left I think. We are
currently debating how you can squeeze
something extra out of the smoother. Here you could probably get rid of
Chebychev and use only SOR.

    Matt


> and here are the lines of codes where I setup the solution process:
>
>     call DMDACreate3d( PETSC_COMM_WORLD ,
> &
>                     & DMDA_BOUNDARY_PERIODIC , DMDA_BOUNDARY_PERIODIC,
> &
>                     & DMDA_BOUNDARY_PERIODIC , DMDA_STENCIL_STAR,
> &
>                     & N_Z , N_Y , N_X , N_B3 , N_B2 , 1_ip,  1_ip , 1_ip ,
> &
>                     & NNZ ,NNY , NNX, da , ierr)
>
>
>     ! Create Global Vectors
>     call DMCreateGlobalVector(da,b,ierr)
>     call VecDuplicate(b,x,ierr)
>
>     ! Set initial guess for first use of the module to 0
>     call VecSet(x,0.0_rp,ierr)
>
>     ! Create matrix
>     call DMCreateMatrix(da,MATAIJ,A,ierr)
>
>     ! Create solver
>     call KSPCreate(PETSC_COMM_WORLD,ksp,ierr)
>     call KSPSetDM(ksp,da,ierr)
>     call KSPSetDMActive(ksp,PETSC_FALSE,ierr)
>     call KSPSetOperators(ksp,A,A,SAME_NONZERO_PATTERN,ierr)
>     call KSPSetType(ksp,KSPCG,ierr)
>     call KSPSetNormType(ksp,KSP_NORM_UNPRECONDITIONED,ierr)
>     call KSPSetInitialGuessNonzero(ksp,PETSC_TRUE,ierr)
>     call KSPSetTolerances(ksp, tol ,PETSC_DEFAULT_DOUBLE_PRECISION,&
>         & PETSC_DEFAULT_DOUBLE_PRECISION,PETSC_DEFAULT_INTEGER,ierr)
>
>     ! Nullspace removal
>     call MatNullSpaceCreate(
> PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,&
>                            & PETSC_NULL_INTEGER,nullspace,ierr)
>     call KSPSetNullspace(ksp,nullspace,ierr)
>     call MatNullSpaceDestroy(nullspace,ierr)
>
>     ! To allow using option from command line
>     call KSPSetFromOptions(ksp,ierr)
>
>
> Hope I did not omit anything useful.
> Thank you for your time.
>
> Best,
> Michele
>
>
>
>
>  On 08/13/2013 04:26 PM, Matthew Knepley wrote:
>
> On Tue, Aug 13, 2013 at 6:09 PM, Michele Rosso <mrosso at uci.edu> wrote:
>
>>  Hi Karli,
>>
>> thank you for your hint: now it works.
>> Now I would like to speed up the solution: I was counting on increasing
>> the number of levels/the number of processors used, but now I see I cannot
>> do that.
>> Do you have any hint to achieve better speed?
>> Thanks!
>>
>
>  "Better speed" is not very helpful for us, and thus we cannot offer much
> help. You could
>
>   1) Send the output of -log_summary -ksp_monitor -ksp_view
>
>   2) Describe the operator succintly
>
>      Matt
>
>
>>  Best,
>> Michele
>>
>>
>>
>


-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130813/a7df9bff/attachment.html>


More information about the petsc-users mailing list