/
Dependency Dependency

Dependency - PowerPoint Presentation

liane-varnes
liane-varnes . @liane-varnes
Follow
403 views
Uploaded On 2016-03-18

Dependency - PPT Presentation

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

test dependency gcd dependence dependency test dependence gcd loop equation compiler loops write analysis int tests parallelization data solution

Share:

Link:

Embed:

Download Presentation from below link

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.


Presentation Transcript

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