<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div> 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. <div class=""><br class=""></div><div class=""> If you run the program with <span style="font-family: Menlo; font-size: 14px;" class="">-malloc_dump</span> then you will see nothing is printed since the memory used in the initialization is freed in PetscFinalize().</div><div class=""><br class=""></div><div class=""> Barry</div><div class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Sep 24, 2021, at 10:31 AM, Medane TCHAKOROM <<a href="mailto:medane.tchakorom@univ-fcomte.fr" class="">medane.tchakorom@univ-fcomte.fr</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Thanks Barry,<br class=""><br class="">I can't share the orginal code i'am working on unfortunately.<br class=""><br class="">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.<br class=""><br class="">Based on the example code i sent, i was expecting that PetscMallocDump give no output.<br class=""><br class="">Médane<br class=""><br class=""><br class="">On 24/09/2021 16:13, Barry Smith wrote:<br class=""><blockquote type="cite" class=""> The code you sent looks fine, it should not leak memory.<br class=""><br class=""> 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.<br class=""><br class=""> We would need to see the full code to understand why the matrix is not being freed.<br class=""><br class=""> Barry<br class=""><br class=""><br class=""><blockquote type="cite" class="">On Sep 24, 2021, at 10:08 AM, Medane TCHAKOROM <<a href="mailto:medane.tchakorom@univ-fcomte.fr" class="">medane.tchakorom@univ-fcomte.fr</a>> wrote:<br class=""><br class="">Hello,<br class=""><br class="">I have problem with a code i'am working on.<br class=""><br class="">To illustrate my problem, here is an example:<br class=""><br class=""><br class="">int main(int argc, char *argv[])<br class="">{<br class=""><br class=""> PetscErrorCode ierr;<br class=""><br class=""> ierr = PetscInitialize(&argc, &argv, (char *)0, NULL);<br class=""> if (ierr)<br class=""> return ierr;<br class=""><br class=""> int i = 0;<br class=""> for (i = 0; i < 1; i++)<br class=""> {<br class=""> Mat A;<br class=""> ierr = MatCreate(PETSC_COMM_WORLD, &A);<br class=""> CHKERRQ(ierr);<br class=""> ierr = MatSetSizes(A, 16, 16, PETSC_DECIDE,PETSC_DECIDE);<br class=""> CHKERRQ(ierr);<br class=""> ierr = MatSetFromOptions(A);<br class=""> CHKERRQ(ierr);<br class=""> ierr = MatSetUp(A);<br class=""> CHKERRQ(ierr);<br class=""><br class=""><br class=""> ierr = MatAssemblyBegin(A, MAT_FINAL_ASSEMBLY);<br class=""> CHKERRQ(ierr);<br class=""> ierr = MatAssemblyEnd(A, MAT_FINAL_ASSEMBLY);<br class=""> CHKERRQ(ierr);<br class=""><br class=""><br class=""><br class=""> /// SOME CODE HERE....<br class=""><br class=""> MatDestroy(&A);<br class=""><br class=""><br class=""> }<br class=""><br class=""><br class=""> FILE *fPtr;<br class=""> fPtr = fopen("petsc_dump_file.txt", "a");<br class=""> PetscMallocDump(fPtr);<br class=""> fclose(fPtr);<br class=""><br class=""> ierr = PetscFinalize();<br class=""> CHKERRQ(ierr);<br class=""><br class=""> return 0;<br class="">}<br class=""><br class=""><br class=""><br class="">The problem is , in the loop, the memory consumption keep increasing till the end of the program.<br class=""><br class="">I checked memory leak with PetscMallocDump, and found out that the problem may be due to matrix creation.<br class=""><br class="">I'am new to Petsc and i don't know if i'am doing something wrong. Thanks<br class=""><br class=""><br class="">Médane<br class=""><br class=""></blockquote></blockquote></div></div></blockquote></div><br class=""></div></body></html>