About the computation efficiency #241
Replies: 9 comments
-
|
Unfortunately we haven't had the time needed to conduct timing experiments on Windows and Linux, but past experiments led us to up to ~50% more time to run a case: https://sourceforge.net/p/bluecfd-sc/wiki/Runtimes202_211/ Now taking more than twice as long to run, seems to be due to missing process binding between the process and the logical CPU on that machine. In other words, if the process is allowed to jump between cores, this means that time is spent switching between cores will lead to various issues:
Another thing that could be reducing performance is the anti-virus, which may be up and running and scanning the computer, while the simulation is running. If possible, please run the tutorial case once again and use the Task Manager to force the processor affinity for the Please do tell us of your findings on this! Beyond these, there are at least a few known/expected bottlenecks for our ports on Windows:
|
Beta Was this translation helpful? Give feedback.
-
|
I was curious and I've run some tests, although I don't have an Ubuntu installation directly installed on my workstation at the office. However, here are some timings for that tutorial case, with OpenFOAM 5 Deb on Windows 10 WSL with Ubuntu 16.04 versus blueCFD-Core 2017-2. The CPU the workstation has got is an i5-6600 @ 3.3GHz, running at ~3.75GHz when using a single core. This is the machine blueCFD-Core 2017-2 was built with. I only left if running for 0.05s on each run, namely that it only spends some time reading and writing to disk and because I couldn't spend much time on this.
All builds and OS's are in x86_64/x64 modes, 32-bit labels and Double Precision. So it's at least roughly 12% slower using blueCFD-Core 2017, when comparing these modes, where using VirtualBox doesn't give much of an advantage in performance. Edits:
|
Beta Was this translation helpful? Give feedback.
-
|
@haibianshifeng If possible, can you tells us the CPUs you are testing blueCFD-Core with? |
Beta Was this translation helpful? Give feedback.
-
|
The system for testing is Windows 7-64 bits.
The software for testing is BlueCFD 2017-2.
The CPU is Intel(R) Core(TM) i7-5960X @3.00GHz.
*edit: Removed sensitive information.*
|
Beta Was this translation helpful? Give feedback.
-
|
I've done additional tests with my machine at home, which has an AMD A10-7850K, 32GB of RAM at 2133MHz and a Samsung SSD 850 Evo 250GB. The tests performed were with:
Note: Edited this comment with new information as I ran each test, but I've now finished it (over a period of 4h30). Again, I only left it running for 0.05s on each run, namely that it only spends some time reading and writing to disk and because I couldn't spend much time on this.
A few additional notes about the timings above:
Conclusion:
|
Beta Was this translation helpful? Give feedback.
-
|
Following on the previous comment, I've then left the case running for its full completion to see what timings to expect:
Thoughts and conclusions:
|
Beta Was this translation helpful? Give feedback.
-
|
@haibianshifeng I don't know if you've been periodically looking into this report page, but I've been editing the past couple of comments of mine with more details on performance issues. In essence, if you run the case with Using the code provided on this page: OF23_IOPerformance_Analysis_2, section Sixth approach, it's easier to try and isolate how each double value export functions work. On Ubuntu, used
OK, the problem is very real when using ASCII on Windows, via GCC, being roughly 2.5x slower this way on all conversion methods. When commenting out the file opening/write/close code on the On Ubuntu 16.04 via WSL: Well, this is interesting.... it's a somewhat old and known problem: https://stackoverflow.com/questions/17236352/mingw-w64-slow-sprintf-in-cstdio And Although it didn't reduce all that much, when compared to Fortunately someone did a better job in looking into this sometime ago: https://codeforces.com/blog/entry/47180 |
Beta Was this translation helpful? Give feedback.
-
|
I kept forgetting to compare the log files when running in But there is no clear reason as to why this would have stalled for such a long time... so either there is an infinite loop somewhere or the Anti-virus kicked in and stalled the run... If we remove this massive difference in time, the simulation would have taken 3017s, which is similar to the run in It's not the first time I see something like this and what comes to mind was an infinite loop that occurred several years ago in the Lagrangian code, where a loop for randomness calculations was not able to exiting the loop, because the value was always zero, due to the randomness range going from 0 to 65535... but I'm not familiar with the transport models in this case and will require additional studying of the problem. |
Beta Was this translation helpful? Give feedback.
-
|
Many thanks for your help and information. I had test my model by using different writeFormat binary and ascii. I found that the time of writeFormat binary is much faster the time of writeFormat ascii. The conclusion is agree with your result. However, I found the problem about the contiguous time steps. I do not know the reason. I guess the problem is the convergence of the pressure. I do not how to solve it. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
I use the same tutorials as following:https://github.com/OpenFOAM/OpenFOAM-dev/tree/master/tutorials/multiphase/interFoam/laminar/capillaryRise。
I run it on the same compute, one is installed with ubuntu 14.04 and OF 5, another one is installed with windows 7 and blueCFD 2017.
However, the time of running on ubuntu is 20 minutes and the time of running on windows is 45 minutes.
So, the question is that why the computation efficiency is so slow on windows. Do you have trip to improve the computation efficiency.
Beta Was this translation helpful? Give feedback.
All reactions