1 #include <omp.h>
 2 
 3 // globals
 4 extern int xdim;
 5 extern int ydim;
 6 
 7 // does a = b + c
 8 void addmatrix(int ** a, int ** b, int ** c) {
 9 
10   int i,j;
11 
12   // handle the outer loop in parallel
13   #pragma omp parallel for \
14     shared(a,b,c,xdim,ydim) \
15     private(i,j) \
16     schedule(dynamic)
17   for(j=0;j<ydim;j++) {
18 
19     // nothing special will be done to parallelize the inner loop--
20     // this section is already done in parallel
21     for(i=0;i<xdim;i++) {
22       a[j][i] = b[j][i] + c[j][i];
23     }
24 
25   } // end of parallel for (implicit barrier)
26 
27 }
28