[Omp] A question about OpenMP 2.5

Brad Bell bradbell at seanet.com
Mon Mar 19 23:48:02 PDT 2007


I have a question about the OpenMP 2.5 standard
    http://www.openmp.org/drupal/mp-documents/spec25.pdf

In Section 1.2.3 Data Terminology of spec25.pdf,
the following text appears:

   variable
   A named data object, whose value can be defined and
   redefined during the execution of a program.

   Only an object that is not part of another object is
   considered a variable. For example, array elements,
   structure components, array sections and substrings
   are not considered variables.


In Section 1.4.1 Structure of the OpenMP Memory Model of spec25.pdf,
the following text appears:

   If multiple threads write to the same shared variable
   without synchronization, the resulting value of the variable
   in memory is unspecified. If at least one thread reads from
   a shared variable and at least one thread writes to it without
   synchronization, the value seen by any reading thread is unspecified.

It appears to me that, given the text above, that Example A.1.1.c of
in the OpenMP 2.5 standard is not correct (or at least misleading).
Here is the code for that example:
    
    void a1(int n, float *a, float *b)
    {
        int i;
    #pragma omp parallel for
        for (i=1; i<n; i++) /* i is private by default */
            b[i] = (a[i] + a[i-1]) / 2.0;
    }

1. As I understand the parallel command above, different threads may 
execute
the loop for different values of i.

2. As I understand, the variable b is a shared variable because it is
defined before the loop.

3. The arguments b to the routine a1 may be an array, for example
it may be declared in the calling program by
    float b[SIZE];
where SIZE is any positive integer constant greater than or equal n.

4. In the case of 3 above, b is a variable, and b[i] is not a variable,
hence multiple threads may be writing to the same variable; namely b.

5. Thus, in the case described above, the result of the loop is undefined.





More information about the Omp mailing list