CommunicationManager Class Reference
HiCR
|
HiCR::backend::mpi::CommunicationManager Class Referencefinal
#include <communicationManager.hpp>
Inheritance diagram for HiCR::backend::mpi::CommunicationManager:

Public Member Functions | |
CommunicationManager (MPI_Comm comm=MPI_COMM_WORLD) | |
~CommunicationManager () override=default | |
const MPI_Comm | getComm () const |
const int | getSize () const |
const int | getRank () const |
![]() | |
virtual void | lock () |
virtual void | unlock () |
__INLINE__ void | exchangeGlobalMemorySlots (GlobalMemorySlot::tag_t tag, const std::vector< globalKeyMemorySlotPair_t > &memorySlots) |
__INLINE__ std::shared_ptr< GlobalMemorySlot > | getGlobalMemorySlot (GlobalMemorySlot::tag_t tag, GlobalMemorySlot::globalKey_t globalKey) |
virtual uint8_t * | serializeGlobalMemorySlot (const std::shared_ptr< HiCR::GlobalMemorySlot > &globalSlot) const |
virtual std::shared_ptr< GlobalMemorySlot > | deserializeGlobalMemorySlot (uint8_t *buffer, GlobalMemorySlot::tag_t tag) |
virtual std::shared_ptr< GlobalMemorySlot > | promoteLocalMemorySlot (const std::shared_ptr< LocalMemorySlot > &localMemorySlot, GlobalMemorySlot::tag_t tag) |
__INLINE__ void | deregisterGlobalMemorySlot (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
__INLINE__ void | destroyGlobalMemorySlot (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
virtual void | destroyPromotedGlobalMemorySlot (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
__INLINE__ void | queryMemorySlotUpdates (std::shared_ptr< LocalMemorySlot > memorySlot) |
__INLINE__ void | memcpy (const std::shared_ptr< LocalMemorySlot > &destination, size_t dst_offset, const std::shared_ptr< LocalMemorySlot > &source, size_t src_offset, size_t size) |
__INLINE__ void | memcpy (const std::shared_ptr< GlobalMemorySlot > &destination, size_t dst_offset, const std::shared_ptr< LocalMemorySlot > &source, size_t src_offset, size_t size) |
__INLINE__ void | memcpy (const std::shared_ptr< LocalMemorySlot > &destination, size_t dst_offset, const std::shared_ptr< GlobalMemorySlot > &source, size_t src_offset, size_t size) |
__INLINE__ void | fence (GlobalMemorySlot::tag_t tag) |
__INLINE__ void | fence (const std::shared_ptr< LocalMemorySlot > &slot, size_t expectedSent, size_t expectedRecvd) |
__INLINE__ void | fence (const std::shared_ptr< GlobalMemorySlot > &slot, size_t expectedSent, size_t expectedRecvd) |
__INLINE__ bool | acquireGlobalLock (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
__INLINE__ void | releaseGlobalLock (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
virtual __INLINE__ void | flushSent () |
virtual __INLINE__ void | flushReceived () |
Additional Inherited Members | |
![]() | |
using | globalKeyMemorySlotPair_t = std::pair< GlobalMemorySlot::globalKey_t, std::shared_ptr< LocalMemorySlot > > |
using | globalKeyToMemorySlotMap_t = std::map< GlobalMemorySlot::globalKey_t, std::shared_ptr< GlobalMemorySlot > > |
using | globalMemorySlotTagKeyMap_t = std::map< GlobalMemorySlot::tag_t, globalKeyToMemorySlotMap_t > |
![]() | |
__INLINE__ void | registerGlobalMemorySlot (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
virtual void | queryMemorySlotUpdatesImpl (std::shared_ptr< LocalMemorySlot > memorySlot)=0 |
virtual void | deregisterGlobalMemorySlotImpl (const std::shared_ptr< GlobalMemorySlot > &memorySlot) |
virtual void | destroyGlobalMemorySlotImpl (std::shared_ptr< GlobalMemorySlot > memorySlot)=0 |
virtual void | memcpyImpl (const std::shared_ptr< LocalMemorySlot > &destination, size_t dst_offset, const std::shared_ptr< LocalMemorySlot > &source, size_t src_offset, size_t size) |
virtual void | memcpyImpl (const std::shared_ptr< GlobalMemorySlot > &destination, size_t dst_offset, const std::shared_ptr< LocalMemorySlot > &source, size_t src_offset, size_t size) |
virtual void | memcpyImpl (const std::shared_ptr< LocalMemorySlot > &destination, size_t dst_offset, const std::shared_ptr< GlobalMemorySlot > &source, size_t src_offset, size_t size) |
virtual void | fenceImpl (const std::shared_ptr< LocalMemorySlot > &slot, size_t expectedSent, size_t expectedRcvd) |
virtual void | fenceImpl (const std::shared_ptr< GlobalMemorySlot > &slot, size_t expectedSent, size_t expectedRcvd) |
virtual bool | acquireGlobalLockImpl (std::shared_ptr< GlobalMemorySlot > memorySlot)=0 |
virtual void | releaseGlobalLockImpl (std::shared_ptr< GlobalMemorySlot > memorySlot)=0 |
__INLINE__ auto & | getGlobalMemorySlotsToDestroyPerTag () |
__INLINE__ auto & | getGlobalMemorySlotTagKeyMap () |
__INLINE__ void | increaseMessageRecvCounter (HiCR::LocalMemorySlot &memorySlot) noexcept |
__INLINE__ void | increaseMessageSentCounter (HiCR::LocalMemorySlot &memorySlot) noexcept |
__INLINE__ void | setMessagesRecv (HiCR::LocalMemorySlot &memorySlot, const size_t count) noexcept |
__INLINE__ void | setMessagesSent (HiCR::LocalMemorySlot &memorySlot, const size_t count) noexcept |
Detailed Description
Implementation of the HiCR MPI backend
This backend is very useful for testing other HiCR modules in isolation (unit tests) without involving the use of threading, which might incur side-effects
Constructor & Destructor Documentation
◆ CommunicationManager()
|
inline |
Constructor for the mpi backend.
- Parameters
-
[in] comm The MPI subcommunicator to use in the communication operations in this backend. If not specified, it will use MPI_COMM_WORLD
◆ ~CommunicationManager()
|
overridevirtualdefault |
Default destructor
Reimplemented from HiCR::CommunicationManager.
Member Function Documentation
◆ getComm()
|
inline |
MPI Communicator getter
- Returns
- The internal MPI communicator used during the instantiation of this class
◆ getRank()
|
inline |
MPI Communicator rank getter
- Returns
- The rank within the internal MPI communicator used during the instantiation of this class that corresponds to this instance
◆ getSize()
|
inline |
MPI Communicator size getter
- Returns
- The size of the internal MPI communicator used during the instantiation of this class
The documentation for this class was generated from the following file:
- /home/runner/work/HiCR/HiCR/include/hicr/backends/mpi/communicationManager.hpp
Generated by