Implémentation d'un buffer de sérialisation contigu en mémoire. Plus de détails...
Classes | |
struct | SizeInfo |
Informations sur la taille allouée avec et sans padding. Plus de détails... | |
Fonctions membres publiques | |
Span< Real > | getRealBuffer () override |
Span< Int16 > | getInt16Buffer () override |
Span< Int32 > | getInt32Buffer () override |
Span< Int64 > | getInt64Buffer () override |
Span< Byte > | getByteBuffer () override |
Span< Int8 > | getInt8Buffer () override |
Span< Float16 > | getFloat16Buffer () override |
Span< BFloat16 > | getBFloat16Buffer () override |
Span< Float32 > | getFloat32Buffer () 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) override |
void | copy (Impl *rhs) override |
Span< Byte > | globalBuffer () override |
Span< const Byte > | globalBuffer () const override |
Int64ConstArrayView | sizesBuffer () const override |
void | preallocate (Int64 size) override |
void | releaseBuffer () override |
void | setFromSizes () override |
ByteConstArrayView | copyAndGetSizesBuffer () override |
Int64 | totalSize () const override |
void | printSizes (std::ostream &o) const override |
Attributs publics | |
UniqueArray< Byte > | m_buffer |
Tableau contenant les données sérialisées. | |
Span< Byte > | m_buffer_view |
Vue alignée sur ALIGN_SIZE du m_buffer. | |
Span< Real > | m_real_view |
Vue sur les reels;. | |
Span< Int64 > | m_int64_view |
Vue sur les entiers 64 bits. | |
Span< Int32 > | m_int32_view |
Vue sur les entiers 32 bits. | |
Span< Int16 > | m_int16_view |
Vue sur les entiers 16 bits. | |
Span< Byte > | m_byte_view |
Vur les octets. | |
Span< Int8 > | m_int8_view |
Vur les Int8. | |
Span< Float16 > | m_float16_view |
Vur les Float16. | |
Span< BFloat16 > | m_bfloat16_view |
Vur les BFloat16. | |
Span< Float32 > | m_float32_view |
Vur les Float32. | |
Int64ArrayView | m_sizes_view |
Vue pour les tailles (doit être un multiple de ALIGN_SIZE);. | |
Int64 | m_size_copy_buffer [NB_SIZE_ELEM] |
Copie des tailles utilisée pour l'envoie en plusieurs fois. | |
Fonctions membres protégées | |
SizeInfo | getPaddingSize (Int64 nb_elem, Int64 elem_size) |
void | _fillPadding (Int64 position, SizeInfo size_info) |
Remplit avec une valeur fixe les zones correspondantes au padding. Cela permet d'éviter d'avoir des valeurs non initialisées. | |
void | _fillPadding (Span< Byte > buf) |
void | _checkAlignment () |
void | _checkAddr (void *ptr) |
void | _printAlignment () |
void | _printAddr (void *ptr, const String &name) |
void | _allocBuffer (Int64 size) |
Attributs privés statiques | |
static constexpr int | IDX_TAG = 0 |
Index du tag pour identifier qu'il s'agit d'une sérialisation. | |
static constexpr Int64 | SERIALIZE_TAG = 0x7a9b3cd0 |
Tag identifiant la sérialisation. | |
static constexpr int | IDX_VERSION = 1 |
Version de la sérialisation. | |
static constexpr int | IDX_RESERVED1 = 2 |
Champ réservé pour des informations supplémentaires (par exemple compression) | |
static constexpr int | IDX_TOTAL_SIZE = 3 |
Position du champs indiquant la taille totale de la sérialisation. | |
static constexpr int | IDX_NB_BYTE = 4 |
static constexpr int | IDX_NB_FLOAT16 = 5 |
static constexpr int | IDX_NB_FLOAT32 = 6 |
static constexpr int | IDX_NB_FLOAT64 = 7 |
static constexpr int | IDX_NB_FLOAT128 = 8 |
static constexpr int | IDX_NB_INT16 = 9 |
static constexpr int | IDX_NB_INT32 = 10 |
static constexpr int | IDX_NB_INT64 = 11 |
static constexpr int | IDX_NB_INT128 = 12 |
static constexpr int | IDX_NB_INT8 = 13 |
static constexpr int | IDX_NB_BFLOAT16 = 14 |
static constexpr int | IDX_POS_BYTE = 32 |
static constexpr int | IDX_POS_FLOAT16 = 33 |
static constexpr int | IDX_POS_FLOAT32 = 34 |
static constexpr int | IDX_POS_FLOAT64 = 35 |
static constexpr int | IDX_POS_FLOAT128 = 36 |
static constexpr int | IDX_POS_INT16 = 37 |
static constexpr int | IDX_POS_INT32 = 38 |
static constexpr int | IDX_POS_INT64 = 39 |
static constexpr int | IDX_POS_INT128 = 40 |
static constexpr int | IDX_POS_INT8 = 41 |
static constexpr int | IDX_POS_BFLOAT16 = 42 |
static constexpr Integer | NB_SIZE_ELEM = 128 |
static constexpr Integer | ALIGN_SIZE = BasicSerializer::paddingSize() |
Implémentation d'un buffer de sérialisation contigu en mémoire.
Cette implémentation permet de sérialiser les données dans une zone contigue en mémoire et ainsi de l'envoyer en une seule fois via MPI par exemple. Le buffer est composé d'un première partie contenant NB_SIZE_ELEM objets de type Integer. Cette partie contient le nombre d'élément sérialisé de chaque type (Real, Int64, Int32, Int16, Byte). La deuxième partie contient les données sérialisées proprement dites.
Lorsque cette classe est utilisée dans le cadre d'un appel MPI, on utilise le tableau m_size_copy_buffer pour envoyer les tailles. lors du premier message lorsque le message complet est envoyé en plusieurs fois. La norme MPI indique effectivement qu'un buffer utilisé lors d'un appel MPI ne doit plus être utilisé tant que cet appel n'est pas terminé.
Définition à la ligne 47 du fichier BasicSerializer.cc.
|
inlineprotected |
Définition à la ligne 453 du fichier BasicSerializer.cc.
|
inlineprotected |
Définition à la ligne 422 du fichier BasicSerializer.cc.
|
inlineprotected |
Définition à la ligne 409 du fichier BasicSerializer.cc.
|
inlineprotected |
Remplit avec une valeur fixe les zones correspondantes au padding. Cela permet d'éviter d'avoir des valeurs non initialisées.
Il faut avoir appeler _allocBuffer() avant
Définition à la ligne 393 du fichier BasicSerializer.cc.
Références _fillPadding(), m_buffer_view, et Arccore::Span< T, Extent, MinValue >::subspan().
Référencé par _fillPadding().
Définition à la ligne 400 du fichier BasicSerializer.cc.
|
inlineprotected |
Définition à la ligne 447 du fichier BasicSerializer.cc.
|
inlineprotected |
Définition à la ligne 431 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 142 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 152 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 249 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 334 du fichier BasicSerializer.cc.
Définition à la ligne 139 du fichier BasicSerializer.cc.
Définition à la ligne 136 du fichier BasicSerializer.cc.
Définition à la ligne 138 du fichier BasicSerializer.cc.
Définition à la ligne 140 du fichier BasicSerializer.cc.
Définition à la ligne 133 du fichier BasicSerializer.cc.
Définition à la ligne 134 du fichier BasicSerializer.cc.
Définition à la ligne 135 du fichier BasicSerializer.cc.
Définition à la ligne 137 du fichier BasicSerializer.cc.
|
inlineprotected |
Définition à la ligne 370 du fichier BasicSerializer.cc.
Définition à la ligne 132 du fichier BasicSerializer.cc.
Définition à la ligne 269 du fichier BasicSerializer.cc.
Définition à la ligne 264 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 279 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 349 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 285 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 290 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 274 du fichier BasicSerializer.cc.
|
inlineoverride |
Définition à la ligne 344 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 91 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 72 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 62 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 66 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 63 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 64 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 65 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 70 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 67 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 68 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 69 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 71 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 85 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 75 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 79 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 76 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 77 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 78 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 83 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 80 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 81 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 82 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 84 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Champ réservé pour des informations supplémentaires (par exemple compression)
Définition à la ligne 57 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Index du tag pour identifier qu'il s'agit d'une sérialisation.
Définition à la ligne 51 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Position du champs indiquant la taille totale de la sérialisation.
Définition à la ligne 60 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Version de la sérialisation.
Définition à la ligne 55 du fichier BasicSerializer.cc.
Vur les BFloat16.
Définition à la ligne 118 du fichier BasicSerializer.cc.
UniqueArray<Byte> Arccore::BasicSerializerNewImpl::m_buffer |
Tableau contenant les données sérialisées.
Définition à la ligne 106 du fichier BasicSerializer.cc.
Vue alignée sur ALIGN_SIZE du m_buffer.
Définition à la ligne 109 du fichier BasicSerializer.cc.
Référencé par _fillPadding().
Vur les octets.
Définition à la ligne 115 du fichier BasicSerializer.cc.
Vur les Float16.
Définition à la ligne 117 du fichier BasicSerializer.cc.
Vur les Float32.
Définition à la ligne 119 du fichier BasicSerializer.cc.
Vue sur les entiers 16 bits.
Définition à la ligne 114 du fichier BasicSerializer.cc.
Vue sur les entiers 32 bits.
Définition à la ligne 113 du fichier BasicSerializer.cc.
Vue sur les entiers 64 bits.
Définition à la ligne 112 du fichier BasicSerializer.cc.
Vur les Int8.
Définition à la ligne 116 du fichier BasicSerializer.cc.
Vue sur les reels;.
Définition à la ligne 111 du fichier BasicSerializer.cc.
Int64 Arccore::BasicSerializerNewImpl::m_size_copy_buffer[NB_SIZE_ELEM] |
Copie des tailles utilisée pour l'envoie en plusieurs fois.
Seuls les premiers éléments (actuellement 40) sont utilisés mais la taille de cette structure doit être un multiple de ALIGN_SIZE.
Définition à la ligne 129 du fichier BasicSerializer.cc.
Int64ArrayView Arccore::BasicSerializerNewImpl::m_sizes_view |
Vue pour les tailles (doit être un multiple de ALIGN_SIZE);.
Définition à la ligne 121 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Définition à la ligne 87 du fichier BasicSerializer.cc.
|
staticconstexprprivate |
Tag identifiant la sérialisation.
Définition à la ligne 53 du fichier BasicSerializer.cc.