source:
Sophya/trunk/Eval/Speed/tompCXX.cc@
991
Last change on this file since 991 was 991, checked in by , 25 years ago | |
---|---|
File size: 1.3 KB |
Rev | Line | |
---|---|---|
[991] | 1 | #include <stdlib.h> |
2 | #include <stdio.h> | |
3 | ||
4 | extern "C" { | |
5 | void InitTim(); | |
6 | void PrtTim(char *); | |
7 | } | |
8 | ||
9 | void Mult(int n, double *v1, double *v2, double *v3); | |
10 | void MultOMP(int n, double *v1, double *v2, double *v3); | |
11 | ||
12 | int main (int narg, char *arg[]) | |
13 | { | |
14 | int i,j, N, M; | |
15 | ||
16 | double *v1, *v2, *v3; | |
17 | ||
18 | if (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 | } | |
24 | N = 100; | |
25 | M = 500000; | |
26 | if (narg > 2) N = atoi(arg[2]); | |
27 | if (narg > 3) M = atoi(arg[3]); | |
28 | ||
29 | InitTim(); | |
30 | ||
31 | v1 = new double[M]; | |
32 | v2 = new double[M]; | |
33 | v3 = new double[M]; | |
34 | ||
35 | for(i=0; i<M; i++) { v1[i] = random()%1000; v2[i] = random()%5000; } | |
36 | PrtTim("End of Init "); | |
37 | ||
38 | if (*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 | } | |
42 | else { | |
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 | ||
47 | PrtTim("End of Multiplication "); | |
48 | ||
49 | delete[] v1; | |
50 | delete[] v2; | |
51 | delete[] v3; | |
52 | exit(0); | |
53 | } | |
54 | ||
55 | ||
56 | void Mult(int n, double *v1, double *v2, double *v3) | |
57 | { | |
58 | int k; | |
59 | for(k=0; k<n; k++) | |
60 | v3[k] = v1[k] * v2[k]; | |
61 | } | |
62 | ||
63 | void MultOMP(int n, double *v1, double *v2, double *v3) | |
64 | { | |
65 | int k; | |
66 | #pragma omp parallel for | |
67 | for(k=0; k<n; k++) | |
68 | v3[k] = v1[k] * v2[k]; | |
69 | } |
Note:
See TracBrowser
for help on using the repository browser.