[petsc-users] Which preconditioners are scalable?

Sebastian Steiger steiger at purdue.edu
Fri Mar 11 09:52:02 CST 2011


Hello PETSc developers

I'm doing some scaling benchmarks and I found that the parallel asm
preconditioner, my favorite preconditioner, has a limit in the number of
cores it can handle.

I am doing a numerical experiment where I scale up the size of my matrix
by roughly the same factor as the number of CPUs employed. When I look
at which function used how much memory using PETSc's routine
PetscMallocDumpLog, I see the following:

Function name                        N=300         N=600     increase
======================================================================
MatGetSubMatrices_MPIAIJ_Local    75'912'016   134'516'928    1.77
MatIncreaseOverlap_MPIAIJ_Once    168'288'288  346'870'832    2.06
MatIncreaseOverlap_MPIAIJ_Receive  2'918'960     5'658'160    1.94

The matrix sizes are 6'899'904 and 14'224'896, respectively. Above
N~5000 CPUs I am running out of memory.

Here's my question now: Is the asm preconditioner limited from the
algorithm point of view, or is it the implementation? I thought that
'only' the local matrices, plus some constant overlap with neighbors,
are solved, so that memory consumption should stay constant when I scale
up with a constant number of rows per process.

Best
Sebastian




More information about the petsc-users mailing list