[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