<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Hello everyone,<br>
    <br>
    I have been trying to use Adol-C in combination with OpenMP, and I
    got a bit confused between the manual and the example.<br>
    The sequential version of the code runs fine, the openmp part
    without automatic differentiation seems to be correct as well.<br>
    <br>
    I built Adol-C 2.4.0 and Colpack 1.0.9 with OpenMP enabled.<br>
    (during the make for Adol-C I encountered an error about a missing
    adolc_openmp.h, copying the file into src/ seemed to solve the
    issue)<br>
    <br>
    The tape is something like<br>
    <br>
    <i>&nbsp;&nbsp;&nbsp; trace_on(tag_L);</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; for(i=0; i &lt; n; i++)</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_x_ad[i] &lt;&lt;= 1e0;</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; for(i=0; i &lt; m; i++)</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lambda_ad[i] &lt;&lt;= 1e0;</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; m_objfactor_ad &lt;&lt;= 1e0;</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; evalObjective(n,m_x_ad,m_objvalue_ad);</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; m_lagvalue_ad = m_objvalue_ad * m_objfactor_ad;</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; evalConstraints(n,m_x_ad,m,m_g_ad);</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; for(i=0; i &lt; m; i++)</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_lagvalue_ad += m_g_ad[i] * m_lambda_ad[i];</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; m_lagvalue_ad &gt;&gt;= dummy;</i><i><br>
    </i><i>
      &nbsp;&nbsp;&nbsp; trace_off();</i><br>
    <br>
    <i>&nbsp;&nbsp;&nbsp; // build sparsity pattern</i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; m_row_hess_total = NULL;</i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; m_col_hess_total = NULL;</i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; m_val_hess = NULL;</i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; m_options_hess[0] = 0;</i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; m_options_hess[1] = 1; </i><i><br>
    </i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; // full Hessian wrt (x,lambda,objfactor)</i><i><br>
    </i><i>&nbsp;&nbsp;&nbsp; sparse_hess(tag_L, n+m+1, 0, m_xlf,
      &amp;m_nnz_hess_total, &amp;m_row_hess_total,
      &amp;m_col_hess_total, &amp;m_val_hess, m_options_hess);</i><br>
    <br>
    and somewhere in the function evalConstraints I have an openMP loop<br>
    <br>
    <i>&nbsp;&nbsp; #pragma omp parallel for default(none) shared(...)
      schedule(dynamic) </i><br>
    <i>&nbsp;&nbsp; for (int i=0; ....)</i><i><br>
    </i><i>&nbsp;&nbsp; {</i><i><br>
    </i><i>&nbsp;&nbsp; ...</i><i><br>
    </i><i>&nbsp;&nbsp; }</i><br>
    <br>
    I added the #include &lt;adolc/adolc_openmp.h&gt;, and the
    ADOLC_OPENMP macro at the end of the pragma.<br>
    Is it supposed to be enough ?<br>
    <br>
    Currently I get these errors during the call to evalConstraints
    (before the actual call to sparse_hessian)<br>
    <br>
    <i>bocop: tape_handling.cpp:1373: virtual void
      StoreManagerLocintBlock::free_loc(locint): Assertion `loc &lt;
      maxsize' failed.</i><i><br>
    </i><br>
    <br>
    Any help would be greatly appreciated,<br>
    <br>
    Pierre Martinon<br>
  </body>
</html>