parallel coding

Asked by Ataollah Nateghi

Hello
How can I learn about parallel computing in Yade?
Thanks so much in advance
Ataollah Nateghi

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Robert Caulk
Solved:
Last query:
Last reply:
Revision history for this message
Best Robert Caulk (rcaulk) said :
#1

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

Revision history for this message
Ataollah Nateghi (anateghi) said :
#2

Thanks so much for your complete answer.

Revision history for this message
Jérôme Duriez (jduriez) said :
#3

Hi,

You may in particular search for "OpenMP" in the github trunk repository (which would take you e.g. to [1], just a random example about YADE structures for parallel computing), and/or the same keyword and "parallel" in the yade-dev mailing list archive [2].
There is also some stuff in the doc itself [3]

[1] https://github.com/yade/trunk/blob/master/lib/base/openmp-accu.hpp
[2] http://<email address hidden>/
[3] https://yade-dem.org/doc/prog.html#parallel-execution