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< Int32 > | machineRanks () 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 | |
| IParallelMngInternal * | m_pm_internal |
| Ref< MessagePassing::IDynamicMachineMemoryWindowBaseInternal > | m_node_window_base |
| Int32 | m_sizeof_elem |
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.
| Arcane::DynamicMachineMemoryWindowBase::DynamicMachineMemoryWindowBase | ( | IParallelMng * | pm, |
| Int64 | sizeof_segment, | ||
| Int32 | sizeof_elem ) |
Constructeur.
| pm | Le parallelMng à utiliser. |
| sizeof_segment | La taille total de notre segment (en octet / doit être divisible par sizeof_elem). |
| sizeof_elem | La taille d'un élément de notre segment (en octet). |
Définition à la ligne 33 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
Voir la documentation de add(Span<const std::byte> elem).
Définition à la ligne 106 du fichier DynamicMachineMemoryWindowBase.cc.
| void Arcane::DynamicMachineMemoryWindowBase::add | ( | Span< const std::byte > | elem | ) |
Méthode permettant d'ajouter des élements dans notre segment.
Appel collectif.
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.
| elem | Les éléments à ajouter. |
Définition à la ligne 97 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
Voir la documentation de addToAnotherSegment(Int32 rank, Span<const Type> elem).
Définition à la ligne 124 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
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.
| rank | Le rang du sous-domaine avec le segment à modifier. |
| elem | Les éléments à ajouter. |
Définition à la ligne 115 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
| 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.
Définition à la ligne 43 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
| 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.
| new_nb_elem_segment_capacity | La nouvelle capacité demandée (en nombre d'éléments, pas en octet). |
Définition à la ligne 133 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
| 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).
| new_nb_elem_segment | La 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 :| Span< const std::byte > Arcane::DynamicMachineMemoryWindowBase::segmentConstView | ( | ) | const |
Méthode permettant d'obtenir une vue sur notre segment.
Appel non collectif.
Définition à la ligne 79 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
| rank | Le rang du sous-domaine. |
Définition à la ligne 88 du fichier DynamicMachineMemoryWindowBase.cc.
| Span< std::byte > Arcane::DynamicMachineMemoryWindowBase::segmentView | ( | ) |
Méthode permettant d'obtenir une vue sur notre segment.
Appel non collectif.
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 :Méthode permettant d'obtenir une vue sur le segment d'un autre sous-domaine du noeud.
Appel non collectif.
| rank | Le rang du sous-domaine. |
Définition à la ligne 70 du fichier DynamicMachineMemoryWindowBase.cc.
| 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.
|
private |
Définition à la ligne 258 du fichier DynamicMachineMemoryWindowBase.h.
|
private |
Définition à la ligne 257 du fichier DynamicMachineMemoryWindowBase.h.
|
private |
Définition à la ligne 259 du fichier DynamicMachineMemoryWindowBase.h.