Question about memory used by PetsC Objects

Matthew Knepley knepley at gmail.com
Fri Apr 13 08:33:11 CDT 2007


On 4/13/07, Laurent Nguyen <laurent.nguyen at idris.fr> wrote:
> Barry,
>
> I thank you for your help. So I tried to apply the functions. It seems
> that PetscMemoryGetCurrentUsage() gives the total amount of memory
> allocated at the point of the program where it is placed. But, if a
> object is deallocated, PetscMemoryGetCurrentUsage() doesn't take it.
>
> I would like to try PetscMemoryGetMaximumUsage() at the end of the
> program hoping it gives me the maximum memory used by my program but
> there are problems. When I put PetscMemoryGetMaximumUsage(), I've this
> error at the execution:
>
> [0]PETSC ERROR: --------------------- Error Message
> ------------------------------------
> [0]PETSC ERROR: Object is in wrong state!
> [0]PETSC ERROR: To use this function you must first call
> PetscMemorySetGetMaximumUsage()!
>
> So I put PetscMemorySetGetMaximumUsage() before, but at linking, it
> didn't find PetscMemorySetGetMaximumUsage in the petsc libraries. I
> thought I made a bad install but when I tried on another machine, I've
> the same problem.

The function is definitely there (check src/sys/memory/mem.c). You can try
a short test:

  cd src/ksp/ksp/examples/tutorials
  make ex2
  ./ex2 -memory_info
  ./ex2 -malloc_log

Also, I have fixed the specific logging errors you pointed out in the dev
copy, but we are doing a code review to make sure no other omissions
are lurking.

  Matt

> Best regards,
>
> **************************************
> NGUYEN Anh-Khai Laurent
> Equipe Support Utilisateur
>
> Email    :    laurent.nguyen at idris.fr
> Tél      :    01.69.35.85.66
> Adresse  :    IDRIS - Institut du Développement et des Ressources en
>                Informatique Scientifique
>                CNRS
>                Batiment 506
>                BP 167
>                F - 91403 ORSAY Cedex
> Site Web :    http://www.idris.fr
> **************************************
>
> Barry Smith a écrit :
> >   Laurent,
> >
> >    The memory usage printed with -log_summary is not correct.
> > Much of the memory used is not printed out.
> >
> >    You can use PetscMemoryGetCurrentUsage() and PetscMemoryGetMaximumUsage()
> > in your code before and after creating a filling in PETSc objects
> > to see how much memory they are used. You can also use PetscMallocDump()
> > at any point to see exactly where in PETSc and how much all of PETSc's
> > memory was allocated.
> >
> >    Barry
> >
> >
> > On Thu, 12 Apr 2007, Laurent Nguyen wrote:
> >
> >> Hi,
> >>
> >> I'm a Petsc user, but I'm beginning to use petsc in a supercomputation
> >> context. So, I'm trying parallel versions of my old mono-processed programs.
> >> But I've some difficulties to determine how much memory my program use. (I
> >> give a little example). In this example on one processor (with these command
> >> line arguments: -mat_type mpiaij -pc_type none -log_summary), I created one
> >> mpiaij matrix (size = 500*500) and two vectors (size = 500). I've this
> >> information from output:
> >>
> >>   Matrix Object:
> >>     type=mpiaij, rows=250000, cols=250000
> >>     total: nonzeros=749996, allocated nonzeros=1750000
> >>
> >> To me, there is an array of 1750000 double precision number of 8 bytes =
> >> 14000000 bytes (14Mo).
> >>
> >> Same for vectors: 2*8*250000 = 4 Mo
> >>
> >> But in the log summary, I've:
> >>
> >> Memory usage is given in bytes:
> >>
> >> Object Type          Creations   Destructions   Memory  Descendants' Mem.
> >>
> >> --- Event Stage 0: Main Stage
> >>
> >>               Viewer     1              1          0     0
> >>            Index Set     2              2        672     0
> >>                  Map    16             16       4992     0
> >>                  Vec    10             10    2006576     0
> >>          Vec Scatter     1              1          0     0
> >>               Matrix     3              3       1068     0
> >>        Krylov Solver     1              1      17208     0
> >>       Preconditioner     1              1          0     0
> >> =============================================================
> >>
> >> I don't understand this output...If you have some documentation about how
> >> Petsc deals with memory or if you can explain, I would be very interested.
> >>
> >> This is a problem because I'm working on IBM SP4, and I've limitations of
> >> memory (700mb for data and 700mb for stack). I think the objects created by
> >> Petsc is created in the stack memory, but as I cannot determine exactly the
> >> memory usage, I cannot verify.
> >>
> >> Thank you for your advices,
> >>
> >> Best regards
> >>
> >>
> >
> >
>
>


-- 
The government saving money is like me spilling beer. It happens, but
never on purpose.




More information about the petsc-users mailing list