Interface d'un message de sérialisation entre IMessagePassingMng. Plus de détails...
Types publics | |
enum | eMessageType { MT_Send , MT_Recv , MT_Broadcast } |
enum class | eStrategy { Default , OneMessage } |
Stratégie d'envoi/réception. Plus de détails... | |
Fonctions membres publiques | |
virtual | ~ISerializeMessage ()=default |
Libère les ressources. | |
virtual bool | isSend () const =0 |
true s'il faut envoyer, false s'il faut recevoir | |
virtual eMessageType | messageType () const =0 |
Type du message. | |
virtual Int32 | destRank () const =0 |
Rang du destinataire (si isSend() est vrai) ou envoyeur. | |
virtual MessageRank | destination () const =0 |
Rang du destinataire (si isSend() est vrai) ou de l'envoyeur. | |
virtual Int32 | origRank () const =0 |
Rang de l'envoyeur du message Voir aussi destRank() pour une interprétation suivant la valeur de isSend() | |
virtual MessageRank | source () const =0 |
Rang de l'envoyeur du message. | |
virtual ISerializer * | serializer ()=0 |
Sérialiseur. | |
virtual bool | finished () const =0 |
true si le message est terminé | |
virtual void | setFinished (bool v)=0 |
Positionne l'état 'fini' du message. | |
virtual void | setTag (Int32 tag)=0 |
virtual void | setInternalTag (MessageTag tag)=0 |
Positionne un tag interne pour le message. | |
virtual Int32 | tag () const =0 |
Tag interne du message. | |
virtual MessageTag | internalTag () const =0 |
Tag interne du message. | |
virtual MessageId | _internalMessageId () const =0 |
Identificant du message. | |
virtual void | setStrategy (eStrategy strategy)=0 |
Positionne la stratégie d'envoi/réception. | |
virtual eStrategy | strategy () const =0 |
Stratégie utilisée pour les envois/réceptions. | |
virtual bool | isProcessed () const =0 |
Indique si le message a déjà été traité. | |
Interface d'un message de sérialisation entre IMessagePassingMng.
Un message de sérialisation consiste en une série d'octets envoyés d'un rang source() à un rang destination(). Si isSend() est vrai, c'est source() qui envoie à destination(), sinon c'est l'inverse. S'il s'agit d'un message de réception, le serializer() est alloué et remplit automatiquement. Pour que le parallélisme fonctionne correctement, il faut qu'à un message d'envoi corresponde un message de réception complémentaire (envoyé par le rang destination()).
Le message peut-être non bloquant. Un message peut-être détruit lorsque sa propriété finished() est vrai.
Définition à la ligne 44 du fichier arccore/src/message_passing/arccore/message_passing/ISerializeMessage.h.
enum Arcane::MessagePassing::ISerializeMessage::eMessageType |
Définition à la ligne 48 du fichier arccore/src/message_passing/arccore/message_passing/ISerializeMessage.h.
|
strong |
Stratégie d'envoi/réception.
Valeurs énumérées | |
---|---|
Default | Stratégie par défaut. |
OneMessage | Stratégie utilisant un seul message si possible. Cela suppose d'utiliser la fonction mpProbe() pour connaitre la taille du message avant de poster la réception. |
Définition à la ligne 55 du fichier arccore/src/message_passing/arccore/message_passing/ISerializeMessage.h.
|
pure virtual |
Identificant du message.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références _internalMessageId().
Référencé par _internalMessageId().
|
pure virtual |
Rang du destinataire (si isSend() est vrai) ou de l'envoyeur.
Dans le cas d'une réception, le rang peut valoir nul pour indiquer qu'on souhaite recevoir de n'importe qui. rang en spécifiant A_NULL_RANK.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références destination().
Référencé par Arcane::mesh::FaceUniqueIdBuilder::_exchangeData(), Arcane::mesh::Parallel3EdgeUniqueIdBuilder::_exchangeData(), Arcane::ParallelExchanger::_processExchangeWithControl(), Arcane::Parallel::VariableParallelOperationBase::applyOperation(), destination(), Arcane::mesh::ItemsExchangeInfo2::prepareToSend(), Arcane::mesh::ItemsExchangeInfo2::readAndAllocItems(), Arcane::mesh::ItemsExchangeInfo2::readGroups(), et Arcane::mesh::ItemsExchangeInfo2::removeSentItems().
|
pure virtual |
Rang du destinataire (si isSend() est vrai) ou envoyeur.
Dans le cas d'une réception, il est possible de spécifier n'importe quel rang en spécifiant A_NULL_RANK.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références destRank().
Référencé par destRank().
|
pure virtual |
true si le message est terminé
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références finished().
Référencé par finished().
|
pure virtual |
Tag interne du message.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références internalTag().
Référencé par internalTag().
|
pure virtual |
Indique si le message a déjà été traité.
Si le message a déjà été traité, il n'est pas possible de changer certaines caractéristiques (comme la stratégie ou le tag)
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références isProcessed().
Référencé par isProcessed().
|
pure virtual |
true s'il faut envoyer, false s'il faut recevoir
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Référencé par Arcane::ParallelExchanger::_processExchangeWithControl().
|
pure virtual |
|
pure virtual |
Rang de l'envoyeur du message Voir aussi destRank() pour une interprétation suivant la valeur de isSend()
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références origRank().
Référencé par origRank().
|
pure virtual |
Sérialiseur.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références serializer().
Référencé par Arcane::mesh::FaceUniqueIdBuilder::_computeFacesUniqueIdsParallelV2(), Arcane::mesh::FaceUniqueIdBuilder::_exchangeData(), Arcane::mesh::Parallel3EdgeUniqueIdBuilder::_exchangeData(), Arcane::mesh::GhostLayerBuilder::addGhostChildFromParent(), Arcane::Parallel::VariableParallelOperationBase::applyOperation(), Arcane::mesh::ItemsExchangeInfo2::prepareToSend(), Arcane::mesh::ItemsExchangeInfo2::readAndAllocItems(), Arcane::mesh::ItemsExchangeInfo2::readGroups(), et serializer().
|
pure virtual |
Positionne l'état 'fini' du message.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références setFinished().
Référencé par setFinished().
|
pure virtual |
Positionne un tag interne pour le message.
Ce tag est utile s'il faut envoyer/recevoir plusieurs messages à un même couple origin/destination.
Cette méthode est interne à Arccore.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références setInternalTag(), et tag().
Référencé par setInternalTag().
|
pure virtual |
Positionne la stratégie d'envoi/réception.
La stratégie utilisée doit être la même pour le message envoyé et le message de réception sinon le comportement est indéfini.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références setStrategy(), et strategy().
Référencé par setStrategy().
|
pure virtual |
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références setTag(), et tag().
Référencé par setTag().
|
pure virtual |
Rang de l'envoyeur du message.
Voir aussi destination() pour une interprétation suivant la valeur de isSend()
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références source().
Référencé par Arcane::ParallelExchanger::_processExchangeWithControl(), et source().
|
pure virtual |
Stratégie utilisée pour les envois/réceptions.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références strategy().
Référencé par setStrategy(), et strategy().
|
pure virtual |
Tag interne du message.
Implémenté dans Arcane::MessagePassing::BasicSerializeMessage, Arcane::MessagePassing::internal::BasicSerializeMessage, Arccore::MessagePassing::internal::BasicSerializeMessage, et Arccore::MessagePassing::Mpi::BasicSerializeMessage.
Références tag().
Référencé par setInternalTag(), setTag(), et tag().