matheus__serpa icon

dependencies

matheus__serpa | PRO | 10/03/14 10:52:27 PM UTC | 0 ⭐ | 401 👁️ | Never ⏰ | []
C |

850 B

|

None

|

0 👍

/

0 👎

/*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];

Comments