[ADOL-C] Issue with OpenMP

Brad Bell bradbell at seanet.com
Sun Sep 18 17:15:30 EDT 2011


The order that the different threads execute the output statement is not 
predetermined; i.e. it can vary from one execution to the next. For 
example, the program below sometimes generates the output
     0231
and other times
     2301
on a four core machine that I have access to.

# include <iostream>

int main(void)
{
      double  t1, t2;
      double t0 = 0.0, tf = 1.0;
      double nn[] = {1.0,2.0,3.0,4.0,5.0};
      int i;

      #pragma omp parallel shared(t0,tf,nn) private(i,t1,t2)
      {
           #pragma omp for nowait
           for (i=0;i<4;i++) {
                t1 = (t0+tf)*nn[i];
                t2 = (t0+tf)*nn[i+1];
                std::cout << i;
           }
      }
      std::cout << std::endl;
      return 0;
}


On 9/17/2011 1:15 PM, Ingrid Hallen wrote:
> Hi everyone!
>
> I've been experimenting a bit with adol-c and OpenMP (not differentiating
> OpenMP code, just trying to paralellize some code that uses adoubles). Anyway,
> I have a piece of code that looks something like this:
>
> "adouble t1, t2;
> adouble t0, tf;
> t0.setValue(0.0); tf.setValue(1.0);
> double nn[] = {1.0,2.0,3.0,4.0,5.0};
> int i;
>
> #pragma omp parallel shared(t0,tf,nn) private(i,t1,t2)
>   {
>          #pragma omp for nowait
>          for (i=0;i<4;i++) {
>              t1 = (t0+tf)*nn[i];
>              t2 = (t0+tf)*nn[i+1];
>              std::cout<<  i<<  i+1<<  t1.value()<<  t2.value();
>          }
> }"
>
> Now if I run the loop using just one thread everything works fine, but for more
> than one I get some weird results, like, say, the following output:
>
> 0 1 1.000 2.000
> 2 3 3.000 2.000
> 3 4 4.000 4.000
> 1 2 2.000 3.000
>
> Here I think the second line should read "2 3 3.000 4.000" and the third "3 4 4.000 5.000".
>
> Anyone have an idea why this strange behavior occurs?
>
> cheers
> ingrid
>
>   		 	   		
>
>
> _______________________________________________
> ADOL-C mailing list
> ADOL-C at list.coin-or.org
> http://list.coin-or.org/mailman/listinfo/adol-c

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/adol-c/attachments/20110918/6cf08446/attachment.html>


More information about the ADOL-C mailing list