Arcane  v4.1.4.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::DynamicMachineMemoryWindowBase

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/DynamicMachineMemoryWindowBase.h>

+ Graphe de collaboration de Arcane::DynamicMachineMemoryWindowBase:

Fonctions membres publiques

 DynamicMachineMemoryWindowBase (IParallelMng *pm, Int64 sizeof_segment, Int32 sizeof_elem)
 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< std::byte > segmentView ()
 Méthode permettant d'obtenir une vue sur notre segment.
 
Span< std::byte > segmentView (Int32 rank)
 Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
 
Span< const std::byte > segmentConstView () const
 Méthode permettant d'obtenir une vue sur notre segment.
 
Span< const std::byte > 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 std::byte > 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 std::byte > 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_nb_elem_segment_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_segment)
 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.
 

Attributs privés

IParallelMngInternalm_pm_internal
 
Ref< MessagePassing::IDynamicMachineMemoryWindowBaseInternalm_node_window_base
 
Int32 m_sizeof_elem
 

Description détaillée

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.

Définition à la ligne 54 du fichier DynamicMachineMemoryWindowBase.h.

Documentation des constructeurs et destructeur

◆ DynamicMachineMemoryWindowBase()

Arcane::DynamicMachineMemoryWindowBase::DynamicMachineMemoryWindowBase ( IParallelMng * pm,
Int64 sizeof_segment,
Int32 sizeof_elem )

Constructeur.

Paramètres
pmLe parallelMng à utiliser.
sizeof_segmentLa taille total de notre segment (en octet / doit être divisible par sizeof_elem).
sizeof_elemLa taille d'un élément de notre segment (en octet).

Définition à la ligne 33 du fichier DynamicMachineMemoryWindowBase.cc.

Documentation des fonctions membres

◆ add() [1/2]

void Arcane::DynamicMachineMemoryWindowBase::add ( )

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 106 du fichier DynamicMachineMemoryWindowBase.cc.

◆ add() [2/2]

void Arcane::DynamicMachineMemoryWindowBase::add ( Span< const std::byte > elem)

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 97 du fichier DynamicMachineMemoryWindowBase.cc.

◆ addToAnotherSegment() [1/2]

void Arcane::DynamicMachineMemoryWindowBase::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.

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 124 du fichier DynamicMachineMemoryWindowBase.cc.

◆ addToAnotherSegment() [2/2]

void Arcane::DynamicMachineMemoryWindowBase::addToAnotherSegment ( Int32 rank,
Span< const std::byte > elem )

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 115 du fichier DynamicMachineMemoryWindowBase.cc.

◆ barrier()

void Arcane::DynamicMachineMemoryWindowBase::barrier ( ) const

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 52 du fichier DynamicMachineMemoryWindowBase.cc.

◆ machineRanks()

ConstArrayView< Int32 > Arcane::DynamicMachineMemoryWindowBase::machineRanks ( ) const

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 43 du fichier DynamicMachineMemoryWindowBase.cc.

◆ reserve() [1/2]

void Arcane::DynamicMachineMemoryWindowBase::reserve ( )

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_nb_elem_segment_capacity).

Définition à la ligne 142 du fichier DynamicMachineMemoryWindowBase.cc.

◆ reserve() [2/2]

void Arcane::DynamicMachineMemoryWindowBase::reserve ( Int64 new_nb_elem_segment_capacity)

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_nb_elem_segment_capacityLa nouvelle capacité demandée (en nombre d'éléments, pas en octet).

Définition à la ligne 133 du fichier DynamicMachineMemoryWindowBase.cc.

◆ resize() [1/2]

void Arcane::DynamicMachineMemoryWindowBase::resize ( )

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_segment).

Définition à la ligne 160 du fichier DynamicMachineMemoryWindowBase.cc.

◆ resize() [2/2]

void Arcane::DynamicMachineMemoryWindowBase::resize ( Int64 new_nb_elem_segment)

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_elem_segmentLa nouvelle taille (en nombre d'éléments, pas en octet).

Définition à la ligne 151 du fichier DynamicMachineMemoryWindowBase.cc.

Référencé par Arcane::DynamicMachineMemoryWindowMemoryAllocator::reallocate().

+ Voici le graphe des appelants de cette fonction :

◆ segmentConstView() [1/2]

Span< const std::byte > Arcane::DynamicMachineMemoryWindowBase::segmentConstView ( ) const

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

Appel non collectif.

Renvoie
Une vue.

Définition à la ligne 79 du fichier DynamicMachineMemoryWindowBase.cc.

◆ segmentConstView() [2/2]

Span< const std::byte > Arcane::DynamicMachineMemoryWindowBase::segmentConstView ( Int32 rank) const

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 88 du fichier DynamicMachineMemoryWindowBase.cc.

◆ segmentView() [1/2]

Span< std::byte > Arcane::DynamicMachineMemoryWindowBase::segmentView ( )

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

Appel non collectif.

Renvoie
Une vue.

Définition à la ligne 61 du fichier DynamicMachineMemoryWindowBase.cc.

Référencé par Arcane::DynamicMachineMemoryWindowMemoryAllocator::deallocate(), et Arcane::DynamicMachineMemoryWindowMemoryAllocator::reallocate().

+ Voici le graphe des appelants de cette fonction :

◆ segmentView() [2/2]

Span< std::byte > Arcane::DynamicMachineMemoryWindowBase::segmentView ( Int32 rank)

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 70 du fichier DynamicMachineMemoryWindowBase.cc.

◆ shrink()

void Arcane::DynamicMachineMemoryWindowBase::shrink ( )

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 169 du fichier DynamicMachineMemoryWindowBase.cc.

Documentation des données membres

◆ m_node_window_base

Ref<MessagePassing::IDynamicMachineMemoryWindowBaseInternal> Arcane::DynamicMachineMemoryWindowBase::m_node_window_base
private

Définition à la ligne 258 du fichier DynamicMachineMemoryWindowBase.h.

◆ m_pm_internal

IParallelMngInternal* Arcane::DynamicMachineMemoryWindowBase::m_pm_internal
private

Définition à la ligne 257 du fichier DynamicMachineMemoryWindowBase.h.

◆ m_sizeof_elem

Int32 Arcane::DynamicMachineMemoryWindowBase::m_sizeof_elem
private

Définition à la ligne 259 du fichier DynamicMachineMemoryWindowBase.h.


La documentation de cette classe a été générée à partir des fichiers suivants :