Page 1 of 1

ordered region, ordered construct

Posted: Mon Aug 03, 2015 10:47 am
by fewl9012
page 162:3 "The ordered construct specifies a structured block in a loop region that will be executed in the order of the loop iterations."
However, the omp ordered depend() construct isn't a structured block. Moreover, with
#pragma omp for ordered(1)
a[i] = b[i] + 1;
#pragma omp ordered depend(source)
c[i] = c[i] + 1;
#pragma omp ordered depend(sink:i-2)
d[i] = a[i-2];

There is no structured block that is guaranteed to execute in iteration order. Is there an ordered region at all?

Second point, can there be more than one 'omp ordered depend(source)' in a loop iteration?

Can there be an 'omp ordered threads' region AND 'omp ordered depend()' doacross loop? The former requires the 'ordered' clause on the loop directive without the parameter, and the latter requires the ordered clause with a parameter.

Speaking of which, the ordered clause without a parameter 'is equivalent to the ordered clause with a parameter value of one specified' (page 57:26) which seems to conflict with requiring a parameter or requiring no parameter.