13#ifndef ARCANE_IMPL_DATASYNCHRONIZEBUFFER_H
14#define ARCANE_IMPL_DATASYNCHRONIZEBUFFER_H
18#include "arcane/utils/MemoryView.h"
19#include "arcane/utils/Array.h"
20#include "arcane/utils/Array2.h"
21#include "arcane/utils/SmallArray.h"
22#include "arcane/utils/TraceAccessor.h"
24#include "arcane/impl/IDataSynchronizeBuffer.h"
25#include "arcane/utils/FixedArray.h"
51class ARCANE_IMPL_EXPORT DataSynchronizeBufferBase
85 void checkValid()
const
129 void barrier() final;
177 bool m_is_compare_sync_values =
false;
190class ARCANE_IMPL_EXPORT SingleDataSynchronizeBuffer
192,
public DataSynchronizeBufferBase
198 , DataSynchronizeBufferBase(sync_info, copier)
215 void prepareSynchronize(
bool is_compare_sync)
override;
235class ARCANE_IMPL_EXPORT MultiDataSynchronizeBuffer
237,
public DataSynchronizeBufferBase
245 , DataSynchronizeBufferBase(sync_info, copier)
255 void setNbData(
Int32 nb_data)
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
Vue constante d'un tableau de type T.
Buffer pour un élément de la synchronisation (envoi, réception ou comparaison)
Int64 totalSize() const
Taille totale en octet du buffer global.
Int64 m_total_size
Taille total (en octet) du buffer.
SmallArray< Int64 > m_local_buffer_size
Taille (en octet) de chaque buffer local.
MutableMemoryView m_memory_view
Vue sur la zone mémoire du buffer.
ConstArrayView< Int32 > m_datatype_sizes
Taille (en octet) du type de chaque donnée.
UniqueArray2< Int64 > m_displacements
Offset (en octet) dans globalBuffer() de chaque donnée.
MutableMemoryView globalBuffer() const
Buffer global.
Classe de base de l'implémentation de IDataSynchronizeBuffer.
Int64 receiveDisplacement(Int32 index) const final
Déplacement (en octets) depuis le début de receiveBuffer() pour le index-ème rang.
void _allocateBuffers()
Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des varia...
bool isCompareSynchronizedValues() const
Indique si on compare les valeurs avant/après la synchronisation.
BufferInfo m_compare_sync_buffer_info
Buffer pour tester si la synchronisation a modifié les valeurs des mailles fantômes.
Int32 nbRank() const final
Nombre de rangs.
Int64 sendDisplacement(Int32 index) const final
Déplacement (en octets) depuis le début de sendBuffer() pour le index-ème rang.
BufferInfo m_share_buffer_info
Buffer pour toutes les données des entités partagées qui serviront en envoi.
MutableMemoryView globalReceiveBuffer() final
Buffer de réception.
Int64 totalSendSize() const final
Taille totale à envoyer en octet.
MutableMemoryView globalSendBuffer() final
Buffer d'envoi.
MutableMemoryView receiveBuffer(Int32 index) final
Buffer de réception pour le index-ème rang.
virtual void prepareSynchronize(bool is_compare_sync)=0
Prépare la synchronisation.
Int64 totalReceiveSize() const final
Taille totale à recevoir en octet.
void _compute(ConstArrayView< Int32 > datatype_sizes)
Calcule les informations pour la synchronisation.
BufferInfo m_ghost_buffer_info
Buffer pour toutes les données des entités fantômes qui serviront en réception.
Ref< MemoryBuffer > m_memory
Buffer contenant les données concaténées en envoi et réception.
MutableMemoryView sendBuffer(Int32 index) final
Buffer d'envoi pour le index-ème rang.
bool hasGlobalBuffer() const final
Indique si les buffers sont globaux.
Informations pour les messages d'envoi (share) ou de réception (ghost)
Informations nécessaires pour synchroniser les entités sur un groupe.
Informations sur le résultat d'une synchronisation.
Tableau 1D de taille fixe.
Interface pour copier des éléments entre deux zones avec indexation.
Buffer générique pour la synchronisation de données.
Interface du gestionnaire de traces.
Gestion d'un buffer mémoire.
SmallArray< Int32 > m_datatype_sizes
Tableau contenant les tailles des types de donnée.
void prepareSynchronize(bool is_compare_sync) override
void copyReceiveAsync(Int32 rank_index) final
Recopie dans les données depuis le buffer de réception du index-ème rang.
SmallArray< MutableMemoryView > m_data_views
Vue sur les données de la variable.
void copySendAsync(Int32 rank_index) final
Recopie dans le buffer d'envoi les données du index-ème rang.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
constexpr Int32 datatypeSize() const
Taille du type de donnée associé (1 par défaut)
Référence à une instance.
MutableMemoryView m_data_view
Vue sur les données de la variable.
FixedArray< Int32, 1 > m_datatype_sizes
Tableau contenant les tailles des types de donnée.
void copyReceiveAsync(Int32 index) final
Recopie dans les données depuis le buffer de réception du index-ème rang.
void copySendAsync(Int32 index) final
Recopie dans le buffer d'envoi les données du index-ème rang.
MutableMemoryView dataView()
Zone mémoire contenant les valeurs de la donnée à synchroniser.
Tableau 1D de données avec buffer pré-alloué sur la pile.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur de données 2D avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.