CSC/ECE 506 Spring 2015/37 mr: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 10: Line 10:
   
   
'''After loop distribution'''
'''After loop distribution'''
for(i=0; i < n; i++)  
<nowiki> for(i=0; i < n; i++)  
S1: a[i] = b[i-1] * a[i+1];  
S1: a[i] = b[i-1] * a[i+1];  
  for(i=0; i < n; i++)  
  for(i=0; i < n; i++)  
S3: c[i] = .2* c[i-1] * c[i];
S3: c[i] = .2* c[i-1] * c[i];
  for(i=0; i < n; i++)  
  for(i=0; i < n; i++)  
S2: b[i] = b[i] * 3;
S2: b[i] = b[i] * 3</nowiki>;


'''Now write the parallelized code in openMP using C++'''
'''Now write the parallelized code in openMP using C++'''
 
<nowiki>#pragma omp parallel shared(a,b,c)private(i) {
#pragma omp parallel shared(a,b,c)private(i) {
#pragma omp sections nowait
#pragma omp sections nowait
{
{
Line 33: Line 32:
}//end omp sections
}//end omp sections
} //end omp parallel
} //end omp parallel
</nowiki>

Revision as of 02:41, 29 January 2015

  1. Example 1
  2. Example 2

Parallelize the code below using loop distribution

for (i=0; i<n; i++) { 
S1:  a[i] = b[i-1] * a[i+1];
S2:  b[i] = b[i] * 3;
S3:  c[i] = .2 * (c[i-1] * c[i]);
} 

After loop distribution for(i=0; i < n; i++) S1: a[i] = b[i-1] * a[i+1]; for(i=0; i < n; i++) S3: c[i] = .2* c[i-1] * c[i]; for(i=0; i < n; i++) S2: b[i] = b[i] * 3;

Now write the parallelized code in openMP using C++ #pragma omp parallel shared(a,b,c)private(i) { #pragma omp sections nowait { #pragma omp section for(i=0; i < n; i++) a[i] = b[i-1] * a[i+1]; #pragma omp section for(i=0; i<n; i++) c[i] = .2* c[i-1]*c[i]; #pragma omp section for(i=0; i < n; i++) b[i] = b[i] * 3; }//end omp sections } //end omp parallel