Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::IParallelExchangerabstract

Echange d'informations entre processeurs. Plus de détails...

#include <arcane/core/IParallelExchanger.h>

+ Graphe de collaboration de Arcane::IParallelExchanger:

Types publics

enum  eExchangeMode { EM_Independant = ParallelExchangerOptions::EM_Independant , EM_Collective = ParallelExchangerOptions::EM_Collective , EM_Auto = ParallelExchangerOptions::EM_Auto }
 

Fonctions membres publiques

virtual bool initializeCommunicationsMessages ()=0
 Calcule les communications.
 
virtual void initializeCommunicationsMessages (Int32ConstArrayView recv_ranks)=0
 Calcule les communications.
 
virtual void processExchange ()=0
 Effectue l'échange avec les options par défaut de ParallelExchangerOptions.
 
virtual void processExchange (const ParallelExchangerOptions &options)=0
 Effectue l'échange avec les options options.
 
virtual IParallelMngparallelMng () const =0
 
virtual Integer nbSender () const =0
 Nombre de processeurs auquel on envoie.
 
virtual Int32ConstArrayView senderRanks () const =0
 Liste des rangs des processeurs auquel on envoie.
 
virtual void addSender (Int32 rank)=0
 Ajoute un processeur à envoyer.
 
virtual ISerializeMessagemessageToSend (Integer i)=0
 Message destiné au ième processeur.
 
virtual Integer nbReceiver () const =0
 Nombre de processeurs dont on va réceptionner les messages.
 
virtual Int32ConstArrayView receiverRanks ()=0
 Liste des rangs des processeurs dont on va réceptionner les messages.
 
virtual ISerializeMessagemessageToReceive (Integer i)=0
 Message reçu du ième processeur.
 
virtual void setExchangeMode (eExchangeMode mode)=0
 Positionne le mode d'échange.
 
virtual eExchangeMode exchangeMode () const =0
 Mode d'échange spécifié
 
virtual void setVerbosityLevel (Int32 v)=0
 Positionne le niveau de verbosité
 
virtual Int32 verbosityLevel () const =0
 Niveau de verbosité
 
virtual void setName (const String &name)=0
 Positionne le nom de l'instance. Ce nom est utilisé lors des impressions.
 
virtual String name () const =0
 Nom de l'instance.
 

Description détaillée

Echange d'informations entre processeurs.

Cette classe permet d'envoyer et de recevoir des messages quelconques d'un nombre quelconque d'autre processeurs.

Le fonctionnement est le suivant.

  1. indiquer les autres PE avec lesquels on souhaite communiquer en appelant addSender(), éventuellement plusieurs fois.
  2. appeller initializeCommunicationsMessages() pour déterminer la liste des PE pour lesquels on doit recevoir des infos. Il existe deux surchages pour cette méthode suivant si on connait ou non le nombre de rangs pour lesquels on doit recevoir des informations.
  3. pour chaque message d'envoi, sérialiser les informations qu'on souhaite envoyer.
  4. effectuer les envoies et les réceptions en appelant processExchange()
  5. récupérer les messages recus (via messageToReceive()) et désérialiser leurs informations.

Il est possible de spécifier, avant appel à processExchange(), la manière dont les messages seront envoyés via setExchangeMode(). Par défaut, le mécanisme utilisé est celui des communications point à point (EM_Independant) mais il est possible d'utiliser un mode collectif (EM_Collective) qui utilise des messages de type 'all to all'.

Définition à la ligne 61 du fichier IParallelExchanger.h.

Documentation des énumérations membres

◆ eExchangeMode

Valeurs énumérées
EM_Independant 

Utilise les échanges point à point (send/recv)

EM_Collective 

Utilise les opération collectives (allToAll)

EM_Auto 

Choisi automatiquement entre point à point ou collective.

Définition à la ligne 65 du fichier IParallelExchanger.h.

Documentation des fonctions membres

◆ initializeCommunicationsMessages() [1/2]

virtual bool Arcane::IParallelExchanger::initializeCommunicationsMessages ( )
pure virtual

Calcule les communications.

A partir de m_send_ranks donné par chaque processeur, détermine la liste des processeurs à qui on doit envoyer un message.

Afin de connaître les processeurs desquels on attend des informations, il est nécessaire de faire une communication (allGatherVariable()). Si on connait à priori ces processeurs, il faut utiliser une des versions surchargée de cette méthode.

Valeurs retournées
trues'il n'y a rien à échanger
falsesinon.

◆ initializeCommunicationsMessages() [2/2]

virtual void Arcane::IParallelExchanger::initializeCommunicationsMessages ( Int32ConstArrayView  recv_ranks)
pure virtual

Calcule les communications.

Suppose que la liste des processeurs dont on veut les informations est dans recv_ranks.


La documentation de cette classe a été générée à partir du fichier suivant :