Classe de base de l'implémentation de IDataSynchronizeBuffer. Plus de détails...
#include <arcane/impl/internal/DataSynchronizeBuffer.h>
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. | |
![]() | |
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 | |
DataSynchronizeInfo * | m_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< MemoryBuffer > | m_memory |
Buffer contenant les données concaténées en envoi et réception. | |
Ref< IBufferCopier > | m_buffer_copier |
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.
Arcane::DataSynchronizeBufferBase::DataSynchronizeBufferBase | ( | DataSynchronizeInfo * | sync_info, |
Ref< IBufferCopier > | copier ) |
Définition à la ligne 208 du fichier DataSynchronizeBuffer.cc.
|
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.
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().
|
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().
|
finalvirtual |
Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 227 du fichier DataSynchronizeBuffer.cc.
|
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.
|
inlinefinalvirtual |
Buffer d'envoi.
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 124 du fichier DataSynchronizeBuffer.h.
Références m_share_buffer_info.
|
inlinefinalvirtual |
Indique si les buffers sont globaux.
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 115 du fichier DataSynchronizeBuffer.h.
|
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().
|
inlinefinalvirtual |
Nombre de rangs.
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 113 du fichier DataSynchronizeBuffer.h.
Référencé par Arcane::SingleDataSynchronizeBuffer::prepareSynchronize().
|
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().
|
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.
|
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.
|
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.
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.
|
inline |
Définition à la ligne 140 du fichier DataSynchronizeBuffer.h.
Rang cible du index-ème rang.
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 218 du fichier DataSynchronizeBuffer.cc.
|
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.
|
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.
|
protected |
Définition à la ligne 182 du fichier DataSynchronizeBuffer.h.
|
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().
|
protected |
Buffer pour toutes les données des entités fantômes qui serviront en réception.
Définition à la ligne 168 du fichier DataSynchronizeBuffer.h.
Référencé par _allocateBuffers(), _compute(), Arcane::MultiDataSynchronizeBuffer::copyReceiveAsync(), Arcane::SingleDataSynchronizeBuffer::copyReceiveAsync(), Arcane::MultiDataSynchronizeBuffer::copySendAsync(), Arcane::SingleDataSynchronizeBuffer::finalizeSynchronize(), globalReceiveBuffer(), receiveBuffer(), receiveDisplacement(), et totalReceiveSize().
|
protected |
Définition à la ligne 177 du fichier DataSynchronizeBuffer.h.
|
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().
|
protected |
Définition à la ligne 176 du fichier DataSynchronizeBuffer.h.
|
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().
|
protected |
Définition à la ligne 166 du fichier DataSynchronizeBuffer.h.