Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
Arcane::BasicSerializerNewImpl Class Reference

Implementation of a contiguous in-memory serialization buffer. More...

Classes

struct  SizeInfo
 Information about the allocated size with and without padding. More...

Public Member Functions

Span< RealgetRealBuffer () override
Span< Int16getInt16Buffer () override
Span< Int32getInt32Buffer () override
Span< Int64getInt64Buffer () override
Span< BytegetByteBuffer () override
Span< Int8getInt8Buffer () override
Span< Float16getFloat16Buffer () override
Span< BFloat16getBFloat16Buffer () override
Span< Float32getFloat32Buffer () override
Span< Float128getFloat128Buffer () override
Span< Int128getInt128Buffer () override
void allocateBuffer (Int64 nb_real, Int64 nb_int16, Int64 nb_int32, Int64 nb_int64, Int64 nb_byte) override
void allocateBuffer (Int64 nb_real, Int64 nb_int16, Int64 nb_int32, Int64 nb_int64, Int64 nb_byte, Int64 nb_int8, Int64 nb_float16, Int64 nb_bfloat16, Int64 nb_float32, Int64 nb_float128, Int64 nb_int128) override
void copy (Impl *rhs) override
Span< ByteglobalBuffer () override
Span< const ByteglobalBuffer () const override
ConstArrayView< Int64sizesBuffer () const override
void preallocate (Int64 size) override
void releaseBuffer () override
void setFromSizes () override
ConstArrayView< BytecopyAndGetSizesBuffer () override
Int64 totalSize () const override
void printSizes (std::ostream &o) const override

Public Attributes

UniqueArray< Bytem_buffer
 Array containing the serialized data.
Span< Bytem_buffer_view
 View aligned to ALIGN_SIZE of m_buffer.
Span< Realm_real_view
 View on reals;.
Span< Int64m_int64_view
 View on 64-bit integers.
Span< Int32m_int32_view
 View on 32-bit integers.
Span< Int16m_int16_view
 View on 16-bit integers.
Span< Bytem_byte_view
 View on bytes.
Span< Int8m_int8_view
 View on Int8.
Span< Float16m_float16_view
 View on Float16.
Span< BFloat16m_bfloat16_view
 View on BFloat16.
Span< Float32m_float32_view
 View on Float32.
Span< Float128m_float128_view
 View on Float128.
Span< Int128m_int128_view
 View on Int128.
ArrayView< Int64m_sizes_view
 View for sizes (must be a multiple of ALIGN_SIZE);.
Int64 m_size_copy_buffer [NB_SIZE_ELEM]
 Copy of sizes used for multi-part sending.

Protected Member Functions

SizeInfo getPaddingSize (Int64 nb_elem, Int64 elem_size)
void _fillPadding (Int64 position, SizeInfo size_info)
 Fills the padding zones corresponding to the padding with a fixed value. This prevents having uninitialized values.
void _fillPadding (Span< Byte > buf)
void _checkAlignment ()
void _checkAddr (void *ptr)
void _printAlignment ()
void _printAddr (void *ptr, const String &name)
void _allocBuffer (Int64 size)

Detailed Description

Implementation of a contiguous in-memory serialization buffer.

This implementation allows data to be serialized into a contiguous memory area and thus sent in a single operation, for example via MPI. The buffer consists of a first part containing NB_SIZE_ELEM objects of type Integer. This part contains the number of elements serialized for each type (Real, Int64, Int32, Int16, Byte). The second part contains the actual serialized data.

When this class is used in the context of an MPI call, the array m_size_copy_buffer is used to send the sizes. during the first message when the complete message is sent in several parts. MPI standard indeed indicates that a buffer used during an MPI call must not be used until that call is finished.

Definition at line 48 of file BasicSerializer.cc.

Member Function Documentation

◆ _allocBuffer()

void Arcane::BasicSerializerNewImpl::_allocBuffer ( Int64 size)
inlineprotected

Definition at line 493 of file BasicSerializer.cc.

◆ _checkAddr()

void Arcane::BasicSerializerNewImpl::_checkAddr ( void * ptr)
inlineprotected

Definition at line 460 of file BasicSerializer.cc.

◆ _checkAlignment()

void Arcane::BasicSerializerNewImpl::_checkAlignment ( )
inlineprotected

Definition at line 445 of file BasicSerializer.cc.

◆ _fillPadding() [1/2]

void Arcane::BasicSerializerNewImpl::_fillPadding ( Int64 position,
SizeInfo size_info )
inlineprotected

Fills the padding zones corresponding to the padding with a fixed value. This prevents having uninitialized values.

_allocBuffer() must be called beforehand

Definition at line 429 of file BasicSerializer.cc.

References _fillPadding(), and m_buffer_view.

Referenced by _fillPadding().

◆ _fillPadding() [2/2]

void Arcane::BasicSerializerNewImpl::_fillPadding ( Span< Byte > buf)
inlineprotected

Definition at line 436 of file BasicSerializer.cc.

◆ _printAddr()

void Arcane::BasicSerializerNewImpl::_printAddr ( void * ptr,
const String & name )
inlineprotected

Definition at line 487 of file BasicSerializer.cc.

◆ _printAlignment()

void Arcane::BasicSerializerNewImpl::_printAlignment ( )
inlineprotected

Definition at line 469 of file BasicSerializer.cc.

◆ allocateBuffer() [1/2]

void Arcane::BasicSerializerNewImpl::allocateBuffer ( Int64 nb_real,
Int64 nb_int16,
Int64 nb_int32,
Int64 nb_int64,
Int64 nb_byte )
inlineoverride

Definition at line 149 of file BasicSerializer.cc.

◆ allocateBuffer() [2/2]

void Arcane::BasicSerializerNewImpl::allocateBuffer ( Int64 nb_real,
Int64 nb_int16,
Int64 nb_int32,
Int64 nb_int64,
Int64 nb_byte,
Int64 nb_int8,
Int64 nb_float16,
Int64 nb_bfloat16,
Int64 nb_float32,
Int64 nb_float128,
Int64 nb_int128 )
inlineoverride

Definition at line 162 of file BasicSerializer.cc.

◆ copy()

void Arcane::BasicSerializerNewImpl::copy ( Impl * rhs)
inlineoverride

Definition at line 275 of file BasicSerializer.cc.

◆ copyAndGetSizesBuffer()

ConstArrayView< Byte > Arcane::BasicSerializerNewImpl::copyAndGetSizesBuffer ( )
inlineoverride

Definition at line 368 of file BasicSerializer.cc.

◆ getBFloat16Buffer()

Span< BFloat16 > Arcane::BasicSerializerNewImpl::getBFloat16Buffer ( )
inlineoverride

Definition at line 144 of file BasicSerializer.cc.

◆ getByteBuffer()

Span< Byte > Arcane::BasicSerializerNewImpl::getByteBuffer ( )
inlineoverride

Definition at line 141 of file BasicSerializer.cc.

◆ getFloat128Buffer()

Span< Float128 > Arcane::BasicSerializerNewImpl::getFloat128Buffer ( )
inlineoverride

Definition at line 146 of file BasicSerializer.cc.

◆ getFloat16Buffer()

Span< Float16 > Arcane::BasicSerializerNewImpl::getFloat16Buffer ( )
inlineoverride

Definition at line 143 of file BasicSerializer.cc.

◆ getFloat32Buffer()

Span< Float32 > Arcane::BasicSerializerNewImpl::getFloat32Buffer ( )
inlineoverride

Definition at line 145 of file BasicSerializer.cc.

◆ getInt128Buffer()

Span< Int128 > Arcane::BasicSerializerNewImpl::getInt128Buffer ( )
inlineoverride

Definition at line 147 of file BasicSerializer.cc.

◆ getInt16Buffer()

Span< Int16 > Arcane::BasicSerializerNewImpl::getInt16Buffer ( )
inlineoverride

Definition at line 138 of file BasicSerializer.cc.

◆ getInt32Buffer()

Span< Int32 > Arcane::BasicSerializerNewImpl::getInt32Buffer ( )
inlineoverride

Definition at line 139 of file BasicSerializer.cc.

◆ getInt64Buffer()

Span< Int64 > Arcane::BasicSerializerNewImpl::getInt64Buffer ( )
inlineoverride

Definition at line 140 of file BasicSerializer.cc.

◆ getInt8Buffer()

Span< Int8 > Arcane::BasicSerializerNewImpl::getInt8Buffer ( )
inlineoverride

Definition at line 142 of file BasicSerializer.cc.

◆ getPaddingSize()

SizeInfo Arcane::BasicSerializerNewImpl::getPaddingSize ( Int64 nb_elem,
Int64 elem_size )
inlineprotected

Definition at line 406 of file BasicSerializer.cc.

◆ getRealBuffer()

Span< Real > Arcane::BasicSerializerNewImpl::getRealBuffer ( )
inlineoverride

Definition at line 137 of file BasicSerializer.cc.

◆ globalBuffer() [1/2]

Span< const Byte > Arcane::BasicSerializerNewImpl::globalBuffer ( ) const
inlineoverride

Definition at line 297 of file BasicSerializer.cc.

◆ globalBuffer() [2/2]

Span< Byte > Arcane::BasicSerializerNewImpl::globalBuffer ( )
inlineoverride

Definition at line 292 of file BasicSerializer.cc.

◆ preallocate()

void Arcane::BasicSerializerNewImpl::preallocate ( Int64 size)
inlineoverride

Definition at line 307 of file BasicSerializer.cc.

◆ printSizes()

void Arcane::BasicSerializerNewImpl::printSizes ( std::ostream & o) const
inlineoverride

Definition at line 383 of file BasicSerializer.cc.

◆ releaseBuffer()

void Arcane::BasicSerializerNewImpl::releaseBuffer ( )
inlineoverride

Definition at line 313 of file BasicSerializer.cc.

◆ setFromSizes()

void Arcane::BasicSerializerNewImpl::setFromSizes ( )
inlineoverride

Definition at line 318 of file BasicSerializer.cc.

◆ sizesBuffer()

ConstArrayView< Int64 > Arcane::BasicSerializerNewImpl::sizesBuffer ( ) const
inlineoverride

Definition at line 302 of file BasicSerializer.cc.

◆ totalSize()

Int64 Arcane::BasicSerializerNewImpl::totalSize ( ) const
inlineoverride

Definition at line 378 of file BasicSerializer.cc.

Member Data Documentation

◆ m_bfloat16_view

Span<BFloat16> Arcane::BasicSerializerNewImpl::m_bfloat16_view

View on BFloat16.

Definition at line 120 of file BasicSerializer.cc.

◆ m_buffer

UniqueArray<Byte> Arcane::BasicSerializerNewImpl::m_buffer

Array containing the serialized data.

Definition at line 108 of file BasicSerializer.cc.

◆ m_buffer_view

Span<Byte> Arcane::BasicSerializerNewImpl::m_buffer_view

View aligned to ALIGN_SIZE of m_buffer.

Definition at line 111 of file BasicSerializer.cc.

Referenced by _fillPadding().

◆ m_byte_view

Span<Byte> Arcane::BasicSerializerNewImpl::m_byte_view

View on bytes.

Definition at line 117 of file BasicSerializer.cc.

◆ m_float128_view

Span<Float128> Arcane::BasicSerializerNewImpl::m_float128_view

View on Float128.

Definition at line 122 of file BasicSerializer.cc.

◆ m_float16_view

Span<Float16> Arcane::BasicSerializerNewImpl::m_float16_view

View on Float16.

Definition at line 119 of file BasicSerializer.cc.

◆ m_float32_view

Span<Float32> Arcane::BasicSerializerNewImpl::m_float32_view

View on Float32.

Definition at line 121 of file BasicSerializer.cc.

◆ m_int128_view

Span<Int128> Arcane::BasicSerializerNewImpl::m_int128_view

View on Int128.

Definition at line 123 of file BasicSerializer.cc.

◆ m_int16_view

Span<Int16> Arcane::BasicSerializerNewImpl::m_int16_view

View on 16-bit integers.

Definition at line 116 of file BasicSerializer.cc.

◆ m_int32_view

Span<Int32> Arcane::BasicSerializerNewImpl::m_int32_view

View on 32-bit integers.

Definition at line 115 of file BasicSerializer.cc.

◆ m_int64_view

Span<Int64> Arcane::BasicSerializerNewImpl::m_int64_view

View on 64-bit integers.

Definition at line 114 of file BasicSerializer.cc.

◆ m_int8_view

Span<Int8> Arcane::BasicSerializerNewImpl::m_int8_view

View on Int8.

Definition at line 118 of file BasicSerializer.cc.

◆ m_real_view

Span<Real> Arcane::BasicSerializerNewImpl::m_real_view

View on reals;.

Definition at line 113 of file BasicSerializer.cc.

◆ m_size_copy_buffer

Int64 Arcane::BasicSerializerNewImpl::m_size_copy_buffer[NB_SIZE_ELEM]

Copy of sizes used for multi-part sending.

Only the first elements (currently 40) are used, but the size of this structure must be a multiple of ALIGN_SIZE.

Definition at line 133 of file BasicSerializer.cc.

◆ m_sizes_view

ArrayView<Int64> Arcane::BasicSerializerNewImpl::m_sizes_view

View for sizes (must be a multiple of ALIGN_SIZE);.

Definition at line 125 of file BasicSerializer.cc.


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