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

Envoie de valeurs sur différents processeurs. Plus de détails...

#include <arcane/core/ITransferValuesParallelOperation.h>

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

Fonctions membres publiques

virtual ~ITransferValuesParallelOperation ()
 Destructeur.
 
virtual IParallelMngparallelMng ()=0
 Gestionnaire de parallélisme associé
 
virtual void setTransferRanks (Int32ConstArrayView ranks)=0
 Positionne le tableau indiquant à qui envoyer les valeurs.
 
virtual void addArray (Int32ConstArrayView send_values, SharedArray< Int32 > recv_value)=0
 Ajoute un tableau de Int32.
 
virtual void addArray (Int64ConstArrayView send_values, SharedArray< Int64 > recv_values)=0
 Ajoute un tableau de Int64.
 
virtual void addArray (RealConstArrayView send_values, SharedArray< Real > recv_values)=0
 Ajoute un tableau de Int64.
 
virtual void transferValues ()=0
 Envoie et réceptionne les valeurs.
 

Description détaillée

Envoie de valeurs sur différents processeurs.

Cette opération permet de communiquer des valeurs avec les autres processeurs. Le tableau ranks indique pour chaque élément le rang du processeur auquel il est destiné. Il est ensuite possible de spécifier des tableaux contenant les valeurs à envoyer et à recevoir. Les tableaux d'envois doivent avoir le même nombre d'élément que ranks

Une instance ne sert qu'une fois. Une fois le transfert terminé, elle peut être détruite.

Par exemple, pour un cas à 3 processeurs:

// Processeur de rang 0:
ranks.add(2); // Envoie au rang 2
ranks.add(1); // Envoie au rang 1
ranks.add(1); // Envoie au rang 1
values_1.add(5); // Envoie 5 au rang 2 (ranks[0])
values_1.add(7); // Envoie 7 au rang 1 (ranks[1])
values_1.add(6); // Envoie 6 au rang 1 (ranks[2])
values_2.add(-5); // Envoie -5 au rang 2 (ranks[0])
values_2.add(-7); // Envoie -7 au rang 1 (ranks[1])
values_2.add(-6); // Envoie -6 au rang 1 (ranks[2])
// Processeur de rang 1:
ranks.add(0); // Envoie au rang 0
ranks.add(2); // Envoie au rang 2
values_1.add(1); // Envoie 1 au rang 0 (ranks[0])
values_1.add(3); // Envoie 3 au rang 2 (ranks[1])
values_2.add(23); // Envoie 23 au rang 0 (ranks[0])
values_2.add(24); // Envoie 24 au rang 2 (ranks[1])
// Processeur de rang 2:
ranks.add(0); // Envoie au rang 0
ranks.add(0); // Envoie au rang 0
values_1.add(0); // Envoie 1 au rang 0 (ranks[0])
values_1.add(4); // Envoie 3 au rang 0 (ranks[1])
values_2.add(-1); // Envoie -1 au rang 0 (ranks[0])
values_2.add(4); // Envoie 4 au rang 0 (ranks[1])
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vecteur 1D de données avec sémantique par valeur (style STL).

Pour effectuer le transfert

op->setTransferRanks(ranks);
op->transferValues();

Après envoie la processeur de rang 0 aura les valeurs suivantes:

recv_values_1[0] == 1; // envoyé par le rang 1
recv_values_1[1] == 0; // envoyé par le rang 2
recv_values_1[2] == 4; // envoyé par le rang 2
recv_values_2[0] == 23; // envoyé par le rang 1
recv_values_2[1] == -1; // envoyé par le rang 2
recv_values_2[2] == 4; // envoyé par le rang 2

A noter que l'ordre des éléments est indéterminé

Définition à la ligne 107 du fichier ITransferValuesParallelOperation.h.

Documentation des constructeurs et destructeur

◆ ~ITransferValuesParallelOperation()

virtual Arcane::ITransferValuesParallelOperation::~ITransferValuesParallelOperation ( )
inlinevirtual

Destructeur.

Définition à la ligne 111 du fichier ITransferValuesParallelOperation.h.

Documentation des fonctions membres

◆ addArray() [1/3]

virtual void Arcane::ITransferValuesParallelOperation::addArray ( Int32ConstArrayView  send_values,
SharedArray< Int32 >  recv_value 
)
pure virtual

Ajoute un tableau de Int32.

Implémenté dans Arcane::TransferValuesParallelOperation.

◆ addArray() [2/3]

virtual void Arcane::ITransferValuesParallelOperation::addArray ( Int64ConstArrayView  send_values,
SharedArray< Int64 >  recv_values 
)
pure virtual

Ajoute un tableau de Int64.

Implémenté dans Arcane::TransferValuesParallelOperation.

◆ addArray() [3/3]

virtual void Arcane::ITransferValuesParallelOperation::addArray ( RealConstArrayView  send_values,
SharedArray< Real >  recv_values 
)
pure virtual

Ajoute un tableau de Int64.

Implémenté dans Arcane::TransferValuesParallelOperation.

◆ parallelMng()

virtual IParallelMng * Arcane::ITransferValuesParallelOperation::parallelMng ( )
pure virtual

Gestionnaire de parallélisme associé

Implémenté dans Arcane::TransferValuesParallelOperation.

◆ setTransferRanks()

virtual void Arcane::ITransferValuesParallelOperation::setTransferRanks ( Int32ConstArrayView  ranks)
pure virtual

Positionne le tableau indiquant à qui envoyer les valeurs.

Implémenté dans Arcane::TransferValuesParallelOperation.

◆ transferValues()

virtual void Arcane::ITransferValuesParallelOperation::transferValues ( )
pure virtual

Envoie et réceptionne les valeurs.

Cet appel est collectif et bloquant.

Implémenté dans Arcane::TransferValuesParallelOperation.


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