[petsc-users] Petsc memory consumption keep increasing in my loop

Medane TCHAKOROM medane.tchakorom at univ-fcomte.fr
Fri Sep 24 10:38:22 CDT 2021


Thank you for the precision, now i can eliminate this case, and try to 
find where my bug is coming from.

Médane

On 24/09/2021 17:21, Barry Smith wrote:
>
>   Ahh, the stuff you are seeing is just memory associated with the 
> initialization of the matrix package; it is not the matrix memory 
> (that is all freed). This memory used in the initialization is used 
> only once and will not grow with more matrices.
>
>   If you run the program with -malloc_dump then you will see nothing 
> is printed since the memory used in the initialization is freed in 
> PetscFinalize().
>
>   Barry
>
>
>> On Sep 24, 2021, at 10:31 AM, Medane TCHAKOROM 
>> <medane.tchakorom at univ-fcomte.fr 
>> <mailto:medane.tchakorom at univ-fcomte.fr>> wrote:
>>
>> Thanks Barry,
>>
>> I can't share the orginal code i'am working on unfortunately.
>>
>> But the example i wrote -- even if you do not that into account 
>> //SOME CODE HERE .. part -- give me , by using PetscMallocDump, some 
>> informations about memory that was not freed.
>>
>> Based on the example code i sent, i was expecting that 
>> PetscMallocDump give no output.
>>
>> Médane
>>
>>
>> On 24/09/2021 16:13, Barry Smith wrote:
>>>  The code you sent looks fine, it should not leak memory.
>>>
>>>  Perhaps the /// SOME CODE HERE.... is doing something that prevents 
>>> the matrix from being actually freed. PETSc uses reference counting 
>>> on its objects so if another object keeps a reference to the matrix 
>>> then the memory of the matrix will not be freed until the reference 
>>> count drops back to zero. For example if a KSP has a reference to 
>>> the matrix and the KSP has not been completely freed the matrix 
>>> memory will remain.
>>>
>>>   We would need to see the full code to understand why the matrix is 
>>> not being freed.
>>>
>>>   Barry
>>>
>>>
>>>> On Sep 24, 2021, at 10:08 AM, Medane TCHAKOROM 
>>>> <medane.tchakorom at univ-fcomte.fr 
>>>> <mailto:medane.tchakorom at univ-fcomte.fr>> wrote:
>>>>
>>>> Hello,
>>>>
>>>> I have problem with a code i'am working on.
>>>>
>>>> To illustrate my problem, here is an example:
>>>>
>>>>
>>>> int main(int argc, char *argv[])
>>>> {
>>>>
>>>>     PetscErrorCode ierr;
>>>>
>>>>     ierr = PetscInitialize(&argc, &argv, (char *)0, NULL);
>>>>     if (ierr)
>>>>         return ierr;
>>>>
>>>>     int i = 0;
>>>>     for (i = 0; i < 1; i++)
>>>>     {
>>>>         Mat A;
>>>>         ierr = MatCreate(PETSC_COMM_WORLD, &A);
>>>>         CHKERRQ(ierr);
>>>>         ierr = MatSetSizes(A, 16, 16, PETSC_DECIDE,PETSC_DECIDE);
>>>>         CHKERRQ(ierr);
>>>>         ierr = MatSetFromOptions(A);
>>>>         CHKERRQ(ierr);
>>>>         ierr = MatSetUp(A);
>>>>         CHKERRQ(ierr);
>>>>
>>>>
>>>>         ierr = MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);
>>>>         CHKERRQ(ierr);
>>>>         ierr = MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);
>>>>         CHKERRQ(ierr);
>>>>
>>>>
>>>>
>>>>         /// SOME CODE HERE....
>>>>
>>>>         MatDestroy(&A);
>>>>
>>>>
>>>>     }
>>>>
>>>>
>>>>     FILE *fPtr;
>>>>     fPtr = fopen("petsc_dump_file.txt", "a");
>>>>     PetscMallocDump(fPtr);
>>>>     fclose(fPtr);
>>>>
>>>>     ierr = PetscFinalize();
>>>>     CHKERRQ(ierr);
>>>>
>>>>     return 0;
>>>> }
>>>>
>>>>
>>>>
>>>> The problem is , in the loop, the memory consumption keep 
>>>> increasing till the end of the program.
>>>>
>>>> I checked memory leak with PetscMallocDump, and found out that the 
>>>> problem may be due to matrix creation.
>>>>
>>>> I'am new to Petsc and i don't know if i'am doing something wrong. 
>>>> Thanks
>>>>
>>>>
>>>> Médane
>>>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20210924/a72f46a1/attachment.html>


More information about the petsc-users mailing list