[ADOL-C] memory issue

Kshitij Kulshreshtha kshitij at math.upb.de
Mon Sep 20 14:14:05 EDT 2010



As on 2010-09-20 19:56, Rishi Amrit did write:
> On Fri, Sep 10, 2010 at 3:55 AM, Kshitij Kulshreshtha
> <kshitij at math.upb.de <mailto:kshitij at math.upb.de>> wrote:
> 
>     As on 2010-09-09 18:14, Rishi Amrit did write:
>     > I ran valgrind with the options you suggested. I am attaching the
>     txt report generated. There seems to be pointed to some leaks. Let
>     me know what you think.
>     >
>     > Thanks,
>     >
>     > Rishi
> 
> 
>     Addendum to my last mail:
> 
>     Of course the numbers you see increasing are due to adoubles that were
>     allocated by your program or octave and not freed after trace_off() was
>     called. adoubles are only needed between the trace_on() and trace_off()
>     calls. Afterwards they must all be deleted. If adoubles exist during
>     evaluation from tape like gradient or sparse_jac, they are written to
>     the tape again during each tape evaluation. I think this is the
>     phenomenon you observe.
> 
> 
> I'm still trying to debug this issue. One thing that I would like to
> mention is that I am using trace_off with a an argument 1 (forcing it to
> write everything to the disk). Now when once the whole function is
> completed, I delete the tap files from the disk before calling the
> function again - which repeats the trace and then evaluate procedure. I
> observe that ADOLC-Locations_?.tab and ADOLC-Operations_?.tab file sizes
> remain the same which is perfect since the dimension of the problem is
> not changing. I'm just changing parameters. The size
> of ADOLC-Taylors_?.tap and ADOLC-Values_2 keeps on growing (even though
> I delete the files between consecutive function calls). What might be
> the reason for extra data being written. I am also attaching the header
> file which has the trace_all function that I call from my main C file to
> create tapes and then I essentially use the ADOLC drivers with these
> tapes to evaluate functions and computer jacobians and hessians in the
> optimization. You should be able to see the use of adoubles in my code.
> There are a lot of them initialized but I've taken extra precaution that
> they are deleted too -- in the last in first out fashion as suggested by
> the ADOLC manual. Let me know what you think.
> 

Hi,

The values and the taylors tape grow because not all your adoubles were
deallocated after calling last trace_off(). Deleting the tap files will
not matter, since the old adouble will be written again to the new tap
files on calling trace_on(). You need to deallocate all your adouble
arrays after calling trace_off. The valgrind trace you sent last time
had a lot of leaks originating in octave code. I suppose that's where
the adouble survive.

I'll try to run the code that you sent me through valgrind without
octave and send you the results later.
-- 
Kshitij Kulshreshtha

Institut für Mathematik,
Universität Paderborn,
Warburger Straße 100,
33098 Paderborn.

Büro: A3.235

Privatanschrift:
Arnikaweg 62
33100 Paderborn.



More information about the ADOL-C mailing list