Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternalabstract

Classe permettant de créer des fenêtres mémoires pour un noeud de calcul. Plus de détails...

#include </__w/arcaneframework.github.io/arcaneframework.github.io/framework/arccore/src/message_passing/arccore/message_passing/internal/IDynamicMachineMemoryWindowBaseInternal.h>

+ Graphe d'héritage de Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal:
+ Graphe de collaboration de Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal:

Fonctions membres publiques

virtual Int32 sizeofOneElem () const =0
 Méthode permettant d'obtenir la taille d'un élement de la fenêtre.
 
virtual ConstArrayView< Int32machineRanks () const =0
 Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
 
virtual void barrier () const =0
 Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour continuer l'exécution.
 
virtual Span< std::byte > segmentView ()=0
 Méthode permettant d'obtenir une vue sur notre segment.
 
virtual Span< std::byte > segmentView (Int32 rank)=0
 Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
 
virtual Span< const std::byte > segmentConstView () const =0
 Méthode permettant d'obtenir une vue sur notre segment.
 
virtual Span< const std::byte > segmentConstView (Int32 rank) const =0
 Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
 
virtual void add (Span< const std::byte > elem)=0
 Méthode permettant d'ajouter des élements dans notre segment.
 
virtual void add ()=0
 
virtual void addToAnotherSegment (Int32 rank, Span< const std::byte > elem)=0
 Méthode permettant d'ajouter des éléments dans le segment d'un autre sous-domaine.
 
virtual void addToAnotherSegment ()=0
 
virtual void reserve (Int64 new_capacity)=0
 Méthode permettant de réserver de l'espace mémoire dans notre segment.
 
virtual void reserve ()=0
 
virtual void resize (Int64 new_size)=0
 Méthode permettant de redimensionner notre segment.
 
virtual void resize ()=0
 
virtual void shrink ()=0
 Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.
 

Description détaillée

Classe permettant de créer des fenêtres mémoires pour un noeud de calcul.

Les segments de ces fenêtres ne seront pas contigüs en mémoire et pourront être redimensionnés (une fenêtre par processus et un segment par fenêtre).

La méthode add() pouvant vouloir redimensionner un segment, et ce redimensionnement étant une opération collective, l'appel à add() est donc une opération collective

Afin d'avoir des add() non concurrents, cette opération est possible uniquement sur notre segment. Pour ajouter des éléments dans le segment d'un autre sous-domaine, les méthodes addToAnotherSegment() sont disponibles.

Définition à la ligne 50 du fichier IDynamicMachineMemoryWindowBaseInternal.h.

Documentation des fonctions membres

◆ add() [1/2]

◆ add() [2/2]

virtual void Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::add ( Span< const std::byte > elem)
pure virtual

Méthode permettant d'ajouter des élements dans notre segment.

Appel collectif.

Note
Ne pas mélanger les appels de cette méthode avec les appels à addToAnotherSegment().

Si le segment est trop petit, il sera redimensionné.

Les sous-domaines ne souhaitant pas ajouter d'éléments peuvent appeler la méthode add() sans paramètres ou cette méthode avec une vue vide.

Paramètres
elemLes éléments à ajouter.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ addToAnotherSegment() [1/2]

◆ addToAnotherSegment() [2/2]

virtual void Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::addToAnotherSegment ( Int32 rank,
Span< const std::byte > elem )
pure virtual

Méthode permettant d'ajouter des éléments dans le segment d'un autre sous-domaine.

Appel collectif.

Note
Ne pas mélanger les appels de cette méthode avec les appels à add().

Deux sous-domaines ne doivent pas ajouter d'éléments dans un même segment de sous-domaine.

Si le segment ciblé est trop petit, il sera redimensionné.

Les sous-domaines ne souhaitant pas ajouter d'éléments peuvent appeler la méthode addToAnotherSegment() sans paramètres.

Paramètres
rankLe sous-domaine dans lequel ajouter des éléments.
elemLes éléments à ajouter.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ barrier()

virtual void Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::barrier ( ) const
pure virtual

◆ machineRanks()

virtual ConstArrayView< Int32 > Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::machineRanks ( ) const
pure virtual

Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.

Appel non collectif.

Renvoie
Une vue contenant les ids des rangs.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ reserve() [1/2]

◆ reserve() [2/2]

virtual void Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::reserve ( Int64 new_capacity)
pure virtual

Méthode permettant de réserver de l'espace mémoire dans notre segment.

Appel collectif.

Cette méthode ne fait rien si new_capacity est inférieur à l'espace mémoire déjà alloué pour le segment. Pour les processus ne souhaitant pas augmenter l'espace mémoire disponible pour leur segment, il est possible de mettre le paramètre new_capacity à 0 ou d'utiliser la méthode reserve() (sans arguments).

MPI réservera un espace avec une taille supérieur ou égale à new_capacity.

Cette méthode ne redimensionne pas le segment, il faudra toujours passer par la méthode add() pour ajouter des éléments.

Pour redimensionner le segment, la méthode resize(Int64 new_size) est disponible.

Paramètres
new_capacityLa nouvelle capacité demandée.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ resize() [1/2]

◆ resize() [2/2]

virtual void Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::resize ( Int64 new_size)
pure virtual

Méthode permettant de redimensionner notre segment.

Appel collectif.

Si la taille fournie est inférieure à la taille actuelle du segment, les éléments situés après la taille fournie seront supprimés.

Pour les processus ne souhaitant pas redimensionner leur segment, il est possible de mettre l'argument new_size à -1 ou d'appeler la méthode resize() (sans arguments).

Paramètres
new_sizeLa nouvelle taille.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ segmentConstView() [1/2]

virtual Span< const std::byte > Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::segmentConstView ( ) const
pure virtual

◆ segmentConstView() [2/2]

virtual Span< const std::byte > Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::segmentConstView ( Int32 rank) const
pure virtual

Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.

Appel non collectif.

Paramètres
rankLe rang du sous-domaine.
Renvoie
Une vue.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ segmentView() [1/2]

virtual Span< std::byte > Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::segmentView ( )
pure virtual

◆ segmentView() [2/2]

virtual Span< std::byte > Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::segmentView ( Int32 rank)
pure virtual

Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.

Appel non collectif.

Paramètres
rankLe rang du sous-domaine.
Renvoie
Une vue.

Implémenté dans Arcane::MessagePassing::HybridDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::Mpi::MpiDynamicMachineMemoryWindowBaseInternal, Arcane::MessagePassing::SharedMemoryDynamicMachineMemoryWindowBaseInternal, et Arcane::SequentialDynamicMachineMemoryWindowBaseInternal.

◆ shrink()

virtual void Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::shrink ( )
pure virtual

◆ sizeofOneElem()

virtual Int32 Arcane::MessagePassing::IDynamicMachineMemoryWindowBaseInternal::sizeofOneElem ( ) const
pure virtual

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