|
| 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 () |
|
|
virtual __INLINE__ void | fenceImpl (HiCR::GlobalMemorySlot::tag_t tag) override |
|
virtual __INLINE__ void | exchangeGlobalMemorySlotsImpl (HiCR::GlobalMemorySlot::tag_t tag, const std::vector< globalKeyMemorySlotPair_t > &memorySlots) override |
|
__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 |
|
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