[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: memory bleeding



Are you destroying the matrix created by MatMatMult()? From the webpage:

Notes

C will be created and must be destroyed by the user with MatDestroy(). Unless scall is MAT_REUSE_MATRIX


Thanks,

   Matt


On 5/9/06, Jordi Marcé Nogué <jordi.marce@xxxxxxx> wrote:
Hi,

I find my problem with the memory. Using  PetscTrDump(PETSC_NULL) I've
cornered it and I've find the lines which generate it.

I've discovered that the functions like MatTranspose(), MatMatMult() or
similar functions creates extra memory in my code and these don't destroy.

I explain:

I create my matrices ----->>>>   3000 b are created (for example)
I use MatMatMult --------->>>>   2000 bytes are created (for example)
I destroy my matrices ---->>>>   3000 b are destroyed.

How can I free the memory created in the function MaMatMult()?

The final result is that if I use this function in a iterative process I
full the memory of the box. If I multiply the matrix in a own function,
I don't have this problem.


best regards,
jordi




En/na Satish Balay ha escrit:
> If you don't get any output with -trdump - it could mean that all
> objects are getting properly destroyed. But the swap usage is a bit
> unusual.
>
> You could try the option -trmalloc_log to see how memory is allocate
> on the PETSc side. And also -log_summary to see the summary of memory
> usage.
>
> Also - is it possible you have malloc() calls in your side of the code
> - that could be leaking memory?
>
> you could also comment out all MatSetOption() calls and see if it
> makes a difference.
>
> BTW: 2.2.0 is a very old version. You might want to upgrade to the
> latest 2.3.1
>
> Satish
>
> On Mon, 8 May 2006, Jordi Marcé Nogué wrote:
>
>
>>Thanks Barry,
>>
>>I'm using petsc 2.2.0. When I run my program ( " ./myprogram -trdump " or with
>>-trmalloc, -trinfo...) I don't obtain anything... in the screen the code doesn't
>>print
>>anything.
>>
>>If I use (for example) "./myprogram -start_on_debugger", in my screen apers gdb
>>
>>and runs good... and with another options like -log_trace petsc writes messages
>>in
>>my screen. Would I have to activate something in my internal petsc code?
>>
>>best regards,
>>jordi
>>
>>
>>
>>
>>
>>
>>Missatge citat per Barry Smith <bsmith@xxxxxxxxxxx>:
>>
>>
>>>
>>>    See
>>>
>>
>> http://www-unix.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html
>>
>>>number 12
>>>
>>>    You can run for say a few iterations with the options
>>>-malloc_debug -malloc_dump (in  PETSc 2.3.1. in early releases it had
>>>different names). At PetscFinalize() PETSc will print all the memory
>>>it has allocated that has not been freed and where it was allocated.
>>>This can help determine what objects are not being freed.
>>>
>>>    Barry
>>>
>>>
>>>>Hi,
>>>>
>>>>I use PETSc, and after 5000 (more or less) iteations in which i solve a
>>>
>>>little
>>>
>>>>matrix
>>>>(30x30) my swap is totally used!!! I'm sure that when I create my matrices
>>>
>>>I
>>>
>>>>destroy
>>>>them. Could you help me about it? What happens? What thing I do bad?
>>>>
>>>>Mat K
>>>>MatCreateSeqAIJ(PETSC_COMM_SELF, dim, dim, 9 , PETSC_NULL, &K);
>>>>MatSetFromOptions(K);
>>>>MatSetOption(K, MAT_SYMMETRIC);
>>>>MatSetOption(K, MAT_ROW_ORIENTED);
>>>>MatSetOption(K, MAT_IGNORE_ZERO_ENTRIES);
>>>>MatSetOption(K, MAT_NEW_NONZERO_ALLOCATION_ERR);
>>>>
>>>>( I use KSP solve, created and destroyed)
>>>>
>>>>MatDestroy(K);
>>>>
>>>>
>>>>Thanks,
>>>>jordi
>>>>-----------
>>>>Jordi Marcé-Nogué
>>>>Dept. Resistència de Materials i Estructures a l'Enginyeria
>>>>Universitat Politècnica de Catalunya (UPC)
>>>>
>>>>Edifici T45 - despatx 137
>>>>ETSEIAT (Terrassa)
>>>>
>>>>phone: +34 937 398 728
>>>>mail: jordi.marce@xxxxxxx
>>>>
>>>>
>>>>
>>
>>
>>
>>
>>


--
Jordi Marcé-Nogué
Dept. Resistència de Materials i Estructures a l'Enginyeria
Universitat Politècnica de Catalunya (UPC)

Edifici T45 - despatx 137
ETSEIAT (Terrassa)

phone: +34 937 398 728
mail: jordi.marce@xxxxxxx




--
"Failure has a thousand explanations. Success doesn't need one" -- Sir Alec Guiness