Gromacs
2026.0-dev-20250217-60d5e5b
|
#include <vector>
#include "gromacs/math/vectypes.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/range.h"
Declares the HaloExchange class for halo communication of coordinates and forces.
The algorithm this class implements uses direct communication between the home domain and all domains in the, up to 7, zones. This contrasts with the original eighth shell domain decomposition which only communicated with neighbor domains along the three dimensions and aggregrated data over multiple pulses to communicate with more distant domains. This is also referred to as staged communication. The setup here can be referred to as "direct" instead, not to be confused with "GPU direct" communication.
The HaloExchange class contains a list of DomainPairComm objects, one for every domain in the halo. The communication setup and calls for each domain pair are completely independent from the other pairs. This make the class setup simple and also allows for overlap of all communication for the different domains. The only coupling between DomainPairComm objects is that they together should provide the atoms necessary to compute all required non-bonded and bonded interactions in the system.
Classes | |
class | gmx::ArrayRef< typename > |
STL-like interface to a C array of T (or part of a std container of T). More... | |
struct | gmx::HaloMpiRequests |
Storage for MPI request for halo MPI receive and send operations. More... | |
class | gmx::HaloExchange |
Handles the halo communication of coordinates and forces. More... | |