Echange d'informations entre processeurs. Plus de détails...
#include <arcane/core/IParallelExchanger.h>
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 IParallelMng * | parallelMng () 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 ISerializeMessage * | messageToSend (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 ISerializeMessage * | messageToReceive (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. | |
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.
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.
Définition à la ligne 65 du fichier IParallelExchanger.h.
|
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.
true | s'il n'y a rien à échanger |
false | sinon. |
|
pure virtual |
Calcule les communications.
Suppose que la liste des processeurs dont on veut les informations est dans recv_ranks.