Arcane  v3.16.7.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence du modèle de la classe Arcane::DynamicMachineMemoryWindow< Type >

Classe permettant de créer une fenêtre mémoire partagée entre les sous-domaines d'un même noeud. Plus de détails...

#include <arcane/core/DynamicMachineMemoryWindow.h>

Fonctions membres publiques

 DynamicMachineMemoryWindow (IParallelMng *pm, Int64 nb_elem_segment)
 Constructeur.
 
 DynamicMachineMemoryWindow (IParallelMng *pm)
 Constructeur.
 
ConstArrayView< Int32machineRanks () const
 Méthode permettant d'obtenir les rangs qui possèdent un segment dans la fenêtre.
 
void barrier () const
 Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour continuer l'exécution.
 
Span< Type > segmentView ()
 Méthode permettant d'obtenir une vue sur notre segment.
 
Span< Type > segmentView (Int32 rank)
 Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
 
Span< const Type > segmentConstView () const
 Méthode permettant d'obtenir une vue sur notre segment.
 
Span< const Type > segmentConstView (Int32 rank) const
 Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
 
void add (Span< const Type > elem)
 Méthode permettant d'ajouter des élements dans notre segment.
 
void add ()
 Méthode à appeler par le ou les sous-domaines ne souhaitant pas ajouter d'éléments dans son segment.
 
void addToAnotherSegment (Int32 rank, Span< const Type > elem)
 Méthode permettant d'ajouter des éléments dans le segment d'un autre sous-domaine.
 
void addToAnotherSegment ()
 Méthode à appeler par le ou les sous-domaines ne souhaitant pas ajouter d'éléments dans le segment d'un autre sous-domaine.
 
void reserve (Int64 new_capacity)
 Méthode permettant de réserver de l'espace mémoire dans notre segment.
 
void reserve ()
 Méthode à appeler par le ou les sous-domaines ne souhaitant pas réserver davantage de mémoire pour leurs segments.
 
void resize (Int64 new_nb_elem)
 Méthode permettant de redimensionner notre segment.
 
void resize ()
 Méthode à appeler par le ou les sous-domaines ne souhaitant pas redimensionner leurs segments.
 
void shrink ()
 Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.
 

Description détaillée

template<class Type>
class Arcane::DynamicMachineMemoryWindow< Type >

Classe permettant de créer une fenêtre mémoire partagée entre les sous-domaines d'un même noeud.

Les segments de cette fenêtre ne sont pas contigüs en mémoire et peuvent être redimensionnés.

La méthode add() permet d'ajouter des éléments de manière itérative.

Paramètres du template
TypeLe type des éléments de la fenêtre.

Définition à la ligne 48 du fichier DynamicMachineMemoryWindow.h.

Documentation des constructeurs et destructeur

◆ DynamicMachineMemoryWindow() [1/2]

template<class Type>
Arcane::DynamicMachineMemoryWindow< Type >::DynamicMachineMemoryWindow ( IParallelMng * pm,
Int64 nb_elem_segment )
inline

Constructeur.

Paramètres
pmLe parallelMng à utiliser.
nb_elem_segmentLe nombre d'éléments initial.

Définition à la ligne 58 du fichier DynamicMachineMemoryWindow.h.

◆ DynamicMachineMemoryWindow() [2/2]

template<class Type>
Arcane::DynamicMachineMemoryWindow< Type >::DynamicMachineMemoryWindow ( IParallelMng * pm)
inlineexplicit

Constructeur.

Paramètres
pmLe parallelMng à utiliser.

Définition à la ligne 66 du fichier DynamicMachineMemoryWindow.h.

Documentation des fonctions membres

◆ add() [1/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::add ( )
inline

Méthode à appeler par le ou les sous-domaines ne souhaitant pas ajouter d'éléments dans son segment.

Appel collectif.

Note
Les méthodes add(..) et addToAnotherSegment(..) ne se mélangent pas.

Voir la documentation de add(Span<const std::byte> elem).

Définition à la ligne 175 du fichier DynamicMachineMemoryWindow.h.

◆ add() [2/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::add ( Span< const Type > elem)
inline

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

Appel collectif.

Note
Les méthodes add(..) et addToAnotherSegment(..) ne se mélangent pas.

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.

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

Références Arcane::SpanImpl< T, SizeType, Extent, MinValue >::data(), et Arcane::SpanImpl< T, SizeType, Extent, MinValue >::sizeBytes().

◆ addToAnotherSegment() [1/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::addToAnotherSegment ( )
inline

Méthode à appeler par le ou les sous-domaines ne souhaitant pas ajouter d'éléments dans le segment d'un autre sous-domaine.

Appel collectif.

Note
Les méthodes add(..) et addToAnotherSegment(..) ne se mélangent pas.

Voir la documentation de addToAnotherSegment(Int32 rank, Span<const Type> elem).

Définition à la ligne 215 du fichier DynamicMachineMemoryWindow.h.

◆ addToAnotherSegment() [2/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::addToAnotherSegment ( Int32 rank,
Span< const Type > elem )
inline

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

Appel collectif.

Note
Les méthodes add(..) et addToAnotherSegment(..) ne se mélangent pas.

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 rang du sous-domaine avec le segment à modifier.
elemLes éléments à ajouter.

Définition à la ligne 199 du fichier DynamicMachineMemoryWindow.h.

Références Arcane::SpanImpl< T, SizeType, Extent, MinValue >::data(), et Arcane::SpanImpl< T, SizeType, Extent, MinValue >::sizeBytes().

◆ barrier()

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::barrier ( ) const
inline

Méthode permettant d'attendre que tous les processus/threads du noeud appellent cette méthode pour continuer l'exécution.

Définition à la ligne 89 du fichier DynamicMachineMemoryWindow.h.

◆ machineRanks()

template<class Type>
ConstArrayView< Int32 > Arcane::DynamicMachineMemoryWindow< Type >::machineRanks ( ) const
inline

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.

Définition à la ligne 80 du fichier DynamicMachineMemoryWindow.h.

◆ reserve() [1/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::reserve ( )
inline

Méthode à appeler par le ou les sous-domaines ne souhaitant pas réserver davantage de mémoire pour leurs segments.

Appel collectif.

Voir la documentation de reserve(Int64 new_capacity).

Définition à la ligne 256 du fichier DynamicMachineMemoryWindow.h.

◆ reserve() [2/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::reserve ( Int64 new_capacity)
inline

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 sous-domaines 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).

L'espace qui sera réservé aura 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.

Définition à la ligne 243 du fichier DynamicMachineMemoryWindow.h.

◆ resize() [1/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::resize ( )
inline

Méthode à appeler par le ou les sous-domaines ne souhaitant pas redimensionner leurs segments.

Appel collectif.

Voir la documentation de resize(Int64 new_nb_elem).

Définition à la ligne 288 du fichier DynamicMachineMemoryWindow.h.

◆ resize() [2/2]

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::resize ( Int64 new_nb_elem)
inline

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 sous-domaines 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_nb_elemLa nouvelle taille.

Définition à la ligne 275 du fichier DynamicMachineMemoryWindow.h.

◆ segmentConstView() [1/2]

template<class Type>
Span< const Type > Arcane::DynamicMachineMemoryWindow< Type >::segmentConstView ( ) const
inline

Méthode permettant d'obtenir une vue sur notre segment.

Appel non collectif.

Renvoie
Une vue.

Définition à la ligne 126 du fichier DynamicMachineMemoryWindow.h.

Références Arcane::asSpan().

◆ segmentConstView() [2/2]

template<class Type>
Span< const Type > Arcane::DynamicMachineMemoryWindow< Type >::segmentConstView ( Int32 rank) const
inline

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.

Définition à la ligne 140 du fichier DynamicMachineMemoryWindow.h.

Références Arcane::asSpan().

◆ segmentView() [1/2]

template<class Type>
Span< Type > Arcane::DynamicMachineMemoryWindow< Type >::segmentView ( )
inline

Méthode permettant d'obtenir une vue sur notre segment.

Appel non collectif.

Renvoie
Une vue.

Définition à la ligne 100 du fichier DynamicMachineMemoryWindow.h.

Références Arcane::asSpan().

◆ segmentView() [2/2]

template<class Type>
Span< Type > Arcane::DynamicMachineMemoryWindow< Type >::segmentView ( Int32 rank)
inline

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.

Définition à la ligne 114 du fichier DynamicMachineMemoryWindow.h.

Références Arcane::asSpan().

◆ shrink()

template<class Type>
void Arcane::DynamicMachineMemoryWindow< Type >::shrink ( )
inline

Méthode permettant de réduire l'espace mémoire réservé pour les segments au minimum nécessaire.

Appel collectif.

Définition à la ligne 299 du fichier DynamicMachineMemoryWindow.h.


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