Presentation is loading. Please wait.

Presentation is loading. Please wait.

Dependency Test in Loops By Amala Gandhi. Data Dependence Three types of data dependence: 1. Flow (True) dependence : read-after-write int a, b, c; a.

Similar presentations


Presentation on theme: "Dependency Test in Loops By Amala Gandhi. Data Dependence Three types of data dependence: 1. Flow (True) dependence : read-after-write int a, b, c; a."— Presentation transcript:

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*x 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


Download ppt "Dependency Test in Loops By Amala Gandhi. Data Dependence Three types of data dependence: 1. Flow (True) dependence : read-after-write int a, b, c; a."

Similar presentations


Ads by Google