Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::DataSynchronizeBufferBaseabstract

Classe de base de l'implémentation de IDataSynchronizeBuffer. Plus de détails...

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

+ Graphe d'héritage de Arcane::DataSynchronizeBufferBase:
+ Graphe de collaboration de Arcane::DataSynchronizeBufferBase:

Classes

class  BufferInfo
 Buffer pour un élément de la synchronisation (envoi, réception ou comparaison) Plus de détails...
 

Fonctions membres publiques

Int32 nbRank () const final
 Nombre de rangs.
 
Int32 targetRank (Int32 index) const final
 Rang cible du index-ème rang.
 
bool hasGlobalBuffer () const final
 Indique si les buffers sont globaux.
 
MutableMemoryView receiveBuffer (Int32 index) final
 Buffer de réception pour le index-ème rang.
 
MutableMemoryView sendBuffer (Int32 index) final
 Buffer d'envoi pour le index-ème rang.
 
Int64 receiveDisplacement (Int32 index) const final
 Déplacement (en octets) depuis le début de receiveBuffer() pour le index-ème rang.
 
Int64 sendDisplacement (Int32 index) const final
 Déplacement (en octets) depuis le début de sendBuffer() pour le index-ème rang.
 
MutableMemoryView globalReceiveBuffer () final
 Buffer de réception.
 
MutableMemoryView globalSendBuffer () final
 Buffer d'envoi.
 
Int64 totalReceiveSize () const final
 Taille totale à recevoir en octet.
 
Int64 totalSendSize () const final
 Taille totale à envoyer en octet.
 
void barrier () final
 Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.
 
 DataSynchronizeBufferBase (DataSynchronizeInfo *sync_info, Ref< IBufferCopier > copier)
 
bool isCompareSynchronizedValues () const
 Indique si on compare les valeurs avant/après la synchronisation.
 
void setSynchronizeBuffer (Ref< MemoryBuffer > v)
 
virtual void prepareSynchronize (bool is_compare_sync)=0
 Prépare la synchronisation.
 
- Fonctions membres publiques hérités de Arcane::IDataSynchronizeBuffer
virtual void copyReceiveAsync (Int32 index)=0
 Recopie dans les données depuis le buffer de réception du index-ème rang.
 
virtual void copyAllReceive ()
 Recopie toutes les données depuis le buffer de réception.
 
virtual void copySendAsync (Int32 index)=0
 Recopie dans le buffer d'envoi les données du index-ème rang.
 
virtual void copyAllSend ()
 Recopie dans le buffer d'envoi toute les données.
 

Fonctions membres protégées

void _allocateBuffers ()
 Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des variables 1D.
 
void _compute (ConstArrayView< Int32 > datatype_sizes)
 Calcule les informations pour la synchronisation.
 

Attributs protégés

DataSynchronizeInfom_sync_info = nullptr
 
BufferInfo m_ghost_buffer_info
 Buffer pour toutes les données des entités fantômes qui serviront en réception.
 
BufferInfo m_share_buffer_info
 Buffer pour toutes les données des entités partagées qui serviront en envoi.
 
BufferInfo m_compare_sync_buffer_info
 Buffer pour tester si la synchronisation a modifié les valeurs des mailles fantômes.
 
Int32 m_nb_rank = 0
 
bool m_is_compare_sync_values = false
 
Ref< MemoryBufferm_memory
 Buffer contenant les données concaténées en envoi et réception.
 
Ref< IBufferCopierm_buffer_copier
 

Description détaillée

Classe de base de l'implémentation de IDataSynchronizeBuffer.

Cette implémentation utilise un seul buffer mémoire pour gérer les trois parties de la synchronisation : le buffer d'envoi, le buffer de réception et le buffer pour les comparer si la synchronisation a modifié des valeurs (ce dernier est optionnel). Chaque buffer est ensuite séparé en N parties, appelées sous-buffer, avec N le nombre de rangs qui communiquent. Enfin, chaque sous-buffer est lui-même séparé en P parties, avec P le nombre de données à communiquer.

Définition à la ligne 51 du fichier DataSynchronizeBuffer.h.

Documentation des constructeurs et destructeur

◆ DataSynchronizeBufferBase()

Arcane::DataSynchronizeBufferBase::DataSynchronizeBufferBase ( DataSynchronizeInfo * sync_info,
Ref< IBufferCopier > copier )

Définition à la ligne 208 du fichier DataSynchronizeBuffer.cc.

Documentation des fonctions membres

◆ _allocateBuffers()

void Arcane::DataSynchronizeBufferBase::_allocateBuffers ( )
protected

Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des variables 1D.

Il faut avoir appelé _compute() avant pour calculer les tailles et offset pour chaque buffer.

A faire
: ne pas converver les tampons pour chaque type de donnée des variables car leur conservation est couteuse en terme de memoire.

Définition à la ligne 263 du fichier DataSynchronizeBuffer.cc.

Références m_compare_sync_buffer_info, m_ghost_buffer_info, m_memory, m_share_buffer_info, Arcane::makeMutableMemoryView(), et Arcane::Span< T, Extent, MinValue >::subspan().

Référencé par _compute(), et prepareSynchronize().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ _compute()

void Arcane::DataSynchronizeBufferBase::_compute ( ConstArrayView< Int32 > datatype_sizes)
protected

Calcule les informations pour la synchronisation.

Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des variables 1D.

Définition à la ligne 239 du fichier DataSynchronizeBuffer.cc.

Références _allocateBuffers(), m_compare_sync_buffer_info, m_ghost_buffer_info, et m_share_buffer_info.

Référencé par prepareSynchronize(), Arcane::MultiDataSynchronizeBuffer::prepareSynchronize(), et Arcane::SingleDataSynchronizeBuffer::prepareSynchronize().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ barrier()

void Arcane::DataSynchronizeBufferBase::barrier ( )
finalvirtual

Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 227 du fichier DataSynchronizeBuffer.cc.

◆ globalReceiveBuffer()

MutableMemoryView Arcane::DataSynchronizeBufferBase::globalReceiveBuffer ( )
inlinefinalvirtual

Buffer de réception.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 123 du fichier DataSynchronizeBuffer.h.

Références m_ghost_buffer_info.

◆ globalSendBuffer()

MutableMemoryView Arcane::DataSynchronizeBufferBase::globalSendBuffer ( )
inlinefinalvirtual

Buffer d'envoi.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 124 du fichier DataSynchronizeBuffer.h.

Références m_share_buffer_info.

◆ hasGlobalBuffer()

bool Arcane::DataSynchronizeBufferBase::hasGlobalBuffer ( ) const
inlinefinalvirtual

Indique si les buffers sont globaux.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 115 du fichier DataSynchronizeBuffer.h.

◆ isCompareSynchronizedValues()

bool Arcane::DataSynchronizeBufferBase::isCompareSynchronizedValues ( ) const
inline

Indique si on compare les valeurs avant/après la synchronisation.

Définition à la ligne 138 du fichier DataSynchronizeBuffer.h.

Références isCompareSynchronizedValues().

Référencé par isCompareSynchronizedValues().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ nbRank()

Int32 Arcane::DataSynchronizeBufferBase::nbRank ( ) const
inlinefinalvirtual

Nombre de rangs.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 113 du fichier DataSynchronizeBuffer.h.

Référencé par Arcane::SingleDataSynchronizeBuffer::prepareSynchronize().

+ Voici le graphe des appelants de cette fonction :

◆ prepareSynchronize()

virtual void Arcane::DataSynchronizeBufferBase::prepareSynchronize ( bool is_compare_sync)
pure virtual

Prépare la synchronisation.

Prépare la synchronisation et alloue les buffers si nécessaire.

Si is_compare_sync est vrai, on compare après la synchronisation les valeurs des entités fantômes avec leur valeur d'avant la synchronisation.

Il faut avoir appelé setSynchronizeBuffer() au moins une fois avant d'appeler cette méthode pour positionner la zone mémoire allouée.

Implémenté dans Arcane::MultiDataSynchronizeBuffer, et Arcane::SingleDataSynchronizeBuffer.

Références _allocateBuffers(), et _compute().

+ Voici le graphe d'appel pour cette fonction :

◆ receiveBuffer()

MutableMemoryView Arcane::DataSynchronizeBufferBase::receiveBuffer ( Int32 index)
inlinefinalvirtual

Buffer de réception pour le index-ème rang.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 117 du fichier DataSynchronizeBuffer.h.

Références m_ghost_buffer_info.

◆ receiveDisplacement()

Int64 Arcane::DataSynchronizeBufferBase::receiveDisplacement ( Int32 index) const
inlinefinalvirtual

Déplacement (en octets) depuis le début de receiveBuffer() pour le index-ème rang.

Cette valeur n'est significative que si hasGlobalBuffer() est vrai.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 120 du fichier DataSynchronizeBuffer.h.

Références m_ghost_buffer_info.

◆ sendBuffer()

MutableMemoryView Arcane::DataSynchronizeBufferBase::sendBuffer ( Int32 index)
inlinefinalvirtual

Buffer d'envoi pour le index-ème rang.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 118 du fichier DataSynchronizeBuffer.h.

Références m_share_buffer_info.

◆ sendDisplacement()

Int64 Arcane::DataSynchronizeBufferBase::sendDisplacement ( Int32 index) const
inlinefinalvirtual

Déplacement (en octets) depuis le début de sendBuffer() pour le index-ème rang.

Cette valeur n'est significative que si hasGlobalBuffer() est vrai.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 121 du fichier DataSynchronizeBuffer.h.

Références m_share_buffer_info.

◆ setSynchronizeBuffer()

void Arcane::DataSynchronizeBufferBase::setSynchronizeBuffer ( Ref< MemoryBuffer > v)
inline

Définition à la ligne 140 du fichier DataSynchronizeBuffer.h.

◆ targetRank()

Int32 Arcane::DataSynchronizeBufferBase::targetRank ( Int32 index) const
finalvirtual

Rang cible du index-ème rang.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 218 du fichier DataSynchronizeBuffer.cc.

◆ totalReceiveSize()

Int64 Arcane::DataSynchronizeBufferBase::totalReceiveSize ( ) const
inlinefinalvirtual

Taille totale à recevoir en octet.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 126 du fichier DataSynchronizeBuffer.h.

Références m_ghost_buffer_info.

◆ totalSendSize()

Int64 Arcane::DataSynchronizeBufferBase::totalSendSize ( ) const
inlinefinalvirtual

Taille totale à envoyer en octet.

Implémente Arcane::IDataSynchronizeBuffer.

Définition à la ligne 127 du fichier DataSynchronizeBuffer.h.

Références m_share_buffer_info.

Documentation des données membres

◆ m_buffer_copier

Ref<IBufferCopier> Arcane::DataSynchronizeBufferBase::m_buffer_copier
protected

Définition à la ligne 182 du fichier DataSynchronizeBuffer.h.

◆ m_compare_sync_buffer_info

BufferInfo Arcane::DataSynchronizeBufferBase::m_compare_sync_buffer_info
protected

Buffer pour tester si la synchronisation a modifié les valeurs des mailles fantômes.

Définition à la ligne 172 du fichier DataSynchronizeBuffer.h.

Référencé par _allocateBuffers(), _compute(), Arcane::SingleDataSynchronizeBuffer::finalizeSynchronize(), et Arcane::SingleDataSynchronizeBuffer::prepareSynchronize().

◆ m_ghost_buffer_info

◆ m_is_compare_sync_values

bool Arcane::DataSynchronizeBufferBase::m_is_compare_sync_values = false
protected

Définition à la ligne 177 du fichier DataSynchronizeBuffer.h.

◆ m_memory

Ref<MemoryBuffer> Arcane::DataSynchronizeBufferBase::m_memory
protected

Buffer contenant les données concaténées en envoi et réception.

Définition à la ligne 180 du fichier DataSynchronizeBuffer.h.

Référencé par _allocateBuffers().

◆ m_nb_rank

Int32 Arcane::DataSynchronizeBufferBase::m_nb_rank = 0
protected

Définition à la ligne 176 du fichier DataSynchronizeBuffer.h.

◆ m_share_buffer_info

BufferInfo Arcane::DataSynchronizeBufferBase::m_share_buffer_info
protected

Buffer pour toutes les données des entités partagées qui serviront en envoi.

Définition à la ligne 170 du fichier DataSynchronizeBuffer.h.

Référencé par _allocateBuffers(), _compute(), Arcane::MultiDataSynchronizeBuffer::copySendAsync(), Arcane::SingleDataSynchronizeBuffer::copySendAsync(), globalSendBuffer(), sendBuffer(), sendDisplacement(), et totalSendSize().

◆ m_sync_info

DataSynchronizeInfo* Arcane::DataSynchronizeBufferBase::m_sync_info = nullptr
protected

Définition à la ligne 166 du fichier DataSynchronizeBuffer.h.


La documentation de cette classe a été générée à partir des fichiers suivants :