Gromacs  2026.0-dev-20251119-5f0a571d
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions | Public Attributes
gmx::GpuHaloExchangeNvshmemHelper Class Reference

#include <gromacs/domdec/gpuhaloexchange.h>

Description

Handles NVSHMEM aspects of GPU Halo exchange.

GPU halo exchange requires extra signal buffers with NVSHMEM, as well as the ability to coordinate with a possible PME-only rank to arrange for global communication and symmetric allocations.

Public Member Functions

 GpuHaloExchangeNvshmemHelper (const gmx_domdec_t &dd, const DeviceContext &context, const DeviceStream &stream, const std::optional< int > &peerRank, gmx_wallcycle *wcycle, MPI_Comm mpi_comm_mygroup, MPI_Comm mpi_comm_mysim_world)
 
void reinit ()
 Re-initialize after domain repartitioning.
 
DeviceBuffer< uint64_t > getSyncBuffer () const
 Return the sync buffer.
 
int totalPulsesAndDims () const
 Return the total number of DD pulses and dimensions.
 
void freeHaloExchangeBuffers ()
 Permit symmetric deallocation.
 
void reinitAllHaloExchanges (const t_commrec &cr, DeviceBuffer< RVec > d_coordinatesBuffer, DeviceBuffer< RVec > d_forcesBuffer)
 
GpuEventSynchronizer * launchAllCoordinateExchanges (const matrix box, GpuEventSynchronizer *dependencyEvent)
 
GpuEventSynchronizer * launchAllForceExchanges (bool accumulateForces, FixedCapacityVector< GpuEventSynchronizer *, 2 > *dependencyEvents)
 
void destroyAllHaloExchangeBuffers ()
 
GpuEventSynchronizer * getForcesReadyOnDeviceEvent ()
 

Public Attributes

std::unique_ptr< int > fusedPpHaloExchange_
 Placeholder when NVSHMEM is disabled.
 

The documentation for this class was generated from the following files: