Download presentation

Presentation is loading. Please wait.

Published byKane Crafts Modified over 3 years ago

1
Dependency Test in Loops By Amala Gandhi

2
Data Dependence Three types of data dependence: 1. Flow (True) dependence : read-after-write int a, b, c; a = c * 10; b = 2 * a + c; 2. Anti Dependency: write-after-read int a, b, c; a = b* 4+ c; c = b + 40; 3. Output Dependence: write-after-write int a, b, c; a = b *c ; a = b + c + 10;

3
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]; }

4
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 tests

5
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

6
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.

7
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 test

8
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

9
Thank You

Similar presentations

OK

LOOPING IN C. What would be the output of the following program main( ) { int j ; while ( j <= 10 ) { printf ( "\n%d", j ) ; j = j + 1 ; }

LOOPING IN C. What would be the output of the following program main( ) { int j ; while ( j <= 10 ) { printf ( "\n%d", j ) ; j = j + 1 ; }

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Converter pub to ppt online reader Ppt on self awareness activities Ppt on the book the secret Converter pub to ppt online training Ppt on teaching english as a second language Ppt on electricity for class 10th date Ppt on world wildlife fund Ppt on fashion and indian youth Ppt on product design process Ppt on village life in india