← Back to team overview

yade-mpi team mailing list archive

Yade-MPI sending/receiving serialized bodies

 

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