Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::MpiVariableSynchronizeDispatcher Class Reference

Optimized implementation for MPI synchronization. More...

Inheritance diagram for Arcane::MpiVariableSynchronizeDispatcher:
Collaboration diagram for Arcane::MpiVariableSynchronizeDispatcher:

Classes

class  Factory

Public Member Functions

 MpiVariableSynchronizeDispatcher (Factory *f)
Public Member Functions inherited from Arcane::AbstractDataSynchronizeImplementation
void setDataSynchronizeInfo (DataSynchronizeInfo *sync_info) final

Protected Member Functions

void compute () override
void beginSynchronize (IDataSynchronizeBuffer *ds_buf) override
void endSynchronize (IDataSynchronizeBuffer *ds_buf) override
Protected Member Functions inherited from Arcane::AbstractDataSynchronizeImplementation
DataSynchronizeInfo_syncInfo () const

Private Attributes

MpiParallelMngm_mpi_parallel_mng
UniqueArray< Parallel::Requestm_original_recv_requests
UniqueArray< bool > m_original_recv_requests_done
Ref< Parallel::IRequestListm_receive_request_list
Ref< Parallel::IRequestListm_send_request_list

Detailed Description

Optimized implementation for MPI synchronization.

Compared to the base version, this implementation uses MPI_Waitsome (instead of Waitall) and copies into the destination buffer as soon as a message arrives.

NOTE: this optimization respects the MPI standard which states that you must not touch the memory area of a message until it is complete.

Definition at line 64 of file MpiVariableSynchronizeDispatcher.cc.

Constructor & Destructor Documentation

◆ MpiVariableSynchronizeDispatcher()

Arcane::MpiVariableSynchronizeDispatcher::MpiVariableSynchronizeDispatcher ( Factory * f)
explicit

Definition at line 123 of file MpiVariableSynchronizeDispatcher.cc.

Member Function Documentation

◆ beginSynchronize()

void Arcane::MpiVariableSynchronizeDispatcher::beginSynchronize ( IDataSynchronizeBuffer * ds_buf)
overrideprotectedvirtual

◆ compute()

void Arcane::MpiVariableSynchronizeDispatcher::compute ( )
inlineoverrideprotectedvirtual

◆ endSynchronize()

void Arcane::MpiVariableSynchronizeDispatcher::endSynchronize ( IDataSynchronizeBuffer * ds_buf)
overrideprotectedvirtual

Member Data Documentation

◆ m_mpi_parallel_mng

MpiParallelMng* Arcane::MpiVariableSynchronizeDispatcher::m_mpi_parallel_mng
private

Definition at line 80 of file MpiVariableSynchronizeDispatcher.cc.

◆ m_original_recv_requests

UniqueArray<Parallel::Request> Arcane::MpiVariableSynchronizeDispatcher::m_original_recv_requests
private

Definition at line 81 of file MpiVariableSynchronizeDispatcher.cc.

◆ m_original_recv_requests_done

UniqueArray<bool> Arcane::MpiVariableSynchronizeDispatcher::m_original_recv_requests_done
private

Definition at line 82 of file MpiVariableSynchronizeDispatcher.cc.

◆ m_receive_request_list

Ref<Parallel::IRequestList> Arcane::MpiVariableSynchronizeDispatcher::m_receive_request_list
private

Definition at line 83 of file MpiVariableSynchronizeDispatcher.cc.

◆ m_send_request_list

Ref<Parallel::IRequestList> Arcane::MpiVariableSynchronizeDispatcher::m_send_request_list
private

Definition at line 84 of file MpiVariableSynchronizeDispatcher.cc.


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