Question #643760 on Yade changed:
https://answers.launchpad.net/yade/+question/643760
Status: Open => Answered
Robert Caulk proposed the following answer:
Hello,
I suppose you could look through the source code to see how it is
implemented [1]. Also, the interesting history of Yade and some comments
on how it is parallelized can be found here [2]:
"Parallelization and performance have been subjects of continuous brainstorming
over the
years (Šmilauer 2007, Jakob 2012, Thoeni 2013, Eulitz 2014, Chareyre 2014,
Smilauer 2014)
even though flexibility has been the primary objective of the design. Šmilauer
accomplished
the shared memory parallelization of important loops (mainly contacts update
and newton
integration) using OpenMP. After parallelization of the last non-parallel
section (collision
detection22) by the author, the code was fully OpenMP parallelized. The shared
memory
approach was, of all possible strategies, the easiest to implement. It can
improve the
performances by factors up to 7 or 8 for typical large problems on multicore
systems (Eulitz
2014). It does not benefit further from large clusters though. This is probably
where Yade
under-performs some of the other DEM codes23. One cure is known: domain
decomposition
for taking advantage of distributed memory systems (MPI), possibly nesting
OpenMP
parallelism. Clearly, the lack of manpower is the reason why it did not happen
yet. Besides,
experiments on many-core computers are still to be performed (Intel's Xeon-Phi
coprocessors)
; again the man-hours involved in the compilation and the tuning/benchmarking
steps is the limiting factor."
Cheers,
Robert
[1]https://github.com/yade/trunk
[2]http://people.3sr-grenoble.fr/users/bchareyre/pubs/Chareyre2015.pdf
--
You received this question notification because your team yade-users is
an answer contact for Yade.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp