From 8d6b10e983a7bd7741ada07d946cfa74d4a1e0c0 Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Tue, 17 Apr 2018 12:11:10 +0100 Subject: [PATCH] Add MM.c as a test for https://www.mail-archive.com/gem5-users@gem5.org/msg15346.html --- kernel_module/user/MM.c | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 kernel_module/user/MM.c 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