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

Buffer générique pour la synchronisation de données. Plus de détails...

#include <arcane/impl/IDataSynchronizeBuffer.h>

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

Fonctions membres publiques

virtual Int32 nbRank () const =0
 Nombre de rangs.
 
virtual Int32 targetRank (Int32 index) const =0
 Rang cible du index-ème rang.
 
virtual bool hasGlobalBuffer () const =0
 Indique si les buffers sont globaux.
 
virtual MutableMemoryView globalSendBuffer ()=0
 Buffer d'envoi.
 
virtual MutableMemoryView globalReceiveBuffer ()=0
 Buffer de réception.
 
virtual MutableMemoryView sendBuffer (Int32 index)=0
 Buffer d'envoi pour le index-ème rang.
 
virtual MutableMemoryView receiveBuffer (Int32 index)=0
 Buffer de réception pour le index-ème rang.
 
virtual Int64 sendDisplacement (Int32 index) const =0
 Déplacement (en octets) depuis le début de sendBuffer() pour le index-ème rang.
 
virtual Int64 receiveDisplacement (Int32 index) const =0
 Déplacement (en octets) depuis le début de receiveBuffer() pour le index-ème rang.
 
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.
 
virtual Int64 totalSendSize () const =0
 Taille totale à envoyer en octet.
 
virtual Int64 totalReceiveSize () const =0
 Taille totale à recevoir en octet.
 
virtual void barrier ()=0
 Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.
 

Description détaillée

Buffer générique pour la synchronisation de données.

Cette instance contient des buffers d'envoi et de réception et peut être utilisée quel que soit le type de donnée de la synchronisation.

Chaque buffer est composé de nbRank() parties et chaque partie est associée à un destinataire (sendBuffer() ou receiveBuffer()).

Avant d'utiliser les buffers, il faut recopier les valeurs de la donnée. La méthode copySendAsync() permet de recopier les valeurs de la donnée dans le buffer d'envoi et copyReceiveAsync() permet de recopier le buffer de réception dans la donnée.

Avertissement
Ces méthodes copyReceiveAsync() et copySendAsync() peuvent être asynchrones. Il est donc important d'appeler barrier() avant d'utiliser les données copiées pour être sur que les transferts sont terminées.

Si hasGlobalBuffer() est vrai alors les buffers de chaque partie sont issus d'un buffer global et il est possible de le récupérer via globalSendBuffer() pour l'envoi et globalReceiveBuffer() pour la réception. Il est aussi possible dans ce de récupérer le déplacement de chaque sous-partie via les méthodes sendDisplacement() ou receiveDisplacement().

Définition à la ligne 52 du fichier IDataSynchronizeBuffer.h.

Documentation des fonctions membres

◆ barrier()

virtual void Arcane::IDataSynchronizeBuffer::barrier ( )
pure virtual

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

Implémenté dans Arcane::DataSynchronizeBufferBase.

Référencé par copyAllReceive(), et copyAllSend().

◆ copyAllReceive()

void Arcane::IDataSynchronizeBuffer::copyAllReceive ( )
virtual

Recopie toutes les données depuis le buffer de réception.

Cet appel est équivalent à :

for (Int32 i = 0; i < nb_rank; ++i)
virtual void barrier()=0
Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.
virtual void copySendAsync(Int32 index)=0
Recopie dans le buffer d'envoi les données du index-ème rang.

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

Références barrier(), copyReceiveAsync(), et nbRank().

◆ copyAllSend()

void Arcane::IDataSynchronizeBuffer::copyAllSend ( )
virtual

Recopie dans le buffer d'envoi toute les données.

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

Références barrier(), copySendAsync(), et nbRank().

◆ copyReceiveAsync()

virtual void Arcane::IDataSynchronizeBuffer::copyReceiveAsync ( Int32  index)
pure virtual

Recopie dans les données depuis le buffer de réception du index-ème rang.

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

Référencé par copyAllReceive().

◆ copySendAsync()

virtual void Arcane::IDataSynchronizeBuffer::copySendAsync ( Int32  index)
pure virtual

Recopie dans le buffer d'envoi les données du index-ème rang.

Cet appel est équivalent à :

for (Int32 i = 0; i < nb_rank; ++i)
virtual void copyReceiveAsync(Int32 index)=0
Recopie dans les données depuis le buffer de réception du index-ème rang.

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

Référencé par copyAllSend().

◆ globalReceiveBuffer()

virtual MutableMemoryView Arcane::IDataSynchronizeBuffer::globalReceiveBuffer ( )
pure virtual

Buffer de réception.

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ globalSendBuffer()

virtual MutableMemoryView Arcane::IDataSynchronizeBuffer::globalSendBuffer ( )
pure virtual

Buffer d'envoi.

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ hasGlobalBuffer()

virtual bool Arcane::IDataSynchronizeBuffer::hasGlobalBuffer ( ) const
pure virtual

Indique si les buffers sont globaux.

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ nbRank()

virtual Int32 Arcane::IDataSynchronizeBuffer::nbRank ( ) const
pure virtual

Nombre de rangs.

Implémenté dans Arcane::DataSynchronizeBufferBase.

Référencé par copyAllReceive(), et copyAllSend().

◆ receiveBuffer()

virtual MutableMemoryView Arcane::IDataSynchronizeBuffer::receiveBuffer ( Int32  index)
pure virtual

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

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ receiveDisplacement()

virtual Int64 Arcane::IDataSynchronizeBuffer::receiveDisplacement ( Int32  index) const
pure virtual

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émenté dans Arcane::DataSynchronizeBufferBase.

◆ sendBuffer()

virtual MutableMemoryView Arcane::IDataSynchronizeBuffer::sendBuffer ( Int32  index)
pure virtual

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

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ sendDisplacement()

virtual Int64 Arcane::IDataSynchronizeBuffer::sendDisplacement ( Int32  index) const
pure virtual

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émenté dans Arcane::DataSynchronizeBufferBase.

◆ targetRank()

virtual Int32 Arcane::IDataSynchronizeBuffer::targetRank ( Int32  index) const
pure virtual

Rang cible du index-ème rang.

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ totalReceiveSize()

virtual Int64 Arcane::IDataSynchronizeBuffer::totalReceiveSize ( ) const
pure virtual

Taille totale à recevoir en octet.

Implémenté dans Arcane::DataSynchronizeBufferBase.

◆ totalSendSize()

virtual Int64 Arcane::IDataSynchronizeBuffer::totalSendSize ( ) const
pure virtual

Taille totale à envoyer en octet.

Implémenté dans Arcane::DataSynchronizeBufferBase.


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