The direction vector is defined as a sequence of direction vector elements (one element for each loop enclosing both statements involved in the dependence arc). The following symbols are direction vector elements: <, =, >, <, >, /, or *. Refer to the following loop:
Loops Line +--------- 10 for ( i=1; i<n ; i++) { | 11 a[i] = b[i] + c[i]; | 12 c[i] = a[i-1] - 1; |_________ 13 }
If line 12 in iteration I"
depends on line 11 in
iteration I'
, the element of the direction vector
for loop I
is as follows:
direction vector element when < I' must be < I" = I' must be = I" > I' must be > I" <= I' must be < or = I" >= I' must be > or = I" / I' must not = I" * no relation between I' and I" can be proven
In the previous example, the dependence for variable a has a
direction vector of <
, because the dependence flows
from iteration I'
to iteration I'+1
and I' < I'+1
. For example, the dependence on
a[1]
flows from iteration 1 to iteration 2, and
1 < 2.
The data dependence for the variable
c
has a direction vector of =
because the
dependence stays in the same iteration of the loop (from iteration
I'
to iteration I'
).