yade-mpi team mailing list archive
-
yade-mpi team
-
Mailing list archive
-
Message #00015
Re: Yade-MPI sending/receiving serialized bodies
-
To:
Deepak Kn <deepak.kn1990@xxxxxxxxx>
-
From:
Janek Kozicki <janek_listy@xxxxx>
-
Date:
Sun, 28 Apr 2019 21:05:45 +0200
-
Cc:
yade-mpi@xxxxxxxxxxxxxxxxxxx
-
Face:
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEUBAQEtLS1KSkpRUVFXV1dYWFhjY2Nzc3N3d3eHh4eKioqdnZ24uLjLy8vc3NxVIagyAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2AIVEzgS1fgQtQAAAjRJREFUOMtt1DFv00AUAOAzFQNbjigSyoQaRaBMhKgLUyKXpVNNeUpk9vyDqFJhQ1kiBuaqAwJCqvPtSLY7RlTn5+5IdnYkkt/AOyfxXVLe5vf53Z1875kd34tOEax8djmj6GyjhB5bxz50GdsVZr9fqRjZwAtKOJw5Wqs2MMZ16ALHsaDncF7xAHix1oEFHAB8f+pRjcO4gfZDykcYzbiucRolOLUJ6kjA0xtVt+A6TySlM0RajIpK6DzwKZ/nOYbF/gclHMo1ZOHYY/+Ha+AWuM+3oMS4eeqYzZ8FiCltgUqI8cd2wwAVpJk+8LWYjBtnJdQpHQqJMd4Oxt4bU9ESiFGc5hkqaH74asAX4iabP5I5gZ+qjgGlJCqZa3h3lxhoeVcSE1qLQC4sqKOK9MGW9E3izFqqHokoztLFEgXg31sbZEKnWi2T74A4NxfVQqlkjKtcAWD+zcArFEES01dR0E/nnV0IgugmDd/2L84sOAouRBBHEc7gtc8teDkRlE0iNQPo2w3Xhh/D4TCIQ4LRLoTvgwjj6RRgavdurxYGMaIuGOyAW/PpNlCcU9/93AHenAWYjPoAwa+G3e3to/MgFNTAEKvKDjzuCzHTnY3qqdXtx24VijzQfZ0yewZ5cwRFQaa+mIYr1uI0I76+3W4xhlvoVRwOA0Fdl64HlJnxP6T8YpX/Lga4Wv4A3ErrU5oTfN7Mu/llXMl8RXEPji/lQkN3H7qXqgC2By47EXeU/7PJ/wPxRKMnuZwIeAAAAABJRU5ErkJggg==
-
In-reply-to:
<CAM1kzpT63h2sE1dvSwgE6Q7T2bZe_H0f8pSBQ1RpYA1DLe8D2g@mail.gmail.com>
You could add a new flag ``mpiRequired`` to attribute flags [1] and
by default assume that the attribute does not need to be send by mpi.
Or maybe this flag is simply ``noSave`` and ``readonly`` and
``hidden`` flags together? This can be possible. Why send over mpi
something that does not need to be saved? Why send something
readonly? Why send something hidden from GUI inspect?
[1] https://gitlab.com/yade-dev/trunk/blob/master/lib/serialization/Serializable.hpp#L31
Janek
Deepak Kn said: (by the date of Sun, 28 Apr 2019 19:57:54 +0200)
> Hello All,
>
> I have finished implementing the functions to serialize and deserialize the
> bodies and the necessary communications to exchange the serialized bodies.
> The serialized messages (binary) are several times larger than the usual
> (state) messages in mpy/mpf.py (vel,pos, ori, id, bounds) etc. And as a
> result the simulations are far slower ! Here's how it scales : for
> exchanging 220 bodies, the serialized messages were around 215456 elements
> (chars), and in the previous versions, the message sizes were 4180
> (doubles). (testMPI2D no merge, on 3 procs, 20000 bodies.)
>
> Most of the functions are implemented in Subdomain.cpp Subdomain.hpp and
> MPIBodyContainer.hpp, (branch : mpi_dpk on gitlab) I followed the same
> logic of the previous version (mpy/mpf), non blocking sends and blocking
> recvs (with probes) are used for the communications between the workers,
> and blocking communication for sending the forces to the master (the same
> as in mpy/mpf).
>
> I think this can be improved, we can serialize the states,bounds and send
> these instead of the bodies? what do you think? (all the functions do
> serialize, deserialize and communicate are ready. We just need a container
> to hold only the required info.)
Follow ups
References