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 50 du fichier VariableSynchronizer.h.
Arcane::VariableSynchronizer::VariableSynchronizer | ( | IParallelMng * | pm, |
const ItemGroup & | group, | ||
Ref< IDataSynchronizeImplementationFactory > | implementation_factory | ||
) |
Définition à la ligne 201 du fichier VariableSynchronizer.cc.
|
override |
Définition à la ligne 239 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 249 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 266 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 548 du fichier VariableSynchronizer.cc.
Référencé par synchronize(), et synchronize().
|
private |
Définition à la ligne 653 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 318 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 356 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 618 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 629 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 643 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 669 du fichier VariableSynchronizer.cc.
Références Arcane::Accelerator::Runner::setAsCurrentDevice().
Référencé par compute().
|
private |
Définition à la ligne 507 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 426 du fichier VariableSynchronizer.cc.
|
private |
Définition à la ligne 573 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 529 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 591 du fichier VariableSynchronizer.cc.
|
overridevirtual |
Création de la liste des éléments de synchronisation.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 303 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 609 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 70 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 92 du fichier VariableSynchronizer.h.
|
inlineoverridevirtual |
Gestionnaire parallèle associé
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 65 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 600 du fichier VariableSynchronizer.cc.
Synchronise la variable var en mode bloquant.
Implémente Arcane::IVariableSynchronizer.
Définition à la ligne 445 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 454 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 464 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 484 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 516 du fichier VariableSynchronizer.cc.
Références Arcane::IData::_commonInternal(), ARCANE_CHECK_POINTER, et ARCANE_FATAL.
|
inline |
Définition à la ligne 99 du fichier VariableSynchronizer.h.
Définition à la ligne 54 du fichier VariableSynchronizer.h.
Définition à la ligne 108 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 113 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 111 du fichier VariableSynchronizer.h.
Définition à la ligne 119 du fichier VariableSynchronizer.h.
Définition à la ligne 107 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 104 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 110 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 103 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 118 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 117 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 116 du fichier VariableSynchronizer.h.
Définition à la ligne 114 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 105 du fichier VariableSynchronizer.h.
Définition à la ligne 106 du fichier VariableSynchronizer.h.
Définition à la ligne 109 du fichier VariableSynchronizer.h.
|
private |
Définition à la ligne 112 du fichier VariableSynchronizer.h.