Test in Loops By Amala Gandhi Data Dependence Three types of data dependence Flow True dependence readafterwrite int a b c a c 10 b 2 a c Anti Dependency writeafterread ID: 261162
Download Presentation The PPT/PDF document "Dependency" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Dependency Test in Loops
By
Amala
GandhiSlide2
Data Dependence
Three types of data dependence:
Flow (True) dependence : read-after-write
int
a, b, c;
a
= c * 10;
b
= 2 * a + c
;
Anti Dependency: write-after-read
int
a, b, c;
a
= b* 4+ c;
c
= b + 40;
Output Dependence: write-after-write
int
a, b,
c;
a
= b *c ;
a
= b + c + 10;Slide3
Dependency in Loops
Two main types of dependency in loops
Loop Independent : Dependence in same iteration
for (
i
=
2;
i
<= 4;
i
++){
a[
i
] = b[
i
] + c[
i
];
d[
i
] = a[
i
];
}
Loop Carried : Dependence over the iteration
for (
i
= 2
;
i
< = 4;
i
++)
{
a[
i
] = b[
i
] + c[
i
];
d[
i
] = a[i-1];
}Slide4
Loop Dependency Analysis
With automatic parallelization, the compiler detects loops that can be safely and efficiently executed in parallel
Automatic parallelization, kind of optimization
Shorter
execution
time
Adds
the parallel compiler directives
To
know whether two usages
of an array access the same
memory
location, compiler
needs to perform certain
dependency testsSlide5
Greatest Common Divisor Test
A Linear Diophantine equation
a1*x1 + a2*x2 +...+ an*
xn
= c
Above equation has
a solution if , the greatest common divisor of a1,a2,..an can divide the c i.e. the result of the division is
an integer
.
Example:
15*x +6*y -9*z = 12
gcd
of 15, 6 and 9
is 3
3
can divide
12
Hence the equation has a solution.
If equation has
a solution , means has dependency ,else no dependency
Slide6
GCD Test contd.
Code Snippet:
for (
i
=
1;
i
< N;
i
++)
{
a
[2
*
i
]
= .. ;
.. =
a
[3
*
i
-
5];
}
Equation
formation:
2x = 3y
-
5
i.e. 2x – 3y =
-
5
GCD(2,3
) = 1, divides
5
Has
a
dependency
If there was no dependency, then compiler can directly go forward for applying the parallelization technique.Slide7
GCD Test Limitation
GCD ignores bounds
for (
i
=
1;
i
< 10;
i
++) {
a[
i
] = b[
i
] + c[
i
];
d[
i
] = a[i-100
];
}
For
above example,
GCD test shows that there is dependence, but actually it has ignored bounds.
GCD test also
does not provide distance or
direction information
To overcome this limitation, GCD test is combined with Banerjee test
Many such tests are present, different compilers may use different loop dependency testSlide8
Take Aways
Terminologies used in Data Dependence and Loop Dependence Analysis
Concept of tests used in Loop Dependence Analysis with the help of GCD test Slide9
Thank You