[ADOL-C] OpenMP within an active section

Chris Dembia cld72 at cornell.edu
Thu Mar 30 13:05:31 EDT 2017


Thank you very much for explaining. I will consider how I can rearrange my code. I don’t know if it’s possible, but it would be excellent if the parallel section could be within the active section.

-Chris
> On Mar 30, 2017, at 1:10 AM, Kshitij Kulshreshtha <kshitij at math.upb.de> wrote:
> 
> Hello Chris,
> 
> In order to use OpenMP as it is currently implemented in ADOL-C your
> parallel section must contain the whole of tracing and the subsequent
> derivative evaluation. Otherwise some of the internal data structures
> required get lost. The driver functions like jacobian and gradient
> currently assume that they are within some parallel section, and unable
> to start one on their own.
> 
> Best wishes
> Kshitij Kulshreshtha
> 
> On 03/27/17 20:57, Chris Dembia wrote:
>> Hey all:
>> 
>> I would like to use OpenMP with ADOL-C. I have looked at the OpenMP examples in the ADOL-C source code,
>> and I have read the relevant section of the manual. However, I would like to use OpenMP *within* the active
>> section, not surrounding the active section. For example:
>> 
>> 
>> ------
>> 
>> int N = 5;
>> short int tag = 0;
>> trace_on(tag);
>> 
>> double* px = new double[N];
>> for (int i = 0; i < N; ++i) px[i] = 1.5;
>> adouble* x = new adouble[N];
>> double* py = new double[N];
>> adouble* y = new adouble[N];
>> 
>> for (int i = 0; i < N; ++i) x[i] <<= px[i];
>> 
>> #pragma omp parallel ADOLC_OPENMP_NC
>> {
>>    #pragma omp for
>>    for (int i = 0; i < N; ++i) {
>>        y[i] = x[i]*x[i];
>>    }
>> }
>> 
>> for (int i = 0; i < N; ++i) y[i] >>= py[i];
>> 
>> trace_off();
>> 
>> double** J = myalloc(N, N);
>> int success = jacobian(tag, N, N, px, J);
>> assert(success == 3);
>> 
>> for (int i = 0; i < N; ++i) {
>>    std::cout << "J[" << i << "][" << i << "]: " << J[i][i]
>>            << std::endl;
>> }
>> 
>> 
>> ------
>> 
>> This code compiled and ran, but produced an incorrect Jacobian (all zeros). Commenting out the pragmas produced the correct Jacobian.
>> 
>> Is this possible?
>> 
>> Thank you,
>> Chris Dembia
>> _______________________________________________
>> 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=aBCvvzd29GWh7UHb2fS5uRTngreim26BJfB7QQOnw4M&m=6zPWFb0pwKC722AyCvr-FGPxXhfILMYE_neDcBbXm3o&s=CmJFsgGvU5__awt2EzjsYbFq4i-YVviXTXFjBHt26Pg&e= 
>> 
> 
> -- 
> 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.




More information about the ADOL-C mailing list