Interface d'un service de synchronisation de variable. Plus de détails...
#include <arcane/impl/internal/VariableSynchronizer.h>
Classes | |
class | SyncMessage |
Gestion d'une synchronisation. Plus de détails... | |
Fonctions membres publiques | |
VariableSynchronizer (IParallelMng *pm, const ItemGroup &group, Ref< IDataSynchronizeImplementationFactory > implementation_factory) | |
IParallelMng * | parallelMng () override |
Gestionnaire parallèle associé | |
const ItemGroup & | itemGroup () override |
Groupe d'entité servant à la synchronisation. | |
void | compute () override |
Création de la liste des éléments de synchronisation. | |
void | changeLocalIds (Int32ConstArrayView old_to_new_ids) override |
Appelé lorsque les numéros locaux des entités sont modifiés. | |
void | synchronize (IVariable *var) override |
Synchronise la variable var en mode bloquant. | |
void | synchronize (IVariable *var, Int32ConstArrayView local_ids) override |
Synchronise la variable var sur les entités local_ids en mode bloquant. | |
void | synchronize (VariableCollection vars) override |
Synchronise les variables vars en mode bloquant. | |
void | synchronize (VariableCollection vars, Int32ConstArrayView local_ids) override |
Synchronise les variables vars en mode bloquant. | |
Int32ConstArrayView | communicatingRanks () override |
Rangs des sous-domaines avec lesquels on communique. | |
Int32ConstArrayView | sharedItems (Int32 index) override |
Liste des ids locaux des entités partagées avec un sous-domaine. | |
Int32ConstArrayView | ghostItems (Int32 index) override |
Liste des ids locaux des entités fantômes avec un sous-domaine. | |
void | synchronizeData (IData *data) override |
Synchronise la donnée data. | |
EventObservable< const VariableSynchronizerEventArgs & > & | onSynchronized () override |
Evènement envoyé en début et fin de synchronisation. | |
IVariableSynchronizerMng * | synchronizeMng () const |
Fonctions membres publiques hérités de Arccore::TraceAccessor | |
TraceAccessor (ITraceMng *m) | |
Construit un accesseur via le gestionnaire de trace m. | |
TraceAccessor (const TraceAccessor &rhs) | |
Constructeur par recopie. | |
TraceAccessor & | operator= (const TraceAccessor &rhs) |
Opérateur de recopie. | |
virtual | ~TraceAccessor () |
Libère les ressources. | |
ITraceMng * | traceMng () const |
Gestionnaire de trace. | |
TraceMessage | info () const |
Flot pour un message d'information. | |
TraceMessage | pinfo () const |
Flot pour un message d'information en parallèle. | |
TraceMessage | info (char category) const |
Flot pour un message d'information d'une catégorie donnée. | |
TraceMessage | pinfo (char category) const |
Flot pour un message d'information parallèle d'une catégorie donnée. | |
TraceMessage | info (bool v) const |
Flot pour un message d'information. | |
TraceMessage | warning () const |
Flot pour un message d'avertissement. | |
TraceMessage | pwarning () const |
TraceMessage | error () const |
Flot pour un message d'erreur. | |
TraceMessage | perror () const |
TraceMessage | log () const |
Flot pour un message de log. | |
TraceMessage | plog () const |
Flot pour un message de log. | |
TraceMessage | logdate () const |
Flot pour un message de log précédé de la date. | |
TraceMessage | fatal () const |
Flot pour un message d'erreur fatale. | |
TraceMessage | pfatal () const |
Flot pour un message d'erreur fatale en parallèle. | |
TraceMessageDbg | debug (Trace::eDebugLevel=Trace::Medium) const |
Flot pour un message de debug. | |
Trace::eDebugLevel | configDbgLevel () const |
Niveau debug du fichier de configuration. | |
TraceMessage | info (Int32 verbose_level) const |
Flot pour un message d'information d'un niveau donné | |
TraceMessage | linfo () const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
TraceMessage | linfo (Int32 relative_level) const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
void | fatalMessage (const StandaloneTraceMessage &o) const |
Fonctions membres privées | |
void | _synchronize (IVariable *var, SyncMessage *message) |
void | _synchronizeMulti (const VariableCollection &vars, SyncMessage *message) |
bool | _canSynchronizeMulti (const VariableCollection &vars) |
Indique si les variables de la liste vars peuvent être synchronisées en une seule fois. | |
DataSynchronizeResult | _synchronize (INumericDataInternal *data, bool is_compare_sync) |
SyncMessage * | _buildMessage () |
SyncMessage * | _buildMessage (Ref< DataSynchronizeInfo > &sync_info) |
void | _rebuildMessage (Int32ConstArrayView local_ids) |
void | _sendBeginEvent (VariableSynchronizerEventArgs &args) |
void | _sendEndEvent (VariableSynchronizerEventArgs &args) |
void | _sendEvent (VariableSynchronizerEventArgs &args) |
void | _checkCreateTimer () |
void | _doSynchronize (SyncMessage *message) |
void | _setCurrentDevice () |
Positionne le device associé à notre RunQueue comme le device courant. | |
Amis | |
class | VariableSynchronizerComputeList |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arccore::TraceAccessor | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
Interface d'un service de synchronisation de variable.
Une instance de cette classe est créée via IParallelMng::createVariableSynchronizer(). Une instance est associée à un groupe d'entité. Il faut appeller la fonction compute() pour calculer les infos de synchronisation.
Définition à la ligne 52 du fichier VariableSynchronizer.h.
Arcane::VariableSynchronizer::VariableSynchronizer | ( | IParallelMng * | pm, |
const ItemGroup & | group, | ||
Ref< IDataSynchronizeImplementationFactory > | implementation_factory | ||
) |
Définition à la ligne 197 du fichier VariableSynchronizer.cc.
|
override |
Définition à la ligne 235 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 245 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 262 du fichier VariableSynchronizer.cc.
|
private |
Indique si les variables de la liste vars peuvent être synchronisées en une seule fois.
Pour que cela soit possible, il faut que ces variables ne soient pas partielles et reposent sur le même ItemGroup (donc soient de la même famille)
Définition à la ligne 544 du fichier VariableSynchronizer.cc.
Référencé par synchronize(), et synchronize().
|
private |
Définition à la ligne 649 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 314 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 352 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 614 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 625 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 639 du fichier VariableSynchronizer.cc.
|
private |
Positionne le device associé à notre RunQueue comme le device courant.
Si on utilise une RunQueue, positionne le device associé à celui de cette RunQueue. Cela permet de garantir que les allocations mémoires effectuées lors des synchronisations seront sur le bon device.
Définition à la ligne 665 du fichier VariableSynchronizer.cc.
Références Arcane::Accelerator::Runner::isInitialized(), et Arcane::Accelerator::Runner::setAsCurrentDevice().
Référencé par compute().
|
private |
Définition à la ligne 503 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 422 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 569 du fichier VariableSynchronizer.cc.
|
overridevirtual |
Appelé lorsque les numéros locaux des entités sont modifiés.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 525 du fichier VariableSynchronizer.cc.
Références Arccore::TraceAccessor::info(), et Arcane::ItemGroup::name().
|
overridevirtual |
Rangs des sous-domaines avec lesquels on communique.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 587 du fichier VariableSynchronizer.cc.
|
overridevirtual |
Création de la liste des éléments de synchronisation.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 299 du fichier VariableSynchronizer.cc.
Références _setCurrentDevice(), et Arccore::TraceAccessor::info().
|
overridevirtual |
Liste des ids locaux des entités fantômes avec un sous-domaine.
Le rang du sous-domaine est celui de communicatingRanks()[index].
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 605 du fichier VariableSynchronizer.cc.
|
inlineoverridevirtual |
Groupe d'entité servant à la synchronisation.
L'implémentation actuelle supporte uniquement le groupe de toutes les entités d'une famille.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 72 du fichier VariableSynchronizer.h.
|
inlineoverridevirtual |
Evènement envoyé en début et fin de synchronisation.
Cet évènement est envoyé lors des appels aux méthodes de synchronisation synchronize(IVariable* var) et synchronize(VariableCollection vars). Si on souhaite être notifié des synchronisations pour toutes les instances de IVariableSynchronizer, il faut utiliser IVariableMng::synchronizerMng().
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 94 du fichier VariableSynchronizer.h.
|
inlineoverridevirtual |
Gestionnaire parallèle associé
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 67 du fichier VariableSynchronizer.h.
|
overridevirtual |
Liste des ids locaux des entités partagées avec un sous-domaine.
Le rang du sous-domaine est celui de communicatingRanks()[index].
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 596 du fichier VariableSynchronizer.cc.
Synchronise la variable var en mode bloquant.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 441 du fichier VariableSynchronizer.cc.
|
overridevirtual |
Synchronise la variable var sur les entités local_ids en mode bloquant.
Seules les entités listées dans local_ids seront synchronisées. Attention : une entité présente dans cette liste sur un sous-domaine doit être présente dans cette liste pour tout autre sous-domaine qui possède cette entité.
Réimplémentée à partir de Arcane::IVariableSynchronizer.
Définition à la ligne 450 du fichier VariableSynchronizer.cc.
|
overridevirtual |
Synchronise les variables vars en mode bloquant.
Toutes les variables doivent être issues de la même famille et de ce groupe d'entité.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 460 du fichier VariableSynchronizer.cc.
Références _canSynchronizeMulti().
|
overridevirtual |
Synchronise les variables vars en mode bloquant.
Toutes les variables doivent être issues de la même famille et de ce groupe d'entité.
Seules les entités listées dans local_ids seront synchronisées. Attention : une entité présente dans cette liste sur un sous-domaine doit être présente dans cette liste pour tout autre sous-domaine qui possède cette entité.
Réimplémentée à partir de Arcane::IVariableSynchronizer.
Définition à la ligne 480 du fichier VariableSynchronizer.cc.
Références _canSynchronizeMulti().
Synchronise la donnée data.
La donnée data doit être associée à une variable pour laquelle il est valide d'appeler synchronize(). Cette méthode est interne à Arcane.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 512 du fichier VariableSynchronizer.cc.
Références Arcane::IData::_commonInternal(), ARCANE_CHECK_POINTER, et ARCANE_FATAL.
|
inline |
Définition à la ligne 101 du fichier VariableSynchronizer.h.
Définition à la ligne 56 du fichier VariableSynchronizer.h.
Définition à la ligne 110 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 115 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 113 du fichier VariableSynchronizer.h.
Définition à la ligne 121 du fichier VariableSynchronizer.h.
Définition à la ligne 109 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 106 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 112 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 105 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 120 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 119 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 118 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 116 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 107 du fichier VariableSynchronizer.h.
Définition à la ligne 108 du fichier VariableSynchronizer.h.
Définition à la ligne 111 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 114 du fichier VariableSynchronizer.h.