Implémentation de IDataSynchronizeBuffer pour une donnée. Plus de détails...
#include <arcane/impl/internal/DataSynchronizeBuffer.h>
Fonctions membres publiques | |
SingleDataSynchronizeBuffer (DataSynchronizeInfo *sync_info, Ref< IBufferCopier > copier) | |
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. | |
void | setDataView (MutableMemoryView v) |
MutableMemoryView | dataView () |
Zone mémoire contenant les valeurs de la donnée à synchroniser. | |
void | prepareSynchronize (Int32 datatype_size, bool is_compare_sync) override |
Prépare la synchronisation. | |
DataSynchronizeResult | finalizeSynchronize () |
Termine la synchronisation. | |
Fonctions membres publiques hérités de Arcane::DataSynchronizeBufferBase | |
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) |
Fonctions membres publiques hérités de Arcane::IDataSynchronizeBuffer | |
virtual void | copyAllReceive () |
Recopie toutes les données depuis le buffer de réception. | |
virtual void | copyAllSend () |
Recopie dans le buffer d'envoi toute les données. | |
Attributs privés | |
MutableMemoryView | m_data_view |
Vue sur les données de la variable. | |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arcane::DataSynchronizeBufferBase | |
void | _allocateBuffers (Int32 datatype_size) |
Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des variables 1D. | |
void | _compute (Int32 datatype_size) |
Calcule les informations pour la synchronisation. | |
Attributs protégés hérités de Arcane::DataSynchronizeBufferBase | |
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 |
Implémentation de IDataSynchronizeBuffer pour une donnée.
Définition à la ligne 156 du fichier DataSynchronizeBuffer.h.
|
inline |
Définition à la ligne 161 du fichier DataSynchronizeBuffer.h.
|
finalvirtual |
Recopie dans les données depuis le buffer de réception du index-ème rang.
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 189 du fichier DataSynchronizeBuffer.cc.
Références Arcane::DataSynchronizeBufferBase::BufferInfo::localBuffer(), Arcane::DataSynchronizeBufferBase::BufferInfo::localIds(), et Arcane::DataSynchronizeBufferBase::m_ghost_buffer_info.
|
finalvirtual |
Recopie dans le buffer d'envoi les données du index-ème rang.
Cet appel est équivalent à :
Implémente Arcane::IDataSynchronizeBuffer.
Définition à la ligne 204 du fichier DataSynchronizeBuffer.cc.
Références Arcane::DataSynchronizeBufferBase::BufferInfo::localBuffer(), Arcane::DataSynchronizeBufferBase::BufferInfo::localIds(), et Arcane::DataSynchronizeBufferBase::m_share_buffer_info.
|
inline |
Zone mémoire contenant les valeurs de la donnée à synchroniser.
Définition à la ligne 174 du fichier DataSynchronizeBuffer.h.
DataSynchronizeResult Arcane::SingleDataSynchronizeBuffer::finalizeSynchronize | ( | ) |
Termine la synchronisation.
Compare les valeurs avant/après synchronisation.
Il suffit de comparer bit à bit le buffer de réception avec celui contenant les valeurs avant la synchronisation (m_check_sync_buffer).
a vrai s'il y a des différences.
Définition à la ligne 248 du fichier DataSynchronizeBuffer.cc.
Références ARCANE_FATAL, Arcane::Different, Arcane::DataSynchronizeBufferBase::BufferInfo::globalBuffer(), Arcane::DataSynchronizeBufferBase::m_compare_sync_buffer_info, Arcane::DataSynchronizeBufferBase::m_ghost_buffer_info, et Arcane::Same.
Référencé par Arcane::DataSynchronizeDispatcher::endSynchronize().
|
overridevirtual |
Prépare la synchronisation.
Prépare la synchronisation et alloue les buffers si nécessaire. datatype_size est la taille (en octet) du type de la donnée. 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 appeler setSynchronizeBuffer() au moins une fois avant d'appeler cette méthode pour positionner la zone mémoire allouée.
Implémente Arcane::DataSynchronizeBufferBase.
Définition à la ligne 218 du fichier DataSynchronizeBuffer.cc.
Références Arcane::DataSynchronizeBufferBase::_compute(), Arcane::DataSynchronizeBufferBase::BufferInfo::localBuffer(), Arcane::DataSynchronizeBufferBase::BufferInfo::localIds(), Arcane::DataSynchronizeBufferBase::m_compare_sync_buffer_info, et Arcane::DataSynchronizeBufferBase::nbRank().
Référencé par Arcane::DataSynchronizeDispatcher::beginSynchronize().
|
inline |
Définition à la ligne 172 du fichier DataSynchronizeBuffer.h.
|
private |
Vue sur les données de la variable.
Définition à la ligne 185 du fichier DataSynchronizeBuffer.h.