ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/mdProfile.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/mdProfile.cpp (file contents):
Revision 888 by mmeineke, Fri Dec 19 18:53:43 2003 UTC vs.
Revision 891 by mmeineke, Fri Dec 19 20:36:35 2003 UTC

# Line 10 | Line 10
10   #include "mpiSimulation.hpp"
11   #endif //is_mpi
12  
13 + #include "config.h"
14   #include "simError.h"
15   #include "mdProfile.hpp"
16  
# Line 30 | Line 31 | namespace mdProfileSpace {
31   #ifdef IS_MPI
32    double globalTime[N_PROFILES];
33   #endif //is_mpi
34 +
35    
36   }
37  
38 + extern "C"{
39 +  
40 +  void F90_FUNC(gettimes, GETTIMES)(double* forceTime,
41 +                                    double* commTime);
42 + }
43  
44 +
45   using namespace mdProfileSpace;
46  
47  
# Line 91 | Line 99 | void writeProfiles( void ){
99    int days, hours, minutes, secs, msecs;
100    double donkey;
101    
102 +  double forceTime, commTime;
103 +  
104   #ifdef IS_MPI
105    int j;
106  
107    MPI_Status istatus;    
108  
109 <  double nodeTime;
109 >  double nodeTime, nodeForceTime, nodeCommTime;
110    double nodeAccum[N_PROFILES];
111    double nodePercent[N_PROFILES];
112  
113 <  double globalTime;
113 >  double globalTime, globalForceTime, globalCommTime;
114    double globalAccum[N_PROFILES];
115    double globalPercent[N_PROFILES];
116   #endif // is_mpi
# Line 140 | Line 150 | void writeProfiles( void ){
150    secs = (int)donkey;
151    msecs = (int)( (donkey - secs) * 1000 );
152  
153 +  F90_FUNC(gettimes, GETTIMES)(&forceTime, &commTime);
154 +
155    fprintf( stdout,
156             "----------------------------------------------------------------------------\n"
157 <           "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n",
157 >           "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n"
158 >           "\n"
159 >           "  From Fortran: forceTime = %G secs; communicationTime = %G secs.\n",
160             days,
161             hours,
162             minutes,
163             secs,
164             msecs,
165 <           totalTime );
165 >           totalTime,
166 >           forceTime,
167 >           commTime);
168  
169   #else // the parrallel version
170  
# Line 193 | Line 209 | void writeProfiles( void ){
209      secs = (int)donkey;
210      msecs = (int)( (donkey - secs) * 1000 );
211      
212 +    F90_FUNC(gettimes, GETTIMES)(&forceTime, &commTime);
213 +
214      fprintf( stdout,
215               "----------------------------------------------------------------------------\n"
216 <             "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n",
216 >             "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n"
217 >             "\n"
218 >             "  From Fortran: forceTime = %G secs; communicationTime = %G secs.\n",
219               days,
220               hours,
221               minutes,
222               secs,
223               msecs,
224 <             totalTime );
224 >             totalTime,
225 >             forceTime,
226 >             commTime);
227      
228      // now the rest of the nodes
229      
230      nodeTots[0] = totalTime;
231      
232      globalTime = totalTime;
233 +    globalForceTime = forceTime;
234 +    globalCommTime = commTime;
235      for(i=0;i<N_PROFILES;i++)
236        globalAccum[i] = accumTime[i];
237      
# Line 219 | Line 243 | void writeProfiles( void ){
243        MPI_Recv(nodeAccum, N_PROFILES, MPI_DOUBLE, j,
244                 1, MPI_COMM_WORLD, &istatus );
245  
246 +      MPI_Recv(&nodeForceTime, 1, MPI_DOUBLE, j,
247 +               1, MPI_COMM_WORLD, &istatus );
248 +      MPI_Recv(&nodeCommTime, 1, MPI_DOUBLE, j,
249 +               1, MPI_COMM_WORLD, &istatus );
250 +
251        for(i=0;i<N_PROFILES;i++){
252          nodeTime += nodeAccum[i];
253        }
# Line 257 | Line 286 | void writeProfiles( void ){
286        
287        fprintf( stdout,
288                 "----------------------------------------------------------------------------\n"
289 <               "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n",
289 >               "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n"
290 >               "\n"
291 >               "  From Fortran: forceTime = %G secs; communicationTime = %G secs.\n",
292                 days,
293                 hours,
294                 minutes,
295                 secs,
296                 msecs,
297 <               nodeTime );
297 >               nodeTime,
298 >               nodeForceTime,
299 >               nodeCommTime);
300        
301        for(i=0;i<N_PROFILES;i++)
302          globalAccum[i] += nodeAccum[i];
303        
304        globalTime += nodeTime;
305 +      globalForceTime += nodeForceTime;
306 +      globalCommTime += nodeCommTime;
307        nodeTots[j] = nodeTime;
308      }
309  
# Line 324 | Line 359 | void writeProfiles( void ){
359      
360      fprintf( stdout,
361               "----------------------------------------------------------------------------\n"
362 <             "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n",
362 >             "  Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n"
363 >             "\n"
364 >             "  From Fortran: forceTime = %G secs; communicationTime = %G secs.\n",
365               days,
366               hours,
367               minutes,
368               secs,
369               msecs,
370 <             globalTime );
370 >             globalTime,
371 >             globalForceTime,
372 >             globalCommTime);
373    }
374  
375    else{
# Line 339 | Line 378 | void writeProfiles( void ){
378        
379        if( worldRank == j ){
380          
381 +        F90_FUNC(gettimes, GETTIMES)(&forceTime, &commTime);
382 +
383          MPI_Send( accumTime, N_PROFILES, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD );
384 +        MPI_Send( &forceTime, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD );
385 +        MPI_Send( &commTime, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD );
386        }
387      }
388    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines