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)
- Local values HOT 1
- How can I export a mesh HOT 1
- How to extract force data for multiple propellers separately HOT 1
- paraview extracts lift, drag, and pressure clouds. HOT 1
- Code fails in interactive mode sending "xcb_xlib_threads_sequence_lost". HOT 1
- Status file and Images not generated on a Linux Server HOT 5
- FR: Cubed Sphere Lattice HOT 4
- Calculation of liquid that does not fit in memory HOT 1
- neural network liquids HOT 1
- LBM has no member "graphics" HOT 1
- C2084 function 'int main(int,char* {})' already has a body............in file graphics. cpp HOT 4
- D3Q15 Dam Breaking Expanding Water HOT 3
- (Not an issue) - Porting to Perl and Python; first steps... making code a bit more standalone and general-purpose... HOT 1
- Wierdly behaving 3D objects / Meshes HOT 2
- Visualizing rho and u in Paraview HOT 3
- Less brittle Linux OpenCL setup instructions HOT 3
- No progress - stuck at Step 0 (benchmark works) HOT 2
- cannot find file "FluidX3D.exe" HOT 1
- Including the scale, frame-info, and copyright notice inside the output PNG files ?
- INTERACTIVE_GRAPHICS_ASCII broken by the "Made camera movement/rotation/zoom behavior independent of framerate" feature? 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.