[petsc-users] Reductions in various vector and matrix kernels
R. Oğuz Selvitopi
roguzsel at gmail.com
Sat Jan 4 13:32:09 CST 2014
Hello,
I am trying to understand the output generated by PETSc with -log_summary
option.
Using PetscLogStageRegister/PetscLogStagePush/PetscLogStagePop I want to
find out if there exists unnecessary communication in my code.
My problem is with understanding the number of reductions performed.
I have a solver whose stages are logged, and in the summary stages output,
I get
Summary of Stages: ----- Time ------ ----- Flops ----- --- Messages ---
-- Message Lengths -- -- Reductions --
Avg %Total Avg %Total counts
%Total Avg %Total counts %Total
4: Solver: 6.5625e-04 4.3% 4.2000e+02 59.7% 1.600e+01 23.2%
3.478e+00 14.5% 8.000e+00 5.3%
where it seems I have 8 reduction operations performed. But in the details
of the stage events, I get:
--- Event Stage 4: Solver
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
------------------------------------------------------------------------------------------------------------------------
MatMult 1 1.0 1.2207e-04 1.8 4.10e+01 4.1 8.0e+00
1.5e+01 0.0e+00 1 16 12 7 0 15 27 50 50 0 1
MatMultTranspose 1 1.0 1.2112e-04 1.0 4.60e+01 3.8 8.0e+00 1.5e+01
2.0e+00 1 18 12 7 1 18 30 50 50 25 1
VecDot 3 1.0 2.6989e-04 1.2 2.90e+01 2.6 0.0e+00
0.0e+00 3.0e+00 2 12 0 0 2 36 20 0 0 38 0
VecSet 2 1.0 8.1062e-06 1.5 0.00e+00 0.0 0.0e+00
0.0e+00 0.0e+00 0 0 0 0 0 1 0 0 0 0 0
VecAXPY 2 1.0 3.7909e-05 1.3 2.00e+01 2.0 0.0e+00 0.0e+00
0.0e+00 0 9 0 0 0 5 15 0 0 0 2
VecAYPX 1 1.0 5.0068e-06 1.2 1.00e+01 1.7 0.0e+00 0.0e+00
0.0e+00 0 5 0 0 0 1 8 0 0 0 6
VecScatterBegin 2 1.0 7.2956e-05 2.4 0.00e+00 0.0 1.6e+01 1.5e+01
0.0e+00 0 0 23 14 0 6 0100100 0 0
VecScatterEnd 2 1.0 9.5129e-05 2.2 0.00e+00 0.0 0.0e+00 0.0e+00
0.0e+00 0 0 0 0 0 10 0 0 0 0 0
It seems there are only 5 reductions.
But when I detail my log stages, it shows up VecAXPY/VecAYPX operations
require reductions as well (I have two VecAXPY and a single VecAYPX, so 5+3
= 8).
(Whose logs I have not included here).
Normally these two operations should not require any reductions at all, as
opposed to VecDot.
Do VecAXPY/VecAYPX require reductions? Is it because PETSc is compiled with
the debugging option so that it performs additional checks that perform
reductions?
Which is the correct number of reductions in above statistics, 5 or 8?
Moreover, why does MatMult require no reduction whereas MatMultTranspose
requires two of them?
Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140104/84a4e51d/attachment.html>
More information about the petsc-users
mailing list