Comments (3)
Hi @rodionstepanov,
I can replicate this issue, full 8 minutes for 1024x512x512 on 2x Xeon E5-2680 v3, 48 threads. Digging in the internet, I found the root cause: gcc's std::rand()
is dog slow with multithreading, as it contains a mutex lock.
If I change the initialization loop in main_setup()
from
parallel_for(lbm.get_N(), [&](ulong n) { ... });
to
for(ulong n=0ull; n<lbm.get_N(); n++) { ... }
to run single-threaded, it's down to 2 minutes from 8.
I have now replaced std::rand()
with the standard C99 LCG function; this is suitable for multithreading and brings multithreaded initialization down to 1 minute. Please update!
Kind regards,
Moritz
from fluidx3d.
@ProjectPhysX , thanks a lot. I've updated and it is fast and furious now 🥇
from fluidx3d.
Hi @rodionstepanov,
interesting observation, I wasn't aware of this. random_symmetric() is no more than a std::rand() call internally. During initialization you should see the CPU go to full load on all cores, on both systems; I added this multithreading in update 2.9. Maybe the CPU in your Linux system is weaker? Or maybe the rand() call with g++ does something weird? I'll test this myself and try to replicate.
Thanks and kind regards,
Moritz
from fluidx3d.
Related Issues (20)
- Larger and faster simulations with adaptive domains? HOT 1
- 'class LBM' has no member named 'graphics' HOT 1
- Arc GPU Not rendering to Display HOT 8
- Mouse control problem with Remote Desktop Connection (windows) HOT 7
- Cannot run after compilation (Error: Memory size is too large) HOT 1
- Trouble testing any set ups that are not BENCHMARK HOT 2
- Issue with Force Vector Positions in FluidX3D Simulation HOT 1
- Issue with interactive graphics mode on Linux with multi-monitor setup HOT 1
- The problem with calculating the lift of the propellers HOT 2
- Example setup for Urban Wind CFD analysis HOT 1
- On exporting data, read_from_device_3d and VTK HOT 5
- How to Increase VRAM Using Shared GPU Memory HOT 3
- make.sh fails on some systems due to nonstandard interpreter path HOT 3
- Intel OpenCL CPU Runtime Usage HOT 1
- Resolution of voxels HOT 1
- Fast memcpy, or similar of flags/u/phi buffers HOT 1
- The model becomes rough HOT 1
- compilation error HOT 2
- Little Bit irritating new version message with 1.4? Not 2.14? HOT 1
- Question about performance HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fluidx3d.