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

IDataSynchronizeBuffer implementation for multiple data items. More...

#include <arcane/impl/internal/DataSynchronizeBuffer.h>

Inheritance diagram for Arcane::MultiDataSynchronizeBuffer:
Collaboration diagram for Arcane::MultiDataSynchronizeBuffer:

Public Member Functions

 MultiDataSynchronizeBuffer (ITraceMng *tm, DataSynchronizeInfo *sync_info, Ref< IBufferCopier > copier)
void copyReceiveAsync (Int32 rank_index) final
 Copies into the data from the receive buffer of the index-th rank.
void copySendAsync (Int32 rank_index) final
 Copies the data of the index-th rank into the send buffer.
void setNbData (Int32 nb_data)
void setDataView (Int32 index, MutableMemoryView v)
void prepareSynchronize (bool is_compare_sync) override
Public Member Functions inherited from Arcane::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Constructs an accessor via the trace manager m.
 TraceAccessor (const TraceAccessor &rhs)
 Copy constructor.
TraceAccessoroperator= (const TraceAccessor &rhs)
 Copy assignment operator.
virtual ~TraceAccessor ()
 Frees resources.
ITraceMngtraceMng () const
 Trace manager.
TraceMessage info () const
 Flow for an information message.
TraceMessage pinfo () const
 Flow for a parallel information message.
TraceMessage info (char category) const
 Flow for an information message of a given category.
TraceMessage pinfo (char category) const
 Flow for a parallel information message of a given category.
TraceMessage info (bool v) const
 Flow for an information message.
TraceMessage warning () const
 Flow for a warning message.
TraceMessage pwarning () const
TraceMessage error () const
 Flow for an error message.
TraceMessage perror () const
TraceMessage log () const
 Flow for a log message.
TraceMessage plog () const
 Flow for a log message.
TraceMessage logdate () const
 Flow for a log message preceded by the date.
TraceMessage fatal () const
 Flow for a fatal error message.
TraceMessage pfatal () const
 Flow for a parallel fatal error message.
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flow for a debug message.
Trace::eDebugLevel configDbgLevel () const
 Debug level of the configuration file.
TraceMessage info (Int32 verbose_level) const
 Flow for an information message of a given level.
TraceMessage linfo () const
 Flow for an information message with the local information level of this instance.
TraceMessage linfo (Int32 relative_level) const
 Flow for an information message with the local information level of this instance.
void fatalMessage (const StandaloneTraceMessage &o) const
Public Member Functions inherited from Arcane::DataSynchronizeBufferBase
Int32 nbRank () const final
 Number of ranks.
Int32 targetRank (Int32 index) const final
 Target rank of the index-th rank.
bool hasGlobalBuffer () const final
 Indicates if the buffers are global.
MutableMemoryView receiveBuffer (Int32 index) final
 Receive buffer for the index-th rank.
MutableMemoryView sendBuffer (Int32 index) final
 Send buffer for the index-th rank.
Int64 receiveDisplacement (Int32 index) const final
 Displacement (in bytes) from the start of receiveBuffer() for the index-th rank.
Int64 sendDisplacement (Int32 index) const final
 Displacement (in bytes) from the start of sendBuffer() for the index-th rank.
MutableMemoryView globalReceiveBuffer () final
 Receive buffer.
MutableMemoryView globalSendBuffer () final
 Send buffer.
Int64 totalReceiveSize () const final
 Total size to receive in bytes.
Int64 totalSendSize () const final
 Total size to send in bytes.
void barrier () final
 Waits until the copies (copySendAsync() and copyReceiveAsync()) are finished.
 DataSynchronizeBufferBase (DataSynchronizeInfo *sync_info, Ref< IBufferCopier > copier)
bool isCompareSynchronizedValues () const
 Indicates whether values are compared before/after synchronization.
void setSynchronizeBuffer (Ref< MemoryBuffer > v)
Public Member Functions inherited from Arcane::IDataSynchronizeBuffer
virtual void copyAllReceive ()
 Copies all data from the receive buffer.
virtual void copyAllSend ()
 Copies all data into the send buffer.

Private Attributes

SmallArray< MutableMemoryViewm_data_views
 View onto the data variables.
SmallArray< Int32m_datatype_sizes
 Array containing the sizes of the data types.

Additional Inherited Members

Protected Member Functions inherited from Arcane::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
Int32 _localVerboseLevel () const
Protected Member Functions inherited from Arcane::DataSynchronizeBufferBase
void _allocateBuffers ()
 Calculates and allocates the buffers necessary for sends and receives for 1D variable synchronizations.
void _compute (ConstArrayView< Int32 > datatype_sizes)
 Computes the information for the synchronization.
Protected Attributes inherited from Arcane::DataSynchronizeBufferBase
DataSynchronizeInfom_sync_info = nullptr
BufferInfo m_ghost_buffer_info
 Buffer for all data of ghost entities used for reception.
BufferInfo m_share_buffer_info
 Buffer for all data of shared entities used for sending.
BufferInfo m_compare_sync_buffer_info
 Buffer for testing if synchronization modified the values of ghost cells.
Int32 m_nb_rank = 0
bool m_is_compare_sync_values = false
Ref< MemoryBufferm_memory
 Buffer containing the concatenated data for sending and receiving.
Ref< IBufferCopierm_buffer_copier

Detailed Description

IDataSynchronizeBuffer implementation for multiple data items.

Definition at line 238 of file DataSynchronizeBuffer.h.

Constructor & Destructor Documentation

◆ MultiDataSynchronizeBuffer()

Arcane::MultiDataSynchronizeBuffer::MultiDataSynchronizeBuffer ( ITraceMng * tm,
DataSynchronizeInfo * sync_info,
Ref< IBufferCopier > copier )
inline

Definition at line 245 of file DataSynchronizeBuffer.h.

Member Function Documentation

◆ copyReceiveAsync()

void Arcane::MultiDataSynchronizeBuffer::copyReceiveAsync ( Int32 index)
finalvirtual

Copies into the data from the receive buffer of the index-th rank.

Implements Arcane::IDataSynchronizeBuffer.

Definition at line 398 of file DataSynchronizeBuffer.cc.

References Arcane::ConstMemoryView::bytes(), Arcane::ConstMemoryView::data(), Arcane::SpanImpl< T, SizeType, Extent >::empty(), m_data_views, and Arcane::DataSynchronizeBufferBase::m_ghost_buffer_info.

Here is the call graph for this function:

◆ copySendAsync()

void Arcane::MultiDataSynchronizeBuffer::copySendAsync ( Int32 index)
finalvirtual

Copies the data of the index-th rank into the send buffer.

This call is equivalent to:

for (Int32 i = 0; i < nb_rank; ++i)
void barrier() final
Waits until the copies (copySendAsync() and copyReceiveAsync()) are finished.
void copyReceiveAsync(Int32 rank_index) final
Copies into the data from the receive buffer of the index-th rank.
std::int32_t Int32
Signed integer type of 32 bits.

Implements Arcane::IDataSynchronizeBuffer.

Definition at line 418 of file DataSynchronizeBuffer.cc.

References Arcane::MutableMemoryView::bytes(), Arcane::MutableMemoryView::data(), Arcane::SpanImpl< T, SizeType, Extent >::empty(), m_data_views, Arcane::DataSynchronizeBufferBase::m_ghost_buffer_info, and Arcane::DataSynchronizeBufferBase::m_share_buffer_info.

Here is the call graph for this function:

◆ prepareSynchronize()

void Arcane::MultiDataSynchronizeBuffer::prepareSynchronize ( bool is_compare_sync)
overridevirtual

Comparisons are not supported if multiple synchronizations are used.

Implements Arcane::DataSynchronizeBufferBase.

Definition at line 389 of file DataSynchronizeBuffer.cc.

References Arcane::DataSynchronizeBufferBase::_compute(), and m_datatype_sizes.

Here is the call graph for this function:

◆ setDataView()

void Arcane::MultiDataSynchronizeBuffer::setDataView ( Int32 index,
MutableMemoryView v )
inline

Definition at line 263 of file DataSynchronizeBuffer.h.

◆ setNbData()

void Arcane::MultiDataSynchronizeBuffer::setNbData ( Int32 nb_data)
inline

Definition at line 258 of file DataSynchronizeBuffer.h.

Member Data Documentation

◆ m_data_views

SmallArray<MutableMemoryView> Arcane::MultiDataSynchronizeBuffer::m_data_views
private

View onto the data variables.

Definition at line 274 of file DataSynchronizeBuffer.h.

Referenced by copyReceiveAsync(), and copySendAsync().

◆ m_datatype_sizes

SmallArray<Int32> Arcane::MultiDataSynchronizeBuffer::m_datatype_sizes
private

Array containing the sizes of the data types.

Definition at line 276 of file DataSynchronizeBuffer.h.

Referenced by prepareSynchronize().


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