practical dependence test gina goff, ken kennedy, chau-wen tseng pldi ’91 presented by chong liang...
Post on 19-Dec-2015
217 views
TRANSCRIPT
Practical Dependence Test
Gina Goff, Ken Kennedy, Chau-Wen TsengPLDI ’91
presented byChong Liang Ooi
Contribution
Efficient and precise dependence test is essential
General tests (Banerjee and GCD) are unnecessary
Most array refs in scientific Fortran program are simple
Based on these simple cases, this paper proposedPartition-Based Algorithm
Classification of Subscripts
1. ComplexityNo of unique array indices a subscript hasi. ZIV– Zero Index Variableii. SIV – Single Index Variableiii. MIV – Multiple Index Variable
DO 10 i
DO 10 j
DO 10 k
10 A(5, i+1, j) = A(N, i, k) + c
Classification of Subscripts
2. Separability
Separable if indices do not occur in other subscriptOtherwise, coupled
A(i, j, j) = A(i, j, k) + c
Partition-Based Algorithm
Partition subscripts separable & minimal coupled group
Label each subscript as ZIV, SIV or MIV
Apply Single Subscript Test based on complexity
Apply Multiple Subscript Test to coupled group
If any test yields independence, no dependence exist
Otherwise, merge all direction vectors into single set
Single Subscript Test – ZIV
ZIV takes 2 loop invariant expressions
Proves 2 expressions cannot be equal
Can be extended for symbolic expressions
If differences is non-zero constant independence
SS Test – Strong SIV
Ref pair of form: <ai+c1, ai’+c2> for a Є [1,10]
Dependence Distance, d = i’-i = (c1-c2)/a
Dependence exist, if |d| <= U - LDependence Direction =
< if d > 0= if d = 0> if d < 0
Exact & efficientExtendable to Symbolic Expr by eval d symbolically
SS Test – Weak-Zero SIV
Ref pair of form: <a1i+c1, a2i’+c2> for a1 != a2
a1i+c1=a2i’+c2 is a line in 2D space of i vs i’
Check whether line intersect with any integer points
Weak-zero SIVFor a1=0 or a2=0
Let a2=0 i=(c2-c1 )/a1
Check i Є I and |i| < U - L
SS Test – Weak-Zero SIV
Usually, i=0 or last iterationLoop peeling transformation can help
DO 10 i=1, N10 Y(i, N)=Y(1,N)+Y(N,N)
Y(1,N)=Y(1,N)+Y(N,N)DO 10 i=2, N-1
10 Y(i, N)=Y(1,N)+Y(N,N)Y(N,N)=Y(1,N)+Y(N,N)
SS Test – Weak-Crossing SIV
Weak-Crossing SIVFor a2 = -a1
Let i=i’ i=(c2-c1 )/2a1
Check |i| < U – L and i Є I or 1/2
Typically in Choleskey decomposition
SS Test – Weak-Crossing SIV
Loop splitting transformation can help
DO 10 i=1, N10 A(i)=A(N-i+1)+C
DO 10 i=1, (N+1)/210 A(i)=A(N-i+1)+C
DO 20 i=(N+1)/2+1, N20 A(i)=A(N-i+1)+C
SS Test – Restricted Double Index Var
Ref pair of form: <a1i+c1, a2j+c2>
SIV Tests can be used with 2 loop bounds for i & j
Delta Test ConstraintsAssertions on indices derived from subscripts<a1i+c1, a2i’+c2> a1i - a2i’= c2 - c1
Constraint vector, C=(del1, del2, …)
one constraint for each index in the coupled group
Del can bedependence line: <ax+by=c>dependence distance: <d>dependence point: <x,y>