Arcane  v3.16.4.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
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 ()=default
 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:

1// Processeur de rang 0:
3ranks.add(2); // Envoie au rang 2
4ranks.add(1); // Envoie au rang 1
5ranks.add(1); // Envoie au rang 1
6Int32UniqueArray values_1;
7values_1.add(5); // Envoie 5 au rang 2 (ranks[0])
8values_1.add(7); // Envoie 7 au rang 1 (ranks[1])
9values_1.add(6); // Envoie 6 au rang 1 (ranks[2])
10Int64UniqueArray values_2;
11values_2.add(-5); // Envoie -5 au rang 2 (ranks[0])
12values_2.add(-7); // Envoie -7 au rang 1 (ranks[1])
13values_2.add(-6); // Envoie -6 au rang 1 (ranks[2])
14
15// Processeur de rang 1:
17ranks.add(0); // Envoie au rang 0
18ranks.add(2); // Envoie au rang 2
19Int32UniqueArray values_1;
20values_1.add(1); // Envoie 1 au rang 0 (ranks[0])
21values_1.add(3); // Envoie 3 au rang 2 (ranks[1])
22Int64UniqueArray values_2;
23values_2.add(23); // Envoie 23 au rang 0 (ranks[0])
24values_2.add(24); // Envoie 24 au rang 2 (ranks[1])
25
26// Processeur de rang 2:
28ranks.add(0); // Envoie au rang 0
29ranks.add(0); // Envoie au rang 0
30Int32UniqueArray values_1;
31values_1.add(0); // Envoie 1 au rang 0 (ranks[0])
32values_1.add(4); // Envoie 3 au rang 0 (ranks[1])
33Int64UniqueArray values_2;
34values_2.add(-1); // Envoie -1 au rang 0 (ranks[0])
35values_2.add(4); // Envoie 4 au rang 0 (ranks[1])
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
UniqueArray< Int64 > Int64UniqueArray
Tableau dynamique à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:426
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:428

Pour effectuer le transfert

1Int32UniqueArray recv_values_1;
2Int64UniqueArray recv_values_2;
3op->setTransferRanks(ranks);
4op->addArray(values_1,recv_values_1);
5op->addArray(values_2,recv_values_2);
6op->transferValues();

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

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

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

Définition à la ligne 104 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 :