[petsc-users] Parallel Incomplete Choleski Factorization

Satish Balay balay at mcs.anl.gov
Wed Jul 18 11:09:58 CDT 2012


Its now useable on Intrepid with PETSC_DIR=/soft/apps/libraries/petsc/3.3-p2/xl-opt

Check /soft/apps/libraries/petsc/README

Satish

On Tue, 17 Jul 2012, Michele Rosso wrote:

> Thank a lot.
> 
> Please let me know when version 3.3 is available.
> 
> Michele
> 
> On 07/17/2012 12:13 PM, Barry Smith wrote:
> > > > Please update to petsc-3.3. petsc-3.1 is too old.
> > >      I would do that but the version installed on the platform (Intrepid
> > > at ALCF) I am working on is 3.1-p2.
> >     Satish,
> > 
> >        Please fix this.
> > 
> >       Thanks
> > 
> >       Barry
> > 
> > On Jul 17, 2012, at 1:36 PM, Michele Rosso wrote:
> > 
> > > On 07/17/2012 11:03 AM, Hong Zhang wrote:
> > > > Michele :
> > > > 
> > > > I have some problems with the block jacobi preconditioner.
> > > > I am solving a 3D  Poisson equation with periodic BCs, discretized by
> > > > using finite differences (7-points stencil).
> > > > Thus the problem is singular and the nullspace has to be removed.
> > > > 
> > > > For  Poisson equations, multigrid precondition should be the method of
> > > > choice.
> > > Thank you for the suggestion. I do not have any experience with multigrid,
> > > but I will try.
> > > > If I solve with the PCG method + JACOBI preconditioner the results are
> > > > fine.
> > > > If I use PCG + Block Jacobi preconditioner + ICC on each block the
> > > > results are fine on the majority of the processors,
> > > > but on few of them the error is very large.
> > > >   How do you know " few of them"?
> > >   Basically the solution is not correct on some grid points, say 6 grid
> > > nodes out of 64^3. The 6 grid nodes with problems belongs to 2 of the 128
> > > processors
> > > I am using.
> > > > Do you have any idea/suggestions on how to fix this problem?
> > > > This is the fragment of code I am using ( petsc 3.1 and Fortran 90):
> > > >   Please update to petsc-3.3. petsc-3.1 is too old.
> > >      I would do that but the version installed on the platform (Intrepid
> > > at ALCF) I am working on is 3.1-p2.
> > > 
> > > >      PetscErrorCode                petsc_err
> > > >      Mat                                         A
> > > >      PC                                           pc, subpc
> > > >      KSP                                         ksp
> > > >      KSP                                         subksp(1)
> > > >      :
> > > >      :
> > > >      :
> > > >      call KSPCreate(PETSC_COMM_WORLD,ksp,petsc_err)
> > > >      call KSPSetOperators(ksp,A,A,DIFFERENT_NONZERO_PATTERN,petsc_err)
> > > >   call KSPSetType(ksp,KSPCG, ) !the default type is gmres. I guess you
> > > > want CG
> > > > 
> > > >      call KSPGetPC(ksp,pc,petsc_err)
> > > >      call PCSetType(pc,PCBJACOBI,petsc_err)
> > > > !    call KSPSetUp(ksp,petsc_err)    call this at the end
> > > >           ! KSP context for each single block
> > > >      call
> > > > PCBJacobiGetSubKSP(pc,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,subksp(1),petsc_err)
> > > >      call KSPGetPC(subksp(1),subpc,petsc_err)
> > > >      call PCSetType(subpc,PCICC,petsc_err)
> > > >        call KSPSetType(subksp(1),KSPPREONLY petsc_err)
> > > >        call KSPSetTolerances(subksp(1),tol
> > > > ,PETSC_DEFAULT_DOUBLE_PRECISION,&
> > > >           &
> > > > PETSC_DEFAULT_DOUBLE_PRECISION,PETSC_DEFAULT_INTEGER,petsc_err)
> > > > 
> > > >     ! Remove nullspace from the singular system (Check PETSC_NULL)
> > > >      call
> > > > MatNullSpaceCreate(MPI_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL,nullspace,petsc_err)
> > > >      call KSPSetNullSpace(ksp, nullspace, petsc_err)
> > > >      call MatNullSpaceRemove(nullspace, b, PETSC_NULL,petsc_err)
> > > > 
> > > >      call KSPSolve(ksp,b,x,petsc_err)
> > > > 
> > > > I modified your code slightly. All these options can be provided at
> > > > runtime:
> > > > '-ksp_type cg -pc_type bjacobi -sub_pc_type icc'
> > > > 
> > > > Hong
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > On 07/13/2012 12:14 PM, Hong Zhang wrote:
> > > > > Michele :
> > > > > 
> > > > > I need to use the ICC factorization as preconditioner, but I noticed
> > > > > that no parallel version is supported.
> > > > > Is that correct?
> > > > > Correct.
> > > > >   If so, is there a work around, like building  the preconditioner "by
> > > > > hand" by using PETSc functions?
> > > > > You may try block jacobi with icc in the blocks  '-ksp_type cg
> > > > > -pc_type bjacobi -sub_pc_type icc'
> > > > > 
> > > > > Hong
> > > > > 
> > > > 
> > > > 
> > > 
> > 
> 
> 
> 



More information about the petsc-users mailing list