Gromacs  2026.0-dev-20250217-60d5e5b
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes
#include <vector>
#include "gromacs/math/vectypes.h"
#include "gromacs/utility/gmxmpi.h"
#include "gromacs/utility/range.h"
+ Include dependency graph for haloexchange.h:
+ This graph shows which files directly or indirectly include this file:

Description

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.

Author
Berk Hess hess@.nosp@m.kth..nosp@m.se

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...