Arcane  v3.16.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de l'espace de nommage Arccore::MessagePassing

Espace de nommage contenant les types et déclarations qui gèrent le mécanisme de parallélisme par échange de message. Plus de détails...

Classes

class  Communicator
 Communicateur pour l'échange de message. Plus de détails...
 
class  Dispatchers
 Interface du conteneur des dispatchers. Plus de détails...
 
class  GatherMessageInfo
 Informations pour un message 'gather' pour le type de données DataType. Plus de détails...
 
class  GatherMessageInfoBase
 Informations pour un message 'gather'. Plus de détails...
 
class  IControlDispatcher
 
class  IDispatchers
 Interface du conteneur des dispatchers. Plus de détails...
 
class  IMessagePassingMng
 Interface du gestionnaire des échanges de messages. Plus de détails...
 
class  IProfiler
 Interface d'un profiler pour les échanges de messages. Plus de détails...
 
class  IRequestCreator
 Interface d'un créateur de requête. Plus de détails...
 
class  IRequestList
 Liste de requête de messages. Plus de détails...
 
class  ISerializeDispatcher
 Interface des messages de sérialisation. Plus de détails...
 
class  ISerializeMessage
 
class  ISerializeMessageList
 Interface d'une liste de messages de sérialisation. Plus de détails...
 
class  IStat
 Statistiques sur le parallélisme. Plus de détails...
 
class  ISubRequest
 
class  MessageId
 MessageId. Plus de détails...
 
class  MessagePassingMng
 Gestionnaire des échanges de messages. Plus de détails...
 
class  MessageRank
 Rang d'un message. Plus de détails...
 
class  MessageSourceInfo
 Informations sur la source d'un message. Plus de détails...
 
class  MessageTag
 Tag d'un message. Plus de détails...
 
class  OneStat
 Statistique sur un message. Plus de détails...
 
class  PointToPointMessageInfo
 Informations pour envoyer/recevoir un message point à point. Plus de détails...
 
class  PointToPointSerializerMng
 Communications point à point par des 'ISerializer'. Plus de détails...
 
class  Request
 Requête d'un message. Plus de détails...
 
class  Stat
 
class  StatData
 

Énumérations

enum  eReduceType
 Types des réductions supportées. Plus de détails...
 
enum  eWaitType
 Type d'attente. Plus de détails...
 
enum  eBlockingType
 Type indiquant si un message est bloquant ou non. Plus de détails...
 
enum  ePointToPointMessageType
 Type de message point à point. Plus de détails...
 

Fonctions

std::ostream & operator<< (std::ostream &o, const MessageId &pmessage)
 
Request mpSend (IMessagePassingMng *pm, const ISerializer *values, const PointToPointMessageInfo &message)
 Message d'envoi utilisant un ISerializer.
 
Request mpReceive (IMessagePassingMng *pm, ISerializer *values, const PointToPointMessageInfo &message)
 Message de réception utilisant un ISerializer.
 
void mpAllGather (IMessagePassingMng *pm, const ISerializer *send_serializer, ISerializer *recv_serializer)
 Message allGather() pour une sérialisation.
 
C void mpGather (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf, Int32 rank)
 
C Request mpNonBlockingAllGather (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf)
 
C Request mpNonBlockingGather (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf, Int32 rank)
 
C void mpAllGatherVariable (IMessagePassingMng *pm, Span< const char > send_buf, Array< char > &recv_buf)
 
C void mpGatherVariable (IMessagePassingMng *pm, Span< const char > send_buf, Array< char > &recv_buf, Int32 rank)
 
C void mpGather (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf, Int32 rank)
 
C void mpScatterVariable (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf, Int32 root)
 
C char mpAllReduce (IMessagePassingMng *pm, eReduceType rt, char v)
 
C Request mpNonBlockingAllReduce (IMessagePassingMng *pm, eReduceType rt, Span< const char > send_buf, Span< char > recv_buf)
 
C void mpBroadcast (IMessagePassingMng *pm, Span< char > send_buf, Int32 rank)
 
C Request mpNonBlockingBroadcast (IMessagePassingMng *pm, Span< char > send_buf, Int32 rank)
 
C void mpAllToAll (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf, Int32 count)
 
C Request mpNonBlockingAllToAll (IMessagePassingMng *pm, Span< const char > send_buf, Span< char > recv_buf, Int32 count)
 
C void mpAllToAllVariable (IMessagePassingMng *pm, Span< const char > send_buf, ConstArrayView< Int32 > send_count, ConstArrayView< Int32 > send_index, Span< char > recv_buf, ConstArrayView< Int32 > recv_count, ConstArrayView< Int32 > recv_index)
 
C Request mpNonBlockingAllToAllVariable (IMessagePassingMng *pm, Span< const char > send_buf, ConstArrayView< Int32 > send_count, ConstArrayView< Int32 > send_index, Span< char > recv_buf, ConstArrayView< Int32 > recv_count, ConstArrayView< Int32 > recv_index)
 
Ref< IRequestListmpCreateRequestListRef (IMessagePassingMng *pm)
 Créé une liste de requêtes.
 
void mpWaitAll (IMessagePassingMng *pm, ArrayView< Request > requests)
 Bloque tant que les requêtes de requests ne sont pas terminées.
 
void mpWait (IMessagePassingMng *pm, Request request)
 Bloque jusqu'à ce que la requête request soit terminée.
 
void mpWaitSome (IMessagePassingMng *pm, ArrayView< Request > requests, ArrayView< bool > indexes)
 Bloque jusqu'à ce qu'au moins une des requêtes de request soit terminée.
 
void mpTestSome (IMessagePassingMng *pm, ArrayView< Request > requests, ArrayView< bool > indexes)
 Teste si des requêtes de request sont terminées.
 
MessageId mpProbe (IMessagePassingMng *pm, const PointToPointMessageInfo &message)
 Teste si un message est disponible.
 
MessageSourceInfo mpLegacyProbe (IMessagePassingMng *pm, const PointToPointMessageInfo &message)
 Teste si un message est disponible.
 
IMessagePassingMngmpSplit (IMessagePassingMng *pm, bool keep)
 Créé une nouvelle instance de IMessagePassingMng.
 
void mpBarrier (IMessagePassingMng *pm)
 Effectue une barrière.
 
Request mpNonBlockingBarrier (IMessagePassingMng *pm)
 Effectue une barrière non bloquante.
 
Ref< ISerializeMessageListmpCreateSerializeMessageListRef (IMessagePassingMng *pm)
 Créé une liste de messages de sérialisation.
 

Description détaillée

Espace de nommage contenant les types et déclarations qui gèrent le mécanisme de parallélisme par échange de message.

Documentation du type de l'énumération

◆ eBlockingType

Type indiquant si un message est bloquant ou non.

Définition à la ligne 119 du fichier MessagePassingGlobal.h.

◆ ePointToPointMessageType

Type de message point à point.

Définition à la ligne 130 du fichier MessagePassingGlobal.h.

◆ eReduceType

Types des réductions supportées.

Définition à la ligne 98 du fichier MessagePassingGlobal.h.

◆ eWaitType

Type d'attente.

Définition à la ligne 108 du fichier MessagePassingGlobal.h.

Documentation des fonctions

◆ mpAllGather()

void Arcane::MessagePassing::mpAllGather ( IMessagePassingMng * pm,
const ISerializer * send_serializer,
ISerializer * receive_serialize )

Message allGather() pour une sérialisation.

Définition à la ligne 307 du fichier Messages.cc.

◆ mpAllGatherVariable()

C void Arcane::MessagePassing::mpAllGatherVariable ( IMessagePassingMng * pm,
Span< const char > send_buf,
Array< char > & recv_buf )

AllGatherVariable

◆ mpAllReduce()

C char Arcane::MessagePassing::mpAllReduce ( IMessagePassingMng * pm,
eReduceType rt,
char v )

AllReduce

◆ mpAllToAll()

C void Arcane::MessagePassing::mpAllToAll ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf,
Int32 count )

AllToAll

◆ mpAllToAllVariable()

C void Arcane::MessagePassing::mpAllToAllVariable ( IMessagePassingMng * pm,
Span< const char > send_buf,
ConstArrayView< Int32 > send_count,
ConstArrayView< Int32 > send_index,
Span< char > recv_buf,
ConstArrayView< Int32 > recv_count,
ConstArrayView< Int32 > recv_index )

AllToAllVariable

◆ mpBarrier()

void Arcane::MessagePassing::mpBarrier ( IMessagePassingMng * pm)

Effectue une barrière.

Bloque tant que tous les rangs n'ont pas atteint cette appel.

Définition à la ligne 247 du fichier Messages.cc.

◆ mpBroadcast()

C void Arcane::MessagePassing::mpBroadcast ( IMessagePassingMng * pm,
Span< char > send_buf,
Int32 rank )

Broadcast

◆ mpCreateRequestListRef()

Ref< IRequestList > Arcane::MessagePassing::mpCreateRequestListRef ( IMessagePassingMng * pm)

Créé une liste de requêtes.

Voir également
IRequestList

Définition à la ligne 153 du fichier Messages.cc.

◆ mpCreateSerializeMessageListRef()

Ref< ISerializeMessageList > Arcane::MessagePassing::mpCreateSerializeMessageListRef ( IMessagePassingMng * pm)

Créé une liste de messages de sérialisation.

Voir également
ISerializeMessageList

Définition à la ligne 267 du fichier Messages.cc.

◆ mpGather() [1/2]

C void Arcane::MessagePassing::mpGather ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf,
Int32 rank )

gather

◆ mpGather() [2/2]

C void Arcane::MessagePassing::mpGather ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf,
Int32 rank )

gather

◆ mpGatherVariable()

C void Arcane::MessagePassing::mpGatherVariable ( IMessagePassingMng * pm,
Span< const char > send_buf,
Array< char > & recv_buf,
Int32 rank )

GatherVariable

◆ mpLegacyProbe()

MessageSourceInfo Arcane::MessagePassing::mpLegacyProbe ( IMessagePassingMng * pm,
const PointToPointMessageInfo & message )

Teste si un message est disponible.

Cette fonction permet de savoir si un message issu du couple (rang,tag) est disponible. message doit avoir été initialisé avec un couple (rang,tag) (message.isRankTag() doit être vrai).

Retourne une instance de MessageSourceInfo. En mode non bloquant, si aucun message n'est disponible, alors MessageSourceInfo::isValid() vaut false pour l'instance retournée.

La sémantique est identique à celle de MPI_Probe. Il est donc possible si on appelle plusieurs fois cette fonction de retourner le même message. Il n'est pas garanti non plus si on fait un mpReceive() avec l'instance retournée d'avoir le même message. Pour toutes ces raisons il est préférable d'utiliser la fonction mpProbe().

Définition à la ligne 228 du fichier Messages.cc.

◆ mpNonBlockingAllGather()

C Request Arcane::MessagePassing::mpNonBlockingAllGather ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf )

AllGather non bloquant

◆ mpNonBlockingAllReduce()

C Request Arcane::MessagePassing::mpNonBlockingAllReduce ( IMessagePassingMng * pm,
eReduceType rt,
Span< const char > send_buf,
Span< char > recv_buf )

AllReduce non bloquant

◆ mpNonBlockingAllToAll()

C Request Arcane::MessagePassing::mpNonBlockingAllToAll ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf,
Int32 count )

AllToAll non bloquant

◆ mpNonBlockingAllToAllVariable()

C Request Arcane::MessagePassing::mpNonBlockingAllToAllVariable ( IMessagePassingMng * pm,
Span< const char > send_buf,
ConstArrayView< Int32 > send_count,
ConstArrayView< Int32 > send_index,
Span< char > recv_buf,
ConstArrayView< Int32 > recv_count,
ConstArrayView< Int32 > recv_index )

AllToAllVariable non bloquant

◆ mpNonBlockingBarrier()

Request Arcane::MessagePassing::mpNonBlockingBarrier ( IMessagePassingMng * pm)

Effectue une barrière non bloquante.

Définition à la ligne 257 du fichier Messages.cc.

◆ mpNonBlockingBroadcast()

C Request Arcane::MessagePassing::mpNonBlockingBroadcast ( IMessagePassingMng * pm,
Span< char > send_buf,
Int32 rank )

Broadcast non bloquant

◆ mpNonBlockingGather()

C Request Arcane::MessagePassing::mpNonBlockingGather ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf,
Int32 rank )

Gather non bloquant

◆ mpProbe()

MessageId Arcane::MessagePassing::mpProbe ( IMessagePassingMng * pm,
const PointToPointMessageInfo & message )

Teste si un message est disponible.

Cette fonction permet de savoir si un message issu du couple (rang,tag) est disponible. message doit avoir été initialisé avec un couple (rang,tag) (message.isRankTag() doit être vrai).

Retourne une instance de MessageId.

En mode non bloquant, si aucun message n'est disponible, alors MessageId::isValid() vaut false pour l'instance retournée.

La sémantique est identique à celle de MPI_Mprobe. Le message retourné est enlevé de la liste des messages et donc un appel ultérieur à cette méthode avec les mêmes paramètres retournera un autre message ou un message nul. Si on souhaite un comportement identique à MPI_Iprobe()/MPI_Probe() alors il faut utiliser mpLegacyProbe().

Définition à la ligne 218 du fichier Messages.cc.

◆ mpReceive()

Request Arcane::MessagePassing::mpReceive ( IMessagePassingMng * pm,
ISerializer * values,
const PointToPointMessageInfo & message )

Message de réception utilisant un ISerializer.

Définition à la ligne 288 du fichier Messages.cc.

◆ mpScatterVariable()

C void Arcane::MessagePassing::mpScatterVariable ( IMessagePassingMng * pm,
Span< const char > send_buf,
Span< char > recv_buf,
Int32 root )

ScatterVariable

◆ mpSend()

Request Arcane::MessagePassing::mpSend ( IMessagePassingMng * pm,
const ISerializer * values,
const PointToPointMessageInfo & message )

Message d'envoi utilisant un ISerializer.

Définition à la ligne 277 du fichier Messages.cc.

◆ mpSplit()

IMessagePassingMng * Arcane::MessagePassing::mpSplit ( IMessagePassingMng * pm,
bool keep )

Créé une nouvelle instance de IMessagePassingMng.

keep est vrai si ce rang est présent dans le nouveau communicateur.

L'instance retournée doit être détruite par l'appel à l'opérateur operator delele().

Définition à la ligne 238 du fichier Messages.cc.

◆ mpTestSome()

void Arcane::MessagePassing::mpTestSome ( IMessagePassingMng * pm,
ArrayView< Request > requests,
ArrayView< bool > indexes )

Teste si des requêtes de request sont terminées.

En retour, le tableaux indexes contient la valeur true pour indiquer qu'une requête est terminée.

Définition à la ligne 188 du fichier Messages.cc.

◆ mpWait()

void Arcane::MessagePassing::mpWait ( IMessagePassingMng * pm,
Request request )

Bloque jusqu'à ce que la requête request soit terminée.

Définition à la ligne 171 du fichier Messages.cc.

◆ mpWaitAll()

void Arcane::MessagePassing::mpWaitAll ( IMessagePassingMng * pm,
ArrayView< Request > requests )

Bloque tant que les requêtes de requests ne sont pas terminées.

Définition à la ligne 162 du fichier Messages.cc.

◆ mpWaitSome()

void Arcane::MessagePassing::mpWaitSome ( IMessagePassingMng * pm,
ArrayView< Request > requests,
ArrayView< bool > indexes )

Bloque jusqu'à ce qu'au moins une des requêtes de request soit terminée.

En retour, le tableaux indexes contient la valeur true pour indiquer qu'une requête est terminée.

Définition à la ligne 179 du fichier Messages.cc.

◆ operator<<()

std::ostream & Arccore::MessagePassing::operator<< ( std::ostream & o,
const MessageId & pmessage )
inline

Définition à la ligne 159 du fichier SendReceiveInfo.h.