![]() |
ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
|
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 ®ions, 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). | |
Asynchronous, split-phase ghost-communication engine.
Definition in file HaloExchange.cpp.