source: Sophya/trunk/Eval/Speed/tompC.c@ 1095

Last change on this file since 1095 was 991, checked in by ansari, 25 years ago

Creation du module Eval/Speed - Chronometrage de temps CPU pour le
calcul floattant C/C++/Fortran ... Reza 2/5/2000

File size: 1.3 KB
Line 
1#include <stdlib.h>
2#include <stdio.h>
3
4void InitTim();
5void PrtTim(char *);
6
7void Mult(int n, double *v1, double *v2, double *v3);
8void MultOMP(int n, double *v1, double *v2, double *v3);
9
10int main (int narg, char *arg[])
11{
12int i,j, N, M;
13
14double *v1, *v2, *v3;
15
16if (narg < 2) {
17 printf("\n Usage tompC P/x [N M] \n \n");
18 printf(" P --> Calling MultOMP, x ---> Calling Mult \n");
19 printf(" N (=100): External loop number M : Array Size (500000) \n");
20 exit(0);
21}
22N = 100;
23M = 500000;
24if (narg > 2) N = atoi(arg[2]);
25if (narg > 3) M = atoi(arg[3]);
26
27InitTim();
28
29v1 = (double *)malloc(M*sizeof(double));
30v2 = (double *)malloc(M*sizeof(double));
31v3 = (double *)malloc(M*sizeof(double));
32 for(i=0; i<M; i++) { v1[i] = random()%1000; v2[i] = random()%5000; }
33PrtTim("End of Init ");
34
35if (*arg[1] == 'P') {
36 printf("Calling N=%d times MultOMP(Size= %d) \n", N, M);
37 for(i=0; i<N; i++) MultOMP(M, v1, v2, v3);
38}
39else {
40 printf("Calling N=%d times Mult(Size= %d) \n", N, M);
41 for(i=0; i<N; i++) Mult(M, v1, v2, v3);
42}
43
44PrtTim("End of Multiplication ");
45
46free(v1);
47free(v2);
48free(v3);
49
50exit(0);
51}
52
53
54void Mult(int n, double *v1, double *v2, double *v3)
55{
56int k;
57for(k=0; k<n; k++)
58 v3[k] = v1[k] * v2[k];
59}
60
61void MultOMP(int n, double *v1, double *v2, double *v3)
62{
63int k;
64#pragma omp parallel for
65for(k=0; k<n; k++)
66 v3[k] = v1[k] * v2[k];
67}
Note: See TracBrowser for help on using the repository browser.