NewtonsDampedLaw should be parallelized

Bug #398086 reported by Václav Šmilauer
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Yade
Fix Released
Wishlist
Václav Šmilauer

Bug Description

With the advance of sweeping collisions, NewtonsDampedLaw takes considerable time (over 20%) of simulation. For very large number of bodies, it can be beneficial to run it in parallel.

A prequisite is to handle clumps members on-demand rather than in the main loop (where they should be just skipped), since if running in parallel, it cannot be guaranteed that the clump itself will be processed later even if its ID is higher.

Changed in yade:
assignee: nobody → Václav Šmilauer (eudoxos)
importance: Undecided → Wishlist
milestone: none → 0.20-0
Revision history for this message
Václav Šmilauer (eudoxos) wrote :

Clumps memebrs are handled on-demand (when handling the clump itself) now in NewtonsDampedLaw::handleClumpMember (r1853)

Revision history for this message
Václav Šmilauer (eudoxos) wrote :

Once per-thread maxima are implemented in VelocityBins, the loop in NewtonsDampedLaw can be parallelized as-is. The rest is hidden behind calls to VelocityBins::binVelSqInitialize, binVelSqUse and binVelSqFinalize.

Revision history for this message
Václav Šmilauer (eudoxos) wrote :

Implemented and tested in r1863. Scales quite well.

Changed in yade:
status: New → Fix Committed
Changed in yade:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.