diff options
Diffstat (limited to 'gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c/omp_matvec.c')
-rw-r--r-- | gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c/omp_matvec.c | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c/omp_matvec.c b/gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c/omp_matvec.c deleted file mode 100644 index 12b8c6896..000000000 --- a/gcc-4.2.1-5666.3/libgomp/testsuite/libgomp.c/omp_matvec.c +++ /dev/null @@ -1,72 +0,0 @@ -/****************************************************************************** -* OpenMP Example - Matrix-vector multiplication - C/C++ Version -* FILE: omp_matvec.c -* DESCRIPTION: -* This example multiplies all row i elements of matrix A with vector -* element b(i) and stores the summed products in vector c(i). A total is -* maintained for the entire matrix. Performed by using the OpenMP loop -* work-sharing construct. The update of the shared global total is -* serialized by using the OpenMP critical directive. -* SOURCE: Blaise Barney 5/99 -* LAST REVISED: -******************************************************************************/ - -#include <omp.h> -#include <stdio.h> -#define SIZE 10 - - -main () -{ - -float A[SIZE][SIZE], b[SIZE], c[SIZE], total; -int i, j, tid; - -/* Initializations */ -total = 0.0; -for (i=0; i < SIZE; i++) - { - for (j=0; j < SIZE; j++) - A[i][j] = (j+1) * 1.0; - b[i] = 1.0 * (i+1); - c[i] = 0.0; - } -printf("\nStarting values of matrix A and vector b:\n"); -for (i=0; i < SIZE; i++) - { - printf(" A[%d]= ",i); - for (j=0; j < SIZE; j++) - printf("%.1f ",A[i][j]); - printf(" b[%d]= %.1f\n",i,b[i]); - } -printf("\nResults by thread/row:\n"); - -/* Create a team of threads and scope variables */ -#pragma omp parallel shared(A,b,c,total) private(tid,i) - { - tid = omp_get_thread_num(); - -/* Loop work-sharing construct - distribute rows of matrix */ -#pragma omp for private(j) - for (i=0; i < SIZE; i++) - { - for (j=0; j < SIZE; j++) - c[i] += (A[i][j] * b[i]); - - /* Update and display of running total must be serialized */ - #pragma omp critical - { - total = total + c[i]; - printf(" thread %d did row %d\t c[%d]=%.2f\t",tid,i,i,c[i]); - printf("Running total= %.2f\n",total); - } - - } /* end of parallel i loop */ - - } /* end of parallel construct */ - -printf("\nMatrix-vector total - sum of all c[] = %.2f\n\n",total); - - return 0; -} - |