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/SmallArray.h"
21#include "arcane/utils/TraceAccessor.h"
23#include "arcane/impl/IDataSynchronizeBuffer.h"
41class ARCANE_IMPL_EXPORT DataSynchronizeBufferBase
46 friend DataSynchronizeBufferBase;
54 MutableMemoryView localBuffer(
Int32 index);
65 void checkValid()
const
72 MutableMemoryView m_memory_view;
73 Int32 m_datatype_size = 0;
143 bool m_is_compare_sync_values =
false;
156class ARCANE_IMPL_EXPORT SingleDataSynchronizeBuffer
157:
public DataSynchronizeBufferBase
162 : DataSynchronizeBufferBase(sync_info, copier)
172 void setDataView(MutableMemoryView v) {
m_data_view = v; }
175 void prepareSynchronize(
Int32 datatype_size,
bool is_compare_sync)
override;
193class ARCANE_IMPL_EXPORT MultiDataSynchronizeBuffer
195,
public DataSynchronizeBufferBase
203 , DataSynchronizeBufferBase(sync_info, copier)
213 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.
Int64 totalSize() const
Taille totale en octet du buffer global.
MutableMemoryView globalBuffer()
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.
virtual void prepareSynchronize(Int32 datatype_size, bool is_compare_sync)=0
Prépare la synchronisation.
bool isCompareSynchronizedValues() const
Indique si on compare les valeurs avant/après la synchronisation.
void _compute(Int32 datatype_size)
Calcule les informations pour 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.
void _allocateBuffers(Int32 datatype_size)
Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des varia...
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.
Int64 totalReceiveSize() const final
Taille totale à recevoir en octet.
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 message 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.
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.
void prepareSynchronize(Int32 datatype_size, bool is_compare_sync) override
Prépare la synchronisation.
void copyReceiveAsync(Int32 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 index) final
Recopie dans le buffer d'envoi les données du index-ème rang.
Référence à une instance.
MutableMemoryView m_data_view
Vue sur les données de la variable.
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.
-*- 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.