[petsc-users] parallel matmult flop measure

Matthew Knepley knepley at gmail.com
Fri Aug 30 13:13:47 CDT 2013


On Fri, Aug 30, 2013 at 1:04 PM, France Boillod-Cerneux <
boillod.france at gmail.com> wrote:

> Dear PETSc user,
>
> I am using MatMult() function in a C++ program.
>
> Currently, my matrix is MATMPIAIJ format type, and I load the matrix from
> a binary file at petsc format. let's call the matrix A:
>
> I know before the execution the global rows, columns and nnz.
>
> my program is doing something like:
>
> global loop
>      //begin to measure flop rate
>      inner loop
>            MatMult(A,x,y)
>      end inner loop
>      //want to know Flop rate of Matmult at this point
> end global loop
>
> I am looking for a function to know at runtime the flop rate for each
> process regarding matmult function.
>

You can do what Barry suggests, however there might be intervening work, so
you can be more precise using:

  PetscStageLog      stageLog;
  PetscEventPerfLog  eventLog;
  PetscInt           stage = 0;
  PetscLogEvent      event;
  PetscEventPerfInfo eventInfo;

  PetscLogGetStageLog(&stageLog);
  PetscStageLogGetEventPerfLog(stageLog, stage, &eventLog);
  eventInfo = eventLog->eventInfo[MAT_Mult];
  <Use eventInfo.flops/eventInfo.time>

  Thanks,

      Matt

I had a look at pdf of Loic Gouarin (introduction to pertsc, performance
> May 2013) but it does not correspond to what i want, or i missunderstood?
>
> My other solution is using the matmpiaijsetpreallocation and therefore
> know the complete parallel distribution of A, but this implies a
> pre-treatment on my matrix A.
>
> I was wondering if i can create my matrix A without knowing in advance the
> parallel distribution and then collect the information about parallel
> distribution?
>
> Or more easier, if a function like PetscGetFlops could solve my problem?
> so far i understood that this function measure the flop since the begining
> of program, but this is not what i want to use, i want to have the flop
> ratio right after ending the inner loop, and this, for each global iteration
>
> Any ideas/suggestions would help,
>
> Thank you very much,
>
> France
>
>
> --
> Bien cordialement - Best regards - Mit freundlichen Grüßen,
>
> *France BOILLOD-CERNEUX *
> *PhD Student, Laboratoire d'Informatique Fondamentale de Lille *
> *(LIFL), CNRS*
>
> France.Boillod-Cerneux at cea.fr
> Tel. : +33 (0) 1 6908 - 9527
> Tel. : +33 (0) 6 4781 - 3059
>
> DEN/DANS/DM2S
> CEA Saclay
> 91191 Gif-sur-Yvette
> FRANCE
>
> http://www.lifl.fr/
> www-centre-saclay.cea.fr <http://www-centre-saclay.cea.fr/en>
>
>



-- 
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/20130830/d51ea889/attachment.html>


More information about the petsc-users mailing list