|
[Sponsors] |
Difference between "ExecutionTime" and "ClockTime" |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
August 24, 2009, 07:44 |
Difference between "ExecutionTime" and "ClockTime"
|
#1 | |
Senior Member
Daniel WEI (老魏)
Join Date: Mar 2009
Location: Beijing, China
Posts: 689
Blog Entries: 9
Rep Power: 21 |
Dear all,
A small question, what is the difference between "ExecutionTime" and "ClockTime"? I can get these lins from icoFoam.C, Code:
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; Quote:
Thanks in advance for any reply.
__________________
~ Daniel WEI ------------- Boeing Research & Technology - China Beijing, China |
||
August 24, 2009, 07:56 |
|
#2 |
Senior Member
Sandy Lee
Join Date: Mar 2009
Posts: 213
Rep Power: 18 |
||
August 24, 2009, 22:19 |
|
#3 |
Member
Simon Lapointe
Join Date: May 2009
Location: Québec, Qc, Canada
Posts: 33
Rep Power: 17 |
Hi,
I'm not an expert but here's what I think, 1) There isn't much to add there, the ExecutionTime is the time spent by the processor and the ClockTime is the wall clock time or "real" time if you prefer. 2 & 3) There is an interest because a significative difference between the ExecutionTime and the ClockTime is a sign of a slow calculation. The difference can be explained by the time when a file is being written or when there is communication between processors in a parallel run. Using a computer with a slow interconnect or not enough cells per processor can cause a difference in cpu and clock time. Hope that helps |
|
August 24, 2009, 22:58 |
|
#4 | |
Senior Member
Daniel WEI (老魏)
Join Date: Mar 2009
Location: Beijing, China
Posts: 689
Blog Entries: 9
Rep Power: 21 |
Quote:
I noticed this is your first two posts on the forum, and they are so helpful, thank you.
__________________
~ Daniel WEI ------------- Boeing Research & Technology - China Beijing, China |
||
September 1, 2014, 11:53 |
|
#5 | |
New Member
Wei Liu
Join Date: Apr 2011
Location: West Lafayette, IN
Posts: 29
Rep Power: 15 |
Quote:
Have you found the answer to your 4th question? Thanks! Wei |
||
September 11, 2020, 10:52 |
|
#6 | |
Senior Member
|
Quote:
I had the same question and search a bit through the code. It does not seem quite simple to do, or at least if it is I have not found how. I think you would have to change the main code of OpenFOAM (I've looked at the .com version, pimpleFoam solver) or some of the principal libraries. Here's my analysis, please jump in if you know more! In the solver you call Code:
runTime.printExecutionTime(Info); Code:
elapsedClockTime Code:
elapsedCpuTime elapsedCpuTime relies on the diff function which returns a scalar (double) coming from the C++ difftime function and elapsedClockTime relies directly on the C++ difftime function. So the difference actually comes from the type of the arguments to the difftime function. For clockTime C++ time_t type is used and is in seconds. For cpuTime the call is to std::clock which returns a "processor time" which is no longer an integer. The solution would be to somehow modify/rewrite the call from getTime to use chrono, something as what is given in here: https://stackoverflow.com/questions/...d-part-of-time |
||
September 1, 2023, 03:08 |
improve the precision of the excutive time
|
#7 | |
New Member
Join Date: Jul 2019
Location: MARS
Posts: 9
Rep Power: 7 |
Quote:
"Starts timing and returns elapsed time from start. Uses std::chrono::high_resolution_clock for better resolution (2uSec instead of ~20mSec) than cpuTime. " So the code would be like: Code:
#include "clockTime.H" Foam::clockTime myTime; Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" //<< " ClockTime = " << runTime.elapsedClockTime() << " s" << " ClockTime = " << myTime.elapsedTime() << " s" << endl; |
||
|
|