Carmen Code
 All Classes Files Functions Variables Macros Pages
Functions
Performance.cpp File Reference

Simulation information. More...

#include "Carmen.h"
Include dependency graph for Performance.cpp:

Functions

void Performance (const char *FileName)
 Computes the performance of the computation and, for cluster computations, write it into file FileName. More...
 

Detailed Description

Simulation information.

Function Documentation

void Performance ( const char *  FileName)

Computes the performance of the computation and, for cluster computations, write it into file FileName.

Parameters
FileNameName of the file.
Returns
void
23 {
24  // --- Local variables ---
25 
26  bool EndComputation; // True if end computation
27  int FineCellNb; // Number of cells on fine grid
28  int CellPVirt;
29  FILE *output; // Pointer to output file
30 
31  double realtimefull; //full real time
32  double ftime; // real time
33  double ctime; // CPU time
34  unsigned int ttime, rtime; // total and remaining real time (in seconds)
35  unsigned int tctime=0, rctime=0; // total and remaining CPU time (in seconds)
36  unsigned int rest;
37  int day, hour, min, sec;
38 
39  // --- Init EndComputation
40 
41  EndComputation = (IterationNo > IterationNb);
42 
43  // --- Compute FineCellNb ---
44 
45  FineCellNb = 1<<(ScaleNb*Dimension);
46  CellPVirt = 1<<(ScaleNb*(Dimension-1));
47  CellPVirt = CellPVirt*2*Dimension;
48  // --- Write in file ---
49 
50 /*
51  char CPUFileName[255];
52 #if defined PARMPI
53  sprintf(CPUFileName,"%d_%d_%d_%s",coords[0],coords[1],coords[2],FileName);
54 // strcpy(CPUFileName, FileName);
55 #else
56  strcpy(CPUFileName, FileName);
57 #endif
58 */
59 
60  if ((output = fopen(FileName,"w")))
61  {
62 
63  realtimefull=ftime = CPUTime.realTime();
64  ctime = CPUTime.CPUTime();
65 
66  if (!EndComputation)
67  {
68  ttime = (unsigned int)((ftime*IterationNb)/IterationNo);
69  rtime = (unsigned int)((ftime*(IterationNb-IterationNo))/IterationNo);
70  tctime = (unsigned int)((ctime*IterationNb)/IterationNo);
71  rctime = (unsigned int)((ctime*(IterationNb-IterationNo))/IterationNo);
72  }
73 
74  fprintf(output, "Dimension : %12i\n", Dimension);
75 
76  if (EndComputation)
77  fprintf(output, "Iterations : %12i\n", IterationNb);
78  else
79  {
80  fprintf(output, "Iterations (total) : %12i\n", IterationNb);
81  fprintf(output, "Iterations (elapsed) : %12i\n", IterationNo);
82  fprintf(output, "In progress :%13.6f %%\n", 100.*IterationNo/(1.*IterationNb));
83  }
84 
85  fprintf(output, "Scales (max) : %12i\n", ScaleNb);
86  fprintf(output, "Cells (max) : %12i\n", (1<<(ScaleNb*Dimension)));
87 
88  if (Multiresolution)
89  fprintf(output, "Solver : MR\n");
90  else
91  fprintf(output, "Solver : FV\n");
92 
93  //fprintf(output, "Time integration : explicit\n");
94  fprintf(output, "Time accuracy order : %12i\n", StepNb);
95  fprintf(output, "Time step :%13.6e s\n", TimeStep);
96  fprintf(output, "Threshold parameter :%13.6e \n", Tolerance);
97  fprintf(output, "Threshold norm : %12i\n", ThresholdNorm);
98  fprintf(output, "CFL :%13.6e \n", CFL);
99 
100  if(Resistivity)
101  fprintf(output, "Eta :%13.6e \n", eta);
102  if(Diffusivity)
103  fprintf(output, "Chi :%13.6e \n", chi);
104 
105  if (EndComputation)
106  {
107  fprintf(output, "Physical time :%13.6e s\n", ElapsedTime); //TimeStep * IterationNb);
108  fprintf(output, "CPU time (s) :%13.6e s\n", ctime);
109 
110  if (Multiresolution)
111  fprintf(output, "CPU time / it. x pt :%13.6e s\n", ctime/TotalLeafNb);
112  else
113  fprintf(output, "CPU time / it. x pt :%13.6e s\n", ctime/((1<<(ScaleNb*Dimension))*IterationNb));
114 
115  if (Multiresolution)
116  {
117 
118  fprintf(output, "Leaf compression :%13.6f %% \n", (100.*TotalLeafNb)/(1.0*IterationNb*FineCellNb));
119  //fprintf(output, "Memory compression :%13.6f %% \n", (100.*TotalCellNb)/(1.0*IterationNb*(FineCellNb)));
120  fprintf(output, "Memory compression :%13.6f %% \n", (100.*TotalCellNb)/(1.0*IterationNb*(FineCellNb + CellPVirt)));
121  fprintf(output, "CPU compression :%13.6f %% \n", (100.*ctime)/(IterationNb*FVTimeRef));
122  }
123  else
124  {
125  fprintf(output, "Leaf compression :%13.6f %% \n", 100.);
126  fprintf(output, "Memory compression :%13.6f %% \n", 100.);
127  fprintf(output, "CPU compression :%13.6f %% \n", 100.);
128  }
129  }
130  else
131  {
132  fprintf(output, "Total physical time :%13.6e s\n", TimeStep * IterationNb);
133  fprintf(output, "Elapsed physical time :%13.6e s\n", TimeStep * IterationNo);
134  if (Multiresolution)
135  {
136  fprintf(output, "Leaf compression :%13.6f %% \n", (100.*TotalLeafNb)/(1.0*IterationNb*FineCellNb));
137  fprintf(output, "Memory compression :%13.6f %% \n", (100.*TotalCellNb)/(1.0*IterationNo*FineCellNb));
138  fprintf(output, "CPU compression :%13.6f %% \n", (100.*ctime)/(IterationNo*FVTimeRef));
139  }
140  else
141  {
142  fprintf(output, "Leaf compression :%13.6f %% \n", 100.);
143  fprintf(output, "Memory compression :%13.6f %% \n", 100.);
144  fprintf(output, "CPU compression :%13.6f %% \n", 100.);
145  }
146  }
147 
148  fprintf(output, "\n");
149 
150  if (EndComputation)
151  {
152  // --- Print final time ------------------------------------------------
153 
154  rest = (unsigned int)(ctime);
155  day = rest/86400;
156  rest %= 86400;
157  hour = rest/3600;
158  rest %= 3600;
159  min = rest/60;
160  rest %= 60;
161  sec = rest;
162  rest = (unsigned int)(ctime);
163 
164  if (rest >= 86400)
165  fprintf(output, "CPU time : %5d day %2d h %2d min %2d s\n", day, hour, min, sec);
166 
167  if ((rest < 86400)&&(rest >= 3600))
168  fprintf(output, "CPU time : %2d h %2d min %2d s\n", hour, min, sec);
169 
170  if ((rest < 3600)&&(rest >= 60))
171  fprintf(output, "CPU time : %2d min %2d s\n", min, sec);
172 
173  if (rest < 60)
174  fprintf(output, "CPU time : %2d s\n", sec);
175  }
176  else
177  {
178  // --- Print total time ------------------------------------------------
179 
180  rest = tctime;
181  day = rest/86400;
182  rest %= 86400;
183  hour = rest/3600;
184  rest %= 3600;
185  min = rest/60;
186  rest %= 60;
187  sec = rest;
188 
189  if (tctime >= 86400)
190  fprintf(output, "Total CPU time (estimation) : %5d day %2d h %2d min %2d s\n", day, hour, min, sec);
191 
192  if ((tctime < 86400)&&(tctime >= 3600))
193  fprintf(output, "Total CPU time (estimation) : %2d h %2d min %2d s\n", hour, min, sec);
194 
195  if ((tctime < 3600)&&(tctime >= 60))
196  fprintf(output, "Total CPU time (estimation) : %2d min %2d s\n", min, sec);
197 
198  if (tctime < 60)
199  fprintf(output,"Total CPU time (estimation) : %2d s\n", sec);
200 
201  // --- Print remaining time ------------------------------------------------
202 
203  rest = rctime;
204  day = rest/86400;
205  rest %= 86400;
206  hour = rest/3600;
207  rest %= 3600;
208  min = rest/60;
209  rest %= 60;
210  sec = rest;
211 
212  if (rctime >= 86400)
213  fprintf(output, "Remaining CPU time (estimation) : %5d day %2d h %2d min %2d s\n", day, hour, min, sec);
214 
215  if ((rctime < 86400)&&(rctime >= 3600))
216  fprintf(output, "Remaining CPU time (estimation) : %2d h %2d min %2d s\n", hour, min, sec);
217 
218  if ((rctime < 3600)&&(rctime >= 60))
219  fprintf(output, "Remaining CPU time (estimation) : %2d min %2d s\n", min, sec);
220 
221  if (rctime < 60)
222  fprintf(output, "Remaining CPU time (estimation) : %2d s\n", sec);
223 
224  }
225 
226 
227 #if defined PARMPI
228  fprintf(output, "\n");
229  fprintf(output, "Real time (time() function) :%lf\n", realtimefull);
230  fprintf(output, "clock() function :%lf\n", ctime);
231  fprintf(output, "\nCommunications real timer: %lf\n", CommTimer.realTime());
232  fprintf(output, "Communications clock():%lf\n", CommTimer.CPUTime());
233 #endif
234 
235  fprintf(output, "\n");
236  fclose (output);
237  }
238  else
239  {
240  cout << "Performance.cpp: In method `void Performance(Node*, char*)':\n";
241  cout << "Performance.cpp: cannot open file " << FileName << '\n';
242  cout << "carmen: *** [Performance.o] Execution error\n";
243  cout << "carmen: abort execution.\n";
244  exit(1);
245  }
246 }
int IterationNb
Definition: Parameters.cpp:37
int ScaleNb
Definition: Parameters.cpp:87
double CPUTime()
Returns CPU time from previous start in seconds.
Definition: Timer.cpp:124
bool Resistivity
Definition: Parameters.cpp:120
real chi
Definition: Parameters.cpp:124
real eta
Definition: Parameters.cpp:123
real TotalLeafNb
Definition: Parameters.cpp:176
int Dimension
Definition: Parameters.cpp:74
int IterationNo
Definition: Parameters.cpp:168
real ElapsedTime
Definition: Parameters.cpp:95
double realTime()
Returns real time from previous start in seconds.
Definition: Timer.cpp:148
bool Diffusivity
Definition: Parameters.cpp:121
int StepNb
Definition: Parameters.cpp:36
real TotalCellNb
Definition: Parameters.cpp:177
Timer CommTimer
Definition: Parameters.cpp:241
real TimeStep
Definition: Parameters.cpp:40
bool Multiresolution
Definition: Parameters.cpp:84
double FVTimeRef
Definition: Parameters.cpp:172
real Tolerance
Definition: Parameters.cpp:91
int ThresholdNorm
Definition: Parameters.cpp:100
Timer CPUTime
Definition: Parameters.cpp:169
real CFL
Definition: Parameters.cpp:39

Here is the caller graph for this function: