Fix timing: replace clock() with MPI_Wtime() for wall-clock measurement
clock() measures total CPU time across all threads, not wall-clock time. With the new OpenMP parallel regions in bssn_rhs_c.C, clock() sums CPU time from all OpenMP threads, producing inflated timing that scales with thread count rather than reflecting actual elapsed time. MPI_Wtime() returns wall-clock seconds, giving accurate timing regardless of the number of OpenMP threads running inside the measured interval. Co-authored-by: ianchb <i@4t.pw>
This commit is contained in:
@@ -2028,7 +2028,7 @@ void bssn_class::Read_Ansorg()
|
||||
|
||||
void bssn_class::Evolve(int Steps)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
double LastDump = 0.0, LastCheck = 0.0, Last2dDump = 0.0;
|
||||
LastAnas = 0;
|
||||
#if 0
|
||||
@@ -2142,7 +2142,7 @@ void bssn_class::Evolve(int Steps)
|
||||
// { GH->levels=GH->movls; }
|
||||
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
#if (PSTR == 0)
|
||||
RecursiveStep(0);
|
||||
#elif (PSTR == 1 || PSTR == 2 || PSTR == 3)
|
||||
@@ -2198,10 +2198,10 @@ void bssn_class::Evolve(int Steps)
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << endl;
|
||||
cout << " Timestep # " << ncount << ": integrating to time: " << PhysTime << " "
|
||||
<< " Computer used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< " Computer used " << (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
// cout << endl;
|
||||
}
|
||||
@@ -2403,15 +2403,15 @@ void bssn_class::RecursiveStep(int lev)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(StateList, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2543,15 +2543,15 @@ void bssn_class::ParallelStep()
|
||||
SHStep();
|
||||
#if (RPS == 1)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(StateList, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -2846,15 +2846,15 @@ void bssn_class::ParallelStep()
|
||||
|
||||
#if (RPS == 1)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(StateList, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
// a_stream.clear();
|
||||
@@ -3355,16 +3355,16 @@ void bssn_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_pre, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -3715,16 +3715,16 @@ void bssn_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -3842,15 +3842,15 @@ void bssn_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -4214,16 +4214,16 @@ void bssn_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_pre, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -4559,16 +4559,16 @@ void bssn_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -4679,15 +4679,15 @@ void bssn_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -5476,16 +5476,16 @@ void bssn_class::SHStep()
|
||||
}
|
||||
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_pre, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -5653,16 +5653,16 @@ void bssn_class::SHStep()
|
||||
}
|
||||
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -5698,15 +5698,15 @@ void bssn_class::SHStep()
|
||||
}
|
||||
#if (RPS == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
@@ -7639,9 +7639,9 @@ void bssn_class::AH_Step_Find(int lev, double dT_lev)
|
||||
}
|
||||
if (tf)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
prev_clock = clock();
|
||||
prev_clock = MPI_Wtime();
|
||||
const int cdumpid = int(PhysTime / AHdumptime) + 1;
|
||||
for (int ihn = 0; ihn < HN_num; ihn++)
|
||||
dumpid[ihn] = cdumpid;
|
||||
@@ -7720,9 +7720,9 @@ void bssn_class::AH_Step_Find(int lev, double dT_lev)
|
||||
|
||||
if (myrank == 0)
|
||||
{
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Finding horizon used "
|
||||
<< (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC)
|
||||
<< (curr_clock - prev_clock)
|
||||
<< " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ void scalar_class::Setup_Initial_Data()
|
||||
}
|
||||
void scalar_class::Evolve(int Steps)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
double LastDump = 0.0, LastCheck = 0.0;
|
||||
LastAnas = 0;
|
||||
|
||||
@@ -328,7 +328,7 @@ void scalar_class::Evolve(int Steps)
|
||||
for (int ncount = 1; ncount < Steps + 1; ncount++)
|
||||
{
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
RecursiveStep(0);
|
||||
|
||||
LastDump += dT_mon;
|
||||
@@ -346,9 +346,9 @@ void scalar_class::Evolve(int Steps)
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Timestep # " << ncount << ": integrating to time: " << PhysTime
|
||||
<< " Computer used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
<< " Computer used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
if (PhysTime >= TotalTime)
|
||||
break;
|
||||
@@ -549,15 +549,15 @@ void scalar_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_pre, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " Shell stuff synchronization used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -731,15 +731,15 @@ void scalar_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " Shell stuff synchronization used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -786,15 +786,15 @@ void scalar_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1010,15 +1010,15 @@ void scalar_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->Synch(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " Shell stuff synchronization used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " Shell stuff synchronization used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1027,15 +1027,15 @@ void scalar_class::Step(int lev, int YN)
|
||||
#ifdef WithShell
|
||||
if (lev == 0)
|
||||
{
|
||||
clock_t prev_clock, curr_clock;
|
||||
double prev_clock, curr_clock;
|
||||
if (myrank == 0)
|
||||
curr_clock = clock();
|
||||
curr_clock = MPI_Wtime();
|
||||
SH->CS_Inter(SynchList_cor, Symmetry);
|
||||
if (myrank == 0)
|
||||
{
|
||||
prev_clock = curr_clock;
|
||||
curr_clock = clock();
|
||||
cout << " CS_Inter used " << (double)(curr_clock - prev_clock) / ((double)CLOCKS_PER_SEC) << " seconds! " << endl;
|
||||
curr_clock = MPI_Wtime();
|
||||
cout << " CS_Inter used " << (curr_clock - prev_clock) << " seconds! " << endl;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user