[ADOL-C] inverse_tensor_eval memory error

Hoang Giang Bui hgbk2008 at gmail.com
Fri Aug 4 04:49:41 EDT 2017


Hi

The problem with coordinates.cpp is fixed with new update.

Best
Giang

On Fri, Aug 4, 2017 at 9:26 AM, Kshitij Kulshreshtha <
kshitij at math.uni-paderborn.de> wrote:

> Hello,
>
> in svn commit 740 on trunk or git commit 5ae5bf59 of the master branch
> from 2017-05-30 some corrections to taylor.c in the ADOL-C source code
> were already made. This was a fix for memory errors.
>
> Brad's program runs in valgrind for me with no errors, as does Hoang's
> example from additional_examples/taylor/coordinates.c
>
> Please switch to SVN trunk or GIT master and let me know if you still
> see a problem. (I'm travelling starting tomorrow morning, so I'll be
> able to get to it, when I'm back on 21st Aug).
>
> Best,
> Kshitij
>
>
>
> On 08/04/17 08:16, Andrea Walther wrote:
> > Dear Hoang Giang Bui,
> >
> > thanks for letting us know! That indeed helps a lot.
> >
> > Best regards
> >
> > Andrea
> >
> >
> >> I checked that further and found that this example still works in
> >> v2.5.2 but fail at v2.6.0. I think that can be helpful for you to
> >> track down this problem.
> >>
> >> Best
> >>
> >>
> >> Giang
> >>
> >> On Thu, Aug 3, 2017 at 10:43 PM, Hoang Giang Bui <hgbk2008 at gmail.com
> >> <mailto:hgbk2008 at gmail.com>> wrote:
> >>
> >>     Hello
> >>
> >>     I also got the error of inverse_tensor_eval. I executed the example
> >>     in examples/additional_examples/taylor/coordinates and received the
> >>     error below. I used ADOL-C 2.6.3
> >>
> >>     COORDINATES (ADOL-C Example)
> >>
> >>       Cartesian coordinates:
> >>       z_1: (e.g. 4)
> >>     4
> >>       z_2: (e.g. 3)
> >>     3
> >>
> >>       Polar coordinates:
> >>       z_3: (e.g. 5)
> >>     5
> >>       z_4: (e.g. 0.64350110879 <tel:06435%200110879>)
> >>     0.64
> >>
> >>       Highest derivative degree = 3
> >>     *** Error in `./coordinates': double free or corruption (out):
> >>     0x0000000000c8df90 ***
> >>     Aborted (core dumped)
> >>
> >>     Please help to take a look.
> >>
> >>     Giang
> >>
> >>     On Thu, Aug 3, 2017 at 8:32 PM, Brad Bell <bradbell at seanet.com
> >>     <mailto:bradbell at seanet.com>> wrote:
> >>
> >>         I have am trying to run a simple example using
> >>         inverse_tensor_eval. To be specific
> >>                  F(z) = sin(z)
> >>         I have been unable to figure out why I am getting memory errors
> >>         when I run the
> >>         code included below. When I run it in valgrind, I get the
> >>         following output:
> >>
> >> ============================================================
> =====================================
> >>
> >>         build>valgrind ./adolc
> >>         ==29183== Memcheck, a memory error detector
> >>         ==29183== Copyright (C) 2002-2015, and GNU GPL'd, by Julian
> >>         Seward et al.
> >>         ==29183== Using Valgrind-3.12.0 and LibVEX; rerun with -h for
> >>         copyright info
> >>         ==29183== Command: ./adolc
> >>         ==29183==
> >>         ==29183== Invalid free() / delete / delete[] / realloc()
> >>         ==29183==    at 0x4C2ED4A: free (vg_replace_malloc.c:530)
> >>         ==29183==    by 0x4F8B731: inverse_tensor_eval (taylor.c:741)
> >>         ==29183==    by 0x401094: main (adolc.cpp:37)
> >>         ==29183==  Address 0x699cf38 is 8 bytes inside a block of size
> >>         32 alloc'd
> >>         ==29183==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
> >>         ==29183==    by 0x4E63FA5: myalloc2 (adalloc.c:125)
> >>         ==29183==    by 0x4F8B1B5: inverse_tensor_eval (taylor.c:688)
> >>         ==29183==    by 0x401094: main (adolc.cpp:37)
> >>         ==29183==
> >>         ==29183== Invalid free() / delete / delete[] / realloc()
> >>         ==29183==    at 0x4C2ED4A: free (vg_replace_malloc.c:530)
> >>         ==29183==    by 0x4F8B74C: inverse_tensor_eval (taylor.c:743)
> >>         ==29183==    by 0x401094: main (adolc.cpp:37)
> >>         ==29183==  Address 0x699cf98 is 8 bytes inside a block of size
> >>         32 alloc'd
> >>         ==29183==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
> >>         ==29183==    by 0x4E63FA5: myalloc2 (adalloc.c:125)
> >>         ==29183==    by 0x4F8B1D2: inverse_tensor_eval (taylor.c:689)
> >>         ==29183==    by 0x401094: main (adolc.cpp:37)
> >>         ==29183==
> >>         tensor[0][0] = 0.523599 <tel:0.523599>
> >>         tensor[0][1] = 1.1547
> >>         tensor[0][2] = 0.7698
> >>         z = 0.523599 <tel:0.523599>
> >>         zp = 1.1547
> >>         zpp = 0.7698
> >>         adolc: Done
> >>         ==29183==
> >>         ==29183== HEAP SUMMARY:
> >>         ==29183==     in use at exit: 1,094 bytes in 20 blocks
> >>         ==29183==   total heap usage: 107 allocs, 89 frees, 19,481,090
> >>         bytes allocated
> >>         ==29183==
> >>         ==29183== LEAK SUMMARY:
> >>         ==29183==    definitely lost: 104 bytes in 6 blocks
> >>         ==29183==    indirectly lost: 8 bytes in 1 blocks
> >>         ==29183==      possibly lost: 0 bytes in 0 blocks
> >>         ==29183==    still reachable: 982 bytes in 13 blocks
> >>         ==29183==         suppressed: 0 bytes in 0 blocks
> >>         ==29183== Rerun with --leak-check=full to see details of leaked
> >>         memory
> >>         ==29183==
> >>         ==29183== For counts of detected and suppressed errors, rerun
> >>         with: -v
> >>         ==29183== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0
> >>         from 0)
> >>         build>
> >>
> >> ============================================================
> =====================================
> >>
> >>         # include <adolc/adolc.h>
> >>         int main(void)
> >>         {
> >>              int n = 1;    // number of independent and dependent
> >> variables
> >>              int d = 2;    // highest order derivative
> >>              int p = 1;    // number of directions
> >>              int size = 3; // [(p + d) choose d] = (p+d-0) *...* (p+1) /
> >>         (1 *...* d)
> >>              //
> >>              double* S[1];      // seed matrix S[n][p]
> >>              S[0] = new double[p];
> >>              //
> >>              double* tensor[1]; // partials of z w.r.t x tensor[n][size]
> >>              tensor[0] = new double[size];
> >>
> >>              // Set Seed matrix to identity
> >>              S[0][0] = 1.0;
> >>
> >>              // independent and dependent variables
> >>              adouble az[1], ay[1]; // az[n], ay[n]
> >>              double  z[1],  y[1];  //  z[n],  y[n]
> >>
> >>              // record operations for y = F(z) = sin(z)
> >>              short int tag = 1;     // tape identifier
> >>              trace_on(tag);         // start recording
> >>              z[0]  = 1.0;           // value during recording
> >>              az[0] <<= z[0];        // independent variable
> >>              ay[0] = sin(az[0]);    // function evaluation
> >>              ay[0] >>= y[0];        // dependent variable
> >>              trace_off();           // turn off recording
> >>
> >>              // evaluate inverse of F at x0
> >>              double x0 = 0.5;            // argument for inverse
> >>              z[0]      = std::asin(x0);  // F^-1 (x0) = z0
> >>              inverse_tensor_eval(tag, n, d, p, z, tensor, S);
> >>
> >>              // print tensor
> >>              for(int j = 0; j < size; j++)
> >>              {   std::cout << "tensor[0][" << j << "] = " <<
> >>         tensor[0][j] << "\n";
> >>              }
> >>
> >>              // derivative of F^-1 (x0)  =  1.0 / sqrt( 1 - x0 * x0 )
> >>              double zp = 1.0 / std::sqrt(1.0 - x0 * x0 );
> >>
> >>              // second derivative of F^-1 (x0)  =  x0 / sqrt( 1 - x0 *
> >>         x0 )^3
> >>              double zpp = x0 * zp * zp * zp;
> >>
> >>              // print derivatives for z
> >>              std::cout << "z = " << z[0] << "\n";
> >>              std::cout << "zp = " << zp << "\n";
> >>              std::cout << "zpp = " << zpp << "\n";
> >>              //
> >>              delete [] S[0];
> >>              delete [] tensor[0];
> >>              //
> >>              std::cout << "adolc: Done\n";
> >>              return 0;
> >>         }
> >>
> >>         _______________________________________________
> >>         ADOL-C mailing list
> >>         ADOL-C at list.coin-or.org <mailto:ADOL-C at list.coin-or.org>
> >>
> >> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.
> coin-2Dor.org_mailman_listinfo_adol-2Dc&d=DwICAg&c=Ngd-
> ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=0eOhD1zcLnB9JhadNXrezwNw87TYLa
> 0fyHrxCkWC5J8&m=_Ons9tqju2E2RHmPQy2M4dxzTzDANdgNNsqJlGe3_xE&s=nCnpB-
> VNJPhm9DrrYdYukpvGjJLoI0XJjc321inwUW0&e=
> >>
> >>
> >> <https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__list.coin-2Dor.org_mailman_listinfo_adol-2Dc&d=DwICAg&c=Ngd-
> ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=0eOhD1zcLnB9JhadNXrezwNw87TYLa
> 0fyHrxCkWC5J8&m=_Ons9tqju2E2RHmPQy2M4dxzTzDANdgNNsqJlGe3_xE&s=nCnpB-
> VNJPhm9DrrYdYukpvGjJLoI0XJjc321inwUW0&e=>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> ADOL-C mailing list
> >> ADOL-C at list.coin-or.org
> >> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.
> coin-2Dor.org_mailman_listinfo_adol-2Dc&d=DwICAg&c=Ngd-
> ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=sszAvj5-wJal_YaNkOXa8y4Mts3w-L-
> xYDXwPYeYptQ&m=gfhyE5RpFM_GBYHEyusXs5ASuA5gN4cmZKSjaEDKGxk&s=
> zYFcDozFnxwQ6LdZOXeaoV7XItU8I-J9XrCp3JyCP_Q&e=
> >>
> >>
> >
>
> --
> PD. Dr. Kshitij Kulshreshtha
>
> Institut für Mathematik,
> Universität Paderborn,
> Warburger Straße 100,
> 33098 Paderborn.
>
> Büro: TP21.1.21
> Besucheradresse:
> Technologiepark 21
> 33098 Paderborn.
>
> Privatanschrift:
> Arnikaweg 62
> 33100 Paderborn.
> _______________________________________________
> ADOL-C mailing list
> ADOL-C at list.coin-or.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.
> coin-2Dor.org_mailman_listinfo_adol-2Dc&d=DwIGaQ&c=Ngd-
> ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=0eOhD1zcLnB9JhadNXrezwNw87TYLa
> 0fyHrxCkWC5J8&m=KcxBQJzGZutD_kGYQ_VRBx_yR1L42B9tupJWApEsaVQ&s=
> WBVap8MwRJOZwQeqsPRtjZpWcbGUZo9EB80HNlXNdVo&e=
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/adol-c/attachments/20170804/6bcb0335/attachment-0001.html>


More information about the ADOL-C mailing list