diff --git a/kernel_module/user/MM.c b/kernel_module/user/MM.c new file mode 100644 index 0000000..c15beac --- /dev/null +++ b/kernel_module/user/MM.c @@ -0,0 +1,68 @@ +#include +#include +#include + +#define NRA 64 /* number of rows in matrix A */ +#define NCA 64 /* number of columns in matrix A */ +#define NCB 64 /* number of columns in matrix B */ + +int main () +{ +int tid, nthreads, i, j, k, chunk; +double a[NRA][NCA], /* matrix A to be multiplied */ + b[NCA][NCB], /* matrix B to be multiplied */ + c[NRA][NCB]; /* result matrix C */ + +chunk = 10; /* set loop iteration chunk size */ + +/*** Spawn a parallel region explicitly scoping all variables ***/ +omp_set_num_threads(4); +#pragma omp parallel shared(a,b,c,nthreads,chunk) private(tid,i,j,k) + { + tid = omp_get_thread_num(); + if (tid == 0) + { + nthreads = omp_get_num_threads(); + printf("Starting matrix multiple example with %d threads\n",nthreads); + printf("Initializing matrices...\n"); + } + /*** Initialize matrices ***/ + #pragma omp for schedule (static, chunk) + for (i=0; i