[petsc-users] [petsc-maint] Memory usage function: output for all ranks

Andrey Ovsyannikov aovsyannikov at lbl.gov
Mon Nov 30 17:42:57 CST 2015


Hi Matt,

Thanks for your quick response. I like Massif tool and I have been using it
recently. However, I was not able to run Valgrind for large jobs. I am
interested in memory analysis of large scale runs with more than 1000 MPI
ranks. PetscMemoryGetCurrentUsage() works fine for this puprpose but it
does not provide details where I allocate memory. Maybe it would beneficial
for PETSc community to have some tool/function from PETSc itself.

Anyway, thanks very much for your suggestion!

Andrey

On Mon, Nov 30, 2015 at 3:31 PM, Matthew Knepley <knepley at gmail.com> wrote:

> On Mon, Nov 30, 2015 at 5:20 PM, Andrey Ovsyannikov <aovsyannikov at lbl.gov>
> wrote:
>
>> Dear PETSc team,
>>
>> I am working on optimization of Chombo-Crunch CFD code for
>> next-generation supercomputer architectures at NERSC (Berkeley Lab) and we
>> use PETSc AMG solver. During memory analysis study I faced with a
>> difficulty to get memory usage data from PETSc for all MPI ranks. I am
>> looking for memory dump function to get a detailed information on memory
>> usage (not only resident size and virtual memory but allso allocation by
>> Vec, Mat, etc). There is PetscMallocDumpLog() function but it is a
>> collective function and it always provides a log for 0 rank. I am wondering
>> if it is possible to include in PETSc a modification of
>> PetscMallocDumpLog() which dumps the similar log but for all MPI ranks.
>>
>> I am attaching an example of my own memory function which uses PETSc
>> non-collective functions and it provides a resident set size and virtual
>> memory for all ranks. Perhaps in a similar way it is possible to modify
>> PetscMallocDumpLog.
>>
>
> You could walk the heap if you use the debugging malloc infrastructure in
> PETSc. However, I would really recommend
> trying out Massif from the valgrind toolset. Its designed for this and
> really nice.
>
>   Thanks,
>
>     Matt
>
>
>> Thank you,
>>
>> void petscMemoryLog(const char prefix[])
>> {
>>   FILE* fd;
>>   char fname[PETSC_MAX_PATH_LEN];
>>   PetscMPIInt rank;
>>
>>   MPI_Comm_rank(Chombo_MPI::comm,&rank);
>>
>>   PetscLogDouble allocated;
>>   PetscLogDouble resident;
>>   PetscMallocGetCurrentUsage(&allocated);
>>   PetscMemoryGetCurrentUsage(&resident);
>>   PetscSNPrintf(fname,sizeof(fname),"%s.%d",prefix,rank);
>>   PetscFOpen(PETSC_COMM_SELF,fname,"a",&fd);
>>
>>   PetscFPrintf(PETSC_COMM_SELF,fd,"### PETSc memory footprint for rank %d
>> \n",rank);
>>   PetscFPrintf(PETSC_COMM_SELF,fd,"[%d] Memory allocated by PetscMalloc()
>> %.0f bytes\n",rank,allocated);
>>   PetscFPrintf(PETSC_COMM_SELF,fd,"[%d] RSS usage by entire process %.0f
>> KB\n",rank,resident);
>>   PetscFClose(PETSC_COMM_SELF,fd);
>> }
>>
>> Best regards,
>> Andrey Ovsyannikov, Ph.D.
>> Postdoctoral Fellow
>> NERSC Division
>> Lawrence Berkeley National Laboratory
>> 510-486-7880
>> aovsyannikov at lbl.gov
>>
>
>
>
> --
> 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
>



-- 
Andrey Ovsyannikov, Ph.D.
Postdoctoral Fellow
NERSC Division
Lawrence Berkeley National Laboratory
510-486-7880
aovsyannikov at lbl.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151130/457a2d07/attachment.html>


More information about the petsc-users mailing list