Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Removal of dependencies*/
- // Serial version containing anti-dependency
- for(int i = 0; i < n; i++){
- x = (b[i] + c[i]) / 2;
- a[i] = a[i + 1] + x;
- }
- // Parallel version with dependencies removed
- #pragma omp parallel for shared(a, a_copy)
- for(int i = 0; i < n; i++)
- a_copy[i] + a[i + 1];
- #pragma omp parallel for shared(a, a_copy) private(x)
- for(int i = 0; i < n; i++){
- x = (b[i] + c[i]) / 2;
- a[i] = a_copy[i] + x;
- }
- // Serial version containing flow dependency
- for(int i = 1; i < n; i++){
- b[i] = b[i] + a[i - 1];
- a[i] = a[i] + c[i];
- }
- // Parallel version with dependencies removed by loop skewing http://en.wikipedia.org/wiki/Loop_optimization
- b[1] = b[1] - a[0];
- #pragma omp parallel for shared(a, b, c)
- for(int i = 1; i < n; i++){
- a[i] = a[i] + c[i];
- b[i + 1] = b[i + 1] + a[i];
- }
- a[n - 1] = a[n - 1] + c[n - 1];
Advertisement
Add Comment
Please, Sign In to add comment