--- trunk/OOPSE/libmdtools/mdProfile.cpp 2003/12/19 18:53:43 888 +++ trunk/OOPSE/libmdtools/mdProfile.cpp 2003/12/19 20:36:35 891 @@ -10,6 +10,7 @@ #include "mpiSimulation.hpp" #endif //is_mpi +#include "config.h" #include "simError.h" #include "mdProfile.hpp" @@ -30,10 +31,17 @@ namespace mdProfileSpace { #ifdef IS_MPI double globalTime[N_PROFILES]; #endif //is_mpi + } +extern "C"{ + + void F90_FUNC(gettimes, GETTIMES)(double* forceTime, + double* commTime); +} + using namespace mdProfileSpace; @@ -91,16 +99,18 @@ void writeProfiles( void ){ int days, hours, minutes, secs, msecs; double donkey; + double forceTime, commTime; + #ifdef IS_MPI int j; MPI_Status istatus; - double nodeTime; + double nodeTime, nodeForceTime, nodeCommTime; double nodeAccum[N_PROFILES]; double nodePercent[N_PROFILES]; - double globalTime; + double globalTime, globalForceTime, globalCommTime; double globalAccum[N_PROFILES]; double globalPercent[N_PROFILES]; #endif // is_mpi @@ -140,15 +150,21 @@ void writeProfiles( void ){ secs = (int)donkey; msecs = (int)( (donkey - secs) * 1000 ); + F90_FUNC(gettimes, GETTIMES)(&forceTime, &commTime); + fprintf( stdout, "----------------------------------------------------------------------------\n" - " Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n", + " Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n" + "\n" + " From Fortran: forceTime = %G secs; communicationTime = %G secs.\n", days, hours, minutes, secs, msecs, - totalTime ); + totalTime, + forceTime, + commTime); #else // the parrallel version @@ -193,21 +209,29 @@ void writeProfiles( void ){ secs = (int)donkey; msecs = (int)( (donkey - secs) * 1000 ); + F90_FUNC(gettimes, GETTIMES)(&forceTime, &commTime); + fprintf( stdout, "----------------------------------------------------------------------------\n" - " Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n", + " Total Time = %03d:%02d:%02d:%02d.%03d ( %G sec )\n" + "\n" + " From Fortran: forceTime = %G secs; communicationTime = %G secs.\n", days, hours, minutes, secs, msecs, - totalTime ); + totalTime, + forceTime, + commTime); // now the rest of the nodes nodeTots[0] = totalTime; globalTime = totalTime; + globalForceTime = forceTime; + globalCommTime = commTime; for(i=0;i