source: Sophya/trunk/Eval/Speed/tompCXX.cc@ 1094

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