yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #15134
Re: [Question #643760]: parallel coding
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.