[gmx-developers] Collect all coordinates/velocities/virial in one MPI rank in mdlib/constr.cpp::Impl::apply()

Lorién López Villellas lorien.lopez at bsc.es
Tue Jan 11 11:21:46 CET 2022

Hi all.

We are working on implementing a new parallel bond-constraint solver based
on SHAKE. We already have a working OpenMP version with promising results.
We now want to do a first MPI implementation of the solver. Due to some
algorithm-inherent constraints, we can not reuse LINCS MPI implementation,
in which you only send/receive the needed coordinates via
dd_move_x_constraints() in both constr.cpp and lincs.cpp. As a first
approach, we want to collect all the coordinates on the master rank,
execute the solver, and send the updated results to the other ranks.
However, every rank has mixed its local coordinates plus the communicated
ones. How can we distinguish between local and communicated coordinates in
x and xprime arrays? How can we know which atom corresponds to each entry
of the arrays? Is there any already-implemented method to perform the
send/receive all coordinates?

We also need to collect the velocities and the virial. As far as I can see,
there is no send/receive of this information before/in P-LINCS. How are the
velocities and the virial kept up to date in P-LINCS?

Thank you very much in advance.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://maillist.sys.kth.se/pipermail/gromacs.org_gmx-developers/attachments/20220111/3f5eb3b6/attachment.html>

More information about the gromacs.org_gmx-developers mailing list