ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
HaloExchange.cpp File Reference

Asynchronous, split-phase ghost-communication engine. More...

#include "ghosts/HaloExchange.hpp"
#include "caliper_utils.hpp"
#include "BoxGeometry.hpp"
#include "ghosts.hpp"
#include "ghosts/HaloPlan.hpp"
#include "ghosts/HaloPlanValidator.hpp"
#include "ghosts/particle_packing.hpp"
#include <boost/mpi/collectives.hpp>
#include <boost/mpi/nonblocking.hpp>
#include <algorithm>
#include <array>
#include <cassert>
#include <cstddef>
#include <functional>
#include <memory>
#include <span>
#include <vector>
+ Include dependency graph for HaloExchange.cpp:

Go to the source code of this file.

Namespaces

namespace  GhostComm
 
namespace  GhostComm::anonymous_namespace{HaloExchange.cpp}
 

Enumerations

enum  GhostComm::anonymous_namespace{HaloExchange.cpp}::GhostTag : int {
  GhostComm::anonymous_namespace{HaloExchange.cpp}::TAG_POSITION = 100 , GhostComm::anonymous_namespace{HaloExchange.cpp}::TAG_FORCE = 101 , GhostComm::anonymous_namespace{HaloExchange.cpp}::TAG_PARTNUM = 102 , GhostComm::anonymous_namespace{HaloExchange.cpp}::TAG_DEFAULT = 103 ,
  GhostComm::anonymous_namespace{HaloExchange.cpp}::TAG_BONDS = 104
}
 MPI tags for ghost communications. More...
 

Functions

int GhostComm::anonymous_namespace{HaloExchange.cpp}::main_tag (unsigned data_parts)
 
std::span< ParticleList *const > GhostComm::anonymous_namespace{HaloExchange.cpp}::as_span (std::vector< ParticleList * > const &v)
 View a list of cell pointers as a span for the packing routines.
 
std::vector< ParticleList * > GhostComm::anonymous_namespace{HaloExchange.cpp}::region_cells (std::vector< SendRegion > const &send)
 Extract the plain cell pointers from a list of send regions.
 
void GhostComm::anonymous_namespace{HaloExchange.cpp}::pack_regions (CommBuf &buf, std::vector< SendRegion > const &regions, BoxGeometry const &box, unsigned data_parts)
 Pack all send regions of one NeighborComm into a single buffer.
 
void GhostComm::anonymous_namespace{HaloExchange.cpp}::run_collective (HaloPlan const &plan, BoxGeometry const &box, unsigned data_parts, ExchangeOp op)
 Collective (broadcast/reduce-sum) section.
 
GhostExchange GhostComm::halo_exchange_start (HaloPlan const &plan, BoxGeometry const &box, unsigned data_parts, ExchangeOp op, ExchangeBuffers &bufs)
 Begin a halo exchange using a caller-owned buffer pool.
 
GhostExchange GhostComm::halo_exchange_start (HaloPlan const &plan, BoxGeometry const &box, unsigned data_parts, ExchangeOp op)
 Convenience overload that allocates a temporary ExchangeBuffers.
 
void GhostComm::halo_exchange_finish (GhostExchange &state)
 Complete a halo exchange: run same-rank copies (overlapping the in-flight messages), wait for all requests, then unpack or reduce.
 
void GhostComm::halo_exchange (HaloPlan const &plan, BoxGeometry const &box, unsigned data_parts, ExchangeOp op, ExchangeBuffers &bufs)
 Blocking wrapper using a caller-owned buffer pool (no per-call alloc after warm-up).
 
void GhostComm::halo_exchange (HaloPlan const &plan, BoxGeometry const &box, unsigned data_parts, ExchangeOp op)
 Blocking convenience wrapper: start + finish (allocates a temporary ExchangeBuffers; use the pool overload on hot paths).
 

Detailed Description

Asynchronous, split-phase ghost-communication engine.

Definition in file HaloExchange.cpp.