PETSc isn't calling MPI_Alloc_mem.  You should run with valgrind
--tool=massif or use a debugger and set a breakpoint on malloc (or
possibly other allocation functions) inside that loop.  If you don't
want to debug it, use a different MPI.

Praveen C <[email protected]> writes:

> I did this
>
>    do i=1,10000000
>    call VecGhostUpdateBegin(p%v_u, INSERT_VALUES, SCATTER_FORWARD, &
>                             ierr); CHKERRQ(ierr)
>    call VecGhostUpdateEnd  (p%v_u, INSERT_VALUES, SCATTER_FORWARD, &
>                             ierr); CHKERRQ(ierr)
>    call PetscMallocGetCurrentUsage(space, ierr); CHKERRQ(ierr)
>    if(rank==0) print*,space
>    enddo
>
> and the value printed is zero, so this means the problem must come from mpi. 
> Since I am not directly using MPI, what should I look for with valgrind and 
> how will that help to solve this ?
>
> There is a recent issue related to memory leak
>
> https://github.com/open-mpi/ompi/issues/4567 
> <https://github.com/open-mpi/ompi/issues/4567>
>
> Thank you
> praveen
>
>> On 26-Dec-2017, at 7:33 PM, Jed Brown <[email protected]> wrote:
>> 
>> First check PetscMallocGetCurrentUsage() in the loop to confirm that
>> there is no leak of PetscMalloc()'ed memory.  That would mean the leak
>> comes from elsewhere, maybe MPI.
>> 
>> Then get a stack trace for the leaking memory (e.g., using valgrind
>> --tool=massif or a debugger)?

Reply via email to