Download presentation

Presentation is loading. Please wait.

Published byKane Crafts Modified over 4 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

Introduction to Arrays Chapter 10. 10 What is an array? An array is an ordered collection that stores many elements of the same type within one variable.

Introduction to Arrays Chapter 10. 10 What is an array? An array is an ordered collection that stores many elements of the same type within one variable.

© 2018 SlidePlayer.com Inc.

All rights reserved.

To make this website work, we log user data and share it with processors. To use this website, you must agree to our Privacy Policy, including cookie policy.

Ads by Google