Technical data
#pragma Directives [3]
n An integer constant between 1 and 63, specifying that no
dependencies exist between any iteration of the loop and n
subsequent iterations. This clause is only of use for pipelining
on Cray T3E systems; any concurrent directive with a
safe_distance= clause will have no effect on other systems.
In the following example, the concurrent directive indicates that the
relationship, k>=3, is true. The compiler will safely load all the array references
x[i-k], x[i-k+1], x[i-k+2], and x[i-k+3] during i-th loop iteration.
#pragma _CRI concurrent safe_distance=3
for (i = k + 1; i < n;i++) {
x[i] = a[i] + x[i-k]
}
3.10.5 nointerchange Directive
Scope: Local
The nointerchange directive inhibits the compiler’s ability to interchange the
loop that follows the directive with another inner or outer loop.
The format of this directive is as follows:
#pragma _CRI nointerchange
In the following example, the nointerchange directive prevents the iv loop
from being interchanged by the compiler with either the jv loop or the kv loop:
for (jv = 0; jm < 128; jv++) {
#pragma nointerchange
for (iv = 0; iv < m; iv++) {
for (kv = 0; kv < n; kv++) {
p1[iv][jv][kv] = pw[iv][jv][kv] * s;
}
}
}
3.10.6 noreduction Directive
Scope: Local
S–2179–36 93










