Last change
on this file since 991 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 |
|
---|
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.