source: Sophya/trunk/Eval/Speed/cpupower.java@ 3558

Last change on this file since 3558 was 2970, checked in by ansari, 19 years ago

modifs mineures Progs cpupower.c .java corrige, complete , Reza 9/6/2006

  • Property svn:executable set to *
File size: 3.9 KB
Line 
1/* Class CPUPower .. Test performances CPU en Java */
2/* Compilation: javac cpupower.java */
3/* Execution: java CPUPower Ope Size */
4/* R. Ansari - LAL/UPS - Mai 2004 */
5
6import java.lang.*;
7
8class CPUPower {
9
10 public static void main(String[] args) throws java.io.IOException {
11 if (args.length < 1) {
12 System.out.println("Java CPUPower.main() Usage: java CPUPower Ope=1/2/3/4/5 [Size=20000]");
13 return;
14 }
15 Integer aOp = new Integer(args[0]);
16 int ope = aOp.intValue();
17 Integer N;
18 if (args.length > 1) N = new Integer(args[1]);
19 else {
20 if (ope == 0) N = new Integer("1000000");
21 else if (ope >= 4) N = new Integer("2000");
22 else N = new Integer("20000");
23 }
24 int sz = N.intValue();
25 if (sz < 10) sz = 20000;
26 System.out.println("Java CPUPower: OPE= " + ope + " SZ= " + sz);
27 CPUPower cpup = new CPUPower(sz);
28 cpup.Compute(ope);
29 }
30
31 double x[];
32 double y[];
33 double z[];
34 int SZ;
35 int OPE;
36 long N_OP;
37 long tml,tm,dtm;
38
39 CPUPower(int sz) {
40 tml = System.currentTimeMillis();
41 SZ = sz;
42 x = new double[SZ];
43 y = new double[SZ];
44 z = new double[SZ];
45 int k;
46 for(k=0; k<SZ; k++) {
47 double xx = (k%340);
48 x[k] = Math.PI*Math.exp(-xx/160.);
49 y[k] = Math.sin(x[k]);
50 z[k] = 0.;
51 }
52 N_OP = 0;
53 tm = System.currentTimeMillis();
54 dtm = tm-tml;
55 tml = tm;
56 System.out.println("CPUPower.CPUPower Time= " + dtm + " ms ...");
57
58 }
59
60 public void Compute(int ope) {
61 int i;
62 OPE = ope;
63 System.out.println("CPUPower.Compute() OPE= " + OPE );
64 tml = System.currentTimeMillis();
65 if (OPE == 5) fop5();
66 else if (OPE == 4) fop4();
67 else if (OPE == 3) fop3();
68 else if (OPE == 2) fop2();
69 else if (OPE == 1) fop1();
70 else for(i=0; i<100; i++) fop0();
71 tm = System.currentTimeMillis();
72 dtm = tm-tml;
73 tml = tm;
74 double mflops = N_OP;
75 mflops = mflops/dtm*1.e-3;
76 System.out.println("CPUPower.Compute() N_OP= " + N_OP + " Time= " + dtm + " ms ");
77 System.out.println("CPUPower.Compute() Time= " + dtm + " ms -> MFLOPS= " + mflops);
78 }
79
80 public void fop0() {
81 // System.out.println("CPUPower.fop0(): Double Loop: z[k] = Somme_i(x[k]*y[i]) --");
82 int k;
83 double s = 0.;
84 for(k=0; k<SZ; k++) z[k] = x[k]*y[k];
85 N_OP += SZ;
86 return;
87 }
88
89 public void fop1() {
90 System.out.println("CPUPower.fop1(): Double Loop: z[k] = Somme_i(x[k]*y[i]) --");
91 int i,j,k;
92 double s = 0.;
93 for(k=0; k<SZ; k++) {
94 for(i=0; i<SZ; i++) s += x[k]*y[i];
95 z[k] = s;
96 N_OP += 2*SZ;
97 }
98 return;
99 }
100
101 public void fop2() {
102 System.out.println("CPUPower.fop2() Double Loop: z[k] = Somme_i(x[k]*y[i]+x[i]*y[k] --");
103 double s = 0.;
104 int i,j,k;
105 for(k=0; k<SZ; k++) {
106 for(i=0; i<SZ; i++) s += x[k]*y[i]+x[i]*y[k];
107 z[k] = s;
108 N_OP += 4*SZ;
109 }
110
111 return;
112 }
113
114 public void fop3() {
115 System.out.println("CPUPower.fop3() Double Loop: z[k] = Somme_i(x[k]*y[i]+x[i]*y[k]-0.85*(y[k]+x[k])) --");
116 double s = 0.;
117 int i,j,k;
118 for(k=0; k<SZ; k++) {
119 for(i=0; i<SZ; i++) s += x[k]*y[i]+x[i]*y[k]-0.85*(y[k]+x[k]);
120 z[k] = s;
121 N_OP += 7*SZ;
122 }
123 return;
124 }
125 public void fop4() {
126 System.out.println("CPUPower.fop4() Double Loop: z[k] = Somme_i(x[k]*sin(y[i])+y[k]*cos(x[i])) --");
127 double s = 0.;
128 int i,j,k;
129 for(k=0; k<SZ; k++) {
130 for(i=0; i<SZ; i++) s += x[k]*Math.sin(y[i])+y[k]*Math.cos(x[i]);
131 z[k] = s;
132 N_OP += 70*SZ; // le facteur 70 est approximatif
133 }
134 }
135 public void fop5() {
136 System.out.println("CPUPower.fop5() Double Loop: z[k] = Somme_i(x[k]*sin(y[i])+log(abs(x[i])+0.1)+y[k]) --");
137 double s = 0.;
138 int i,j,k;
139 for(k=0; k<SZ; k++) {
140 for(i=0; i<SZ; i++) s += x[k]*Math.sin(y[i])+Math.log(Math.abs(x[i])+0.1)+y[k];
141 z[k] = s;
142 N_OP += 100*SZ; // le facteur 100 est approximatif
143 }
144 }
145
146}
147
148
149
150
151
152
Note: See TracBrowser for help on using the repository browser.