All:
For the Loop given in Fig(1), there is no possibility of loop distribution
because of the dependency of S1 and S2 on the outerloop index k.
Due to the dependency the Loop cannot be distributed.
The Loop can be distributed with the transformation given in Fig(2) where the
loop given in Fig(1) is distributed due to the dependency
Hoisting transformation. The Dependency hoisting transformation where the
dependency is shifted to insertion of new outer Loop and the
Dependency is based on the inserted outerloop. This makes the loop k(S1) and
j(S2) distributed with the insertion of new outerloop and transfer
The dependency of S1 and S2 to the inserted outer loop.
Do k = 1, n-1
Do I = k+1, n
S1: a(I,k) = a(I,k)/a(k,k)
Enddo
Do j = k+1,n
Do I = k+1,n
S2: a(I,j) = a(I,j) - a(I,k) *a(k,j);
Enddo
Enddo
Enddo
Fig(1)
Do x = 1, n
Do k = 1, x-1
Do I = k+1, n
S2: a(I,x) = a(I,x) - a(I,k) * a(k,x)
Enddo
enddo
Do i = x+1,n
S1: a(I,x) = a(I,x)/a(x,x);
Enddo
Enddo
Fig(2).
The above transformation looks interesting making the candidate of loop
distribution of nested loops with the presence of dependency by
Shifting the dependency to new inserted outer loop.
It is useful to have dependency hoisting transformation that makes the loop
distribution possible for nested loops
My question is the partitioning based Loop distributed transformation does the
distribution of the nested Loops?
Thanks & Regards
Ajit