[petsc-users] Scaling/Preconditioners for Poisson equation
Filippo Leonardi
filippo.leonardi at sam.math.ethz.ch
Mon Sep 29 08:42:19 CDT 2014
Hi,
I am trying to solve a standard second order central differenced Poisson
equation in parallel, in 3D, using a 3D structured DMDAs (extremely standard
Laplacian matrix).
I want to get some nice scaling (especially weak), but my results show that
the Krylow method is not performing as expected. The problem (at leas for CG +
Bjacobi) seems to lie on the number of iterations.
In particular the number of iterations grows with CG (the matrix is SPD) +
BJacobi as mesh is refined (probably due to condition number increasing) and
number of processors is increased (probably due to the Bjacobi
preconditioner). For instance I tried the following setup:
1 procs to solve 32^3 domain => 20 iterations
8 procs to solve 64^3 domain => 60 iterations
64 procs to solve 128^3 domain => 101 iterations
Is there something pathological with my runs (maybe I am missing something)?
Is there somebody who can provide me weak scaling benchmarks for equivalent
problems? (Maybe there is some better preconditioner for this problem).
I am also aware that Multigrid is even better for this problems but the
**scalability** of my runs seems to be as bad as with CG.
-pc_mg_galerkin
-pc_type mg
(both directly with richardson or as preconditioner to cg)
The following is the "-log_summary" of a 128^3 run, notice that I solve the
system multiple times (hence KSPSolve is multiplied by 128). Using CG +
BJacobi.
Tell me if I missed some detail and sorry for the length of the post.
Thanks,
Filippo
Using Petsc Release Version 3.3.0, Patch 3, Wed Aug 29 11:26:24 CDT 2012
Max Max/Min Avg Total
Time (sec): 9.095e+01 1.00001 9.095e+01
Objects: 1.875e+03 1.00000 1.875e+03
Flops: 1.733e+10 1.00000 1.733e+10 1.109e+12
Flops/sec: 1.905e+08 1.00001 1.905e+08 1.219e+10
MPI Messages: 1.050e+05 1.00594 1.044e+05 6.679e+06
MPI Message Lengths: 1.184e+09 1.37826 8.283e+03 5.532e+10
MPI Reductions: 4.136e+04 1.00000
Flop counting convention: 1 flop = 1 real number operation of type
(multiply/divide/add/subtract)
e.g., VecAXPY() for real vectors of length N -->
2N flops
and VecAXPY() for complex vectors of length N -->
8N flops
Summary of Stages: ----- Time ------ ----- Flops ----- --- Messages ---
-- Message Lengths -- -- Reductions --
Avg %Total Avg %Total counts %Total
Avg %Total counts %Total
0: Main Stage: 1.1468e-01 0.1% 0.0000e+00 0.0% 0.000e+00 0.0%
0.000e+00 0.0% 0.000e+00 0.0%
1: StepStage: 4.4170e-01 0.5% 7.2478e+09 0.7% 0.000e+00 0.0%
0.000e+00 0.0% 0.000e+00 0.0%
2: ConvStage: 8.8333e+00 9.7% 3.7044e+10 3.3% 1.475e+06 22.1%
1.809e+03 21.8% 0.000e+00 0.0%
3: ProjStage: 7.7169e+01 84.8% 1.0556e+12 95.2% 5.151e+06 77.1%
6.317e+03 76.3% 4.024e+04 97.3%
4: IoStage: 2.4789e+00 2.7% 0.0000e+00 0.0% 3.564e+03 0.1%
1.017e+02 1.2% 5.000e+01 0.1%
5: SolvAlloc: 7.0947e-01 0.8% 0.0000e+00 0.0% 5.632e+03 0.1%
9.587e-01 0.0% 3.330e+02 0.8%
6: SolvSolve: 1.2044e+00 1.3% 9.1679e+09 0.8% 4.454e+04 0.7%
5.464e+01 0.7% 7.320e+02 1.8%
7: SolvDeall: 7.5711e-04 0.0% 0.0000e+00 0.0% 0.000e+00 0.0%
0.000e+00 0.0% 0.000e+00 0.0%
------------------------------------------------------------------------------------------------------------------------
See the 'Profiling' chapter of the users' manual for details on interpreting
output.
Phase summary info:
Count: number of times phase was executed
Time and Flops: Max - maximum over all processors
Ratio - ratio of maximum to minimum over all processors
Mess: number of messages sent
Avg. len: average message length
Reduct: number of global reductions
Global: entire computation
Stage: stages of a computation. Set stages with PetscLogStagePush() and
PetscLogStagePop().
%T - percent time in this phase %f - percent flops in this phase
%M - percent messages in this phase %L - percent message lengths in
this phase
%R - percent reductions in this phase
Total Mflop/s: 10e-6 * (sum of flops over all processors)/(max time over all
processors)
------------------------------------------------------------------------------------------------------------------------
Event Count Time (sec) Flops
--- Global --- --- Stage --- Total
Max Ratio Max Ratio Max Ratio Mess Avg len
Reduct %T %f %M %L %R %T %f %M %L %R Mflop/s
------------------------------------------------------------------------------------------------------------------------
--- Event Stage 0: Main Stage
--- Event Stage 1: StepStage
VecAXPY 1536 1.0 4.6436e-01 1.1 1.13e+08 1.0 0.0e+00 0.0e+00
0.0e+00 0 1 0 0 0 99100 0 0 0 15608
--- Event Stage 2: ConvStage
VecCopy 2304 1.0 8.1658e-01 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 1 0 0 0 0 9 0 0 0 0 0
VecAXPY 2304 1.0 6.1324e-01 1.2 1.51e+08 1.0 0.0e+00 0.0e+00
0.0e+00 1 1 0 0 0 6 26 0 0 0 15758
VecAXPBYCZ 2688 1.0 1.3029e+00 1.1 3.52e+08 1.0 0.0e+00 0.0e+00
0.0e+00 1 2 0 0 0 14 61 0 0 0 17306
VecPointwiseMult 2304 1.0 7.2368e-01 1.0 7.55e+07 1.0 0.0e+00 0.0e+00
0.0e+00 1 0 0 0 0 8 13 0 0 0 6677
VecScatterBegin 3840 1.0 1.8182e+00 1.3 0.00e+00 0.0 1.5e+06 8.2e+03
0.0e+00 2 0 22 22 0 18 0100100 0 0
VecScatterEnd 3840 1.0 1.1972e+00 2.2 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 1 0 0 0 0 10 0 0 0 0 0
--- Event Stage 3: ProjStage
VecTDot 25802 1.0 4.2552e+00 1.3 1.69e+09 1.0 0.0e+00 0.0e+00
2.6e+04 4 10 0 0 62 5 10 0 0 64 25433
VecNorm 13029 1.0 3.0772e+00 3.3 8.54e+08 1.0 0.0e+00 0.0e+00
1.3e+04 2 5 0 0 32 2 5 0 0 32 17759
VecCopy 640 1.0 2.4339e-01 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecSet 13157 1.0 7.0903e-01 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 1 0 0 0 0 1 0 0 0 0 0
VecAXPY 26186 1.0 4.1462e+00 1.1 1.72e+09 1.0 0.0e+00 0.0e+00
0.0e+00 4 10 0 0 0 5 10 0 0 0 26490
VecAYPX 12773 1.0 1.9135e+00 1.1 8.37e+08 1.0 0.0e+00 0.0e+00
0.0e+00 2 5 0 0 0 2 5 0 0 0 27997
VecScatterBegin 13413 1.0 1.0689e+00 1.1 0.00e+00 0.0 5.2e+06 8.2e+03
0.0e+00 1 0 77 76 0 1 0100100 0 0
VecScatterEnd 13413 1.0 2.7944e+00 1.7 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 2 0 0 0 0 3 0 0 0 0 0
MatMult 12901 1.0 3.2072e+01 1.0 5.92e+09 1.0 5.0e+06 8.2e+03
0.0e+00 35 34 74 73 0 41 36 96 96 0 11810
MatSolve 13029 1.0 3.0851e+01 1.1 5.39e+09 1.0 0.0e+00 0.0e+00
0.0e+00 33 31 0 0 0 39 33 0 0 0 11182
MatLUFactorNum 128 1.0 1.2922e+00 1.0 8.80e+07 1.0 0.0e+00 0.0e+00
0.0e+00 1 1 0 0 0 2 1 0 0 0 4358
MatILUFactorSym 128 1.0 7.5075e-01 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
1.3e+02 1 0 0 0 0 1 0 0 0 0 0
MatGetRowIJ 128 1.0 1.4782e-04 1.8 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 0 0 0 0 0 0
MatGetOrdering 128 1.0 5.7567e-02 1.0 0.00e+00 0.0 0.0e+00 0.0e+00
2.6e+02 0 0 0 0 1 0 0 0 0 1 0
KSPSetUp 256 1.0 1.9913e-01 1.6 0.00e+00 0.0 0.0e+00 0.0e+00
7.7e+02 0 0 0 0 2 0 0 0 0 2 0
KSPSolve 128 1.0 7.6381e+01 1.0 1.65e+10 1.0 5.0e+06 8.2e+03
4.0e+04 84 95 74 73 97 99100 96 96100 13800
PCSetUp 256 1.0 2.1503e+00 1.0 8.80e+07 1.0 0.0e+00 0.0e+00
6.4e+02 2 1 0 0 2 3 1 0 0 2 2619
PCSetUpOnBlocks 128 1.0 2.1232e+00 1.0 8.80e+07 1.0 0.0e+00 0.0e+00
3.8e+02 2 1 0 0 1 3 1 0 0 1 2652
PCApply 13029 1.0 3.1812e+01 1.1 5.39e+09 1.0 0.0e+00 0.0e+00
0.0e+00 34 31 0 0 0 40 33 0 0 0 10844
--- Event Stage 4: IoStage
VecView 10 1.0 1.7523e+00282.9 0.00e+00 0.0 0.0e+00 0.0e+00
2.0e+01 1 0 0 0 0 36 0 0 0 40 0
VecCopy 10 1.0 2.2449e-03 1.7 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecScatterBegin 6 1.0 2.3620e-03 2.4 0.00e+00 0.0 2.3e+03 8.2e+03
0.0e+00 0 0 0 0 0 0 0 65 3 0 0
VecScatterEnd 6 1.0 4.4194e-01663.9 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 9 0 0 0 0 0
--- Event Stage 5: SolvAlloc
VecSet 50 1.0 1.3170e-01 5.6 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 13 0 0 0 0 0
MatAssemblyBegin 4 1.0 3.9801e-0230.0 0.00e+00 0.0 0.0e+00 0.0e+00
8.0e+00 0 0 0 0 0 3 0 0 0 2 0
MatAssemblyEnd 4 1.0 2.2752e-02 1.0 0.00e+00 0.0 1.5e+03 2.0e+03
1.6e+01 0 0 0 0 0 3 0 27 49 5 0
--- Event Stage 6: SolvSolve
VecTDot 224 1.0 3.5454e-02 1.3 1.47e+07 1.0 0.0e+00 0.0e+00
2.2e+02 0 0 0 0 1 3 10 0 0 31 26499
VecNorm 497 1.0 1.5268e-01 1.4 7.41e+06 1.0 0.0e+00 0.0e+00
5.0e+02 0 0 0 0 1 11 5 0 0 68 3104
VecCopy 8 1.0 2.7523e-03 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecSet 114 1.0 5.9965e-03 1.1 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 0 0 0 0 0 0
VecAXPY 230 1.0 3.7198e-02 1.1 1.51e+07 1.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 3 11 0 0 0 25934
VecAYPX 111 1.0 1.7153e-02 1.1 7.27e+06 1.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 1 5 0 0 0 27142
VecScatterBegin 116 1.0 1.1888e-02 1.2 0.00e+00 0.0 4.5e+04 8.2e+03
0.0e+00 0 0 1 1 0 1 0100100 0 0
VecScatterEnd 116 1.0 2.8105e-02 2.0 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 2 0 0 0 0 0
MatMult 112 1.0 2.8080e-01 1.0 5.14e+07 1.0 4.3e+04 8.2e+03
0.0e+00 0 0 1 1 0 23 36 97 97 0 11711
MatSolve 113 1.0 2.6673e-01 1.1 4.67e+07 1.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 22 33 0 0 0 11217
MatLUFactorNum 1 1.0 1.0332e-02 1.0 6.87e+05 1.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 1 0 0 0 0 4259
MatILUFactorSym 1 1.0 3.1291e-02 4.2 0.00e+00 0.0 0.0e+00 0.0e+00
1.0e+00 0 0 0 0 0 2 0 0 0 0 0
MatGetRowIJ 1 1.0 4.0531e-06 4.2 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 0 0 0 0 0 0
MatGetOrdering 1 1.0 3.4251e-03 5.4 0.00e+00 0.0 0.0e+00 0.0e+00
2.0e+00 0 0 0 0 0 0 0 0 0 0 0
KSPSetUp 2 1.0 3.6959e-0210.1 0.00e+00 0.0 0.0e+00 0.0e+00
6.0e+00 0 0 0 0 0 1 0 0 0 1 0
KSPSolve 1 1.0 6.9956e-01 1.0 1.43e+08 1.0 4.3e+04 8.2e+03
3.5e+02 1 1 1 1 1 58100 97 97 48 13069
PCSetUp 2 1.0 4.4161e-02 2.3 6.87e+05 1.0 0.0e+00 0.0e+00
5.0e+00 0 0 0 0 0 3 0 0 0 1 996
PCSetUpOnBlocks 1 1.0 4.3894e-02 2.4 6.87e+05 1.0 0.0e+00 0.0e+00
3.0e+00 0 0 0 0 0 3 0 0 0 0 1002
PCApply 113 1.0 2.7507e-01 1.1 4.67e+07 1.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 22 33 0 0 0 10877
--- Event Stage 7: SolvDeall
------------------------------------------------------------------------------------------------------------------------
Memory usage is given in bytes:
Object Type Creations Destructions Memory Descendants' Mem.
Reports information only for process 0.
--- Event Stage 0: Main Stage
Viewer 1 0 0 0
--- Event Stage 1: StepStage
--- Event Stage 2: ConvStage
--- Event Stage 3: ProjStage
Vector 640 640 101604352 0
Matrix 128 128 410327040 0
Index Set 384 384 17062912 0
Krylov Solver 256 256 282624 0
Preconditioner 256 256 228352 0
--- Event Stage 4: IoStage
Vector 10 10 2636400 0
Viewer 10 10 6880 0
--- Event Stage 5: SolvAlloc
Vector 140 6 8848 0
Vector Scatter 6 0 0 0
Matrix 6 0 0 0
Distributed Mesh 2 0 0 0
Bipartite Graph 4 0 0 0
Index Set 14 14 372400 0
IS L to G Mapping 3 0 0 0
Krylov Solver 1 0 0 0
Preconditioner 1 0 0 0
--- Event Stage 6: SolvSolve
Vector 5 0 0 0
Matrix 1 0 0 0
Index Set 3 0 0 0
Krylov Solver 2 1 1136 0
Preconditioner 2 1 824 0
--- Event Stage 7: SolvDeall
Vector 0 133 36676728 0
Vector Scatter 0 1 1036 0
Matrix 0 4 7038924 0
Index Set 0 3 133304 0
Krylov Solver 0 2 2208 0
Preconditioner 0 2 1784 0
========================================================================================================================
Average time to get PetscTime(): 9.53674e-08
Average time for MPI_Barrier(): 1.12057e-05
Average time for zero size MPI_Send(): 1.3113e-06
#PETSc Option Table entries:
-ksp_type cg
-log_summary
-pc_type bjacobi
#End of PETSc Option Table entries
Compiled without FORTRAN kernels
Compiled with full precision matrices (default)
sizeof(short) 2 sizeof(int) 4 sizeof(long) 8 sizeof(void*) 8
sizeof(PetscScalar) 8 sizeof(PetscInt) 4
Configure run at:
Configure options:
Application 9457215 resources: utime ~5920s, stime ~58s
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ETHZ.vcf
Type: text/vcard
Size: 594 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140929/32bf1c7d/attachment-0001.bin>
More information about the petsc-users
mailing list