Interface d'un service de synchronisation de variable. Plus de détails...
#include <arcane/core/IVariableSynchronizer.h>
Fonctions membres publiques | |
virtual IParallelMng * | parallelMng ()=0 |
Gestionnaire parallèle associé | |
virtual const ItemGroup & | itemGroup ()=0 |
Groupe d'entité servant à la synchronisation. | |
virtual void | compute ()=0 |
Recalcule les infos de synchronisation. | |
virtual void | changeLocalIds (Int32ConstArrayView old_to_new_ids)=0 |
Appelé lorsque les numéros locaux des entités sont modifiés. | |
virtual void | synchronize (IVariable *var)=0 |
Synchronise la variable var en mode bloquant. | |
virtual void | synchronize (IVariable *var, Int32ConstArrayView local_ids) |
Synchronise la variable var sur les entités local_ids en mode bloquant. | |
virtual void | synchronize (VariableCollection vars)=0 |
Synchronise les variables vars en mode bloquant. | |
virtual void | synchronize (VariableCollection vars, Int32ConstArrayView local_ids) |
Synchronise les variables vars en mode bloquant. | |
virtual Int32ConstArrayView | communicatingRanks ()=0 |
Rangs des sous-domaines avec lesquels on communique. | |
virtual Int32ConstArrayView | sharedItems (Int32 index)=0 |
Liste des ids locaux des entités partagées avec un sous-domaine. | |
virtual Int32ConstArrayView | ghostItems (Int32 index)=0 |
Liste des ids locaux des entités fantômes avec un sous-domaine. | |
virtual void | synchronizeData (IData *data)=0 |
Synchronise la donnée data. | |
virtual EventObservable< const VariableSynchronizerEventArgs & > & | onSynchronized ()=0 |
Evènement envoyé en début et fin de synchronisation. | |
Interface d'un service de synchronisation de variable.
Cette classe est gérée par Arcane et il n'est en générale par nécessaire de l'utiliser directement. Si on souhaite syncrhoniser une variable, il suffit d'appeler la méthode VariableRef::synchronize().
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. Si les entités sont compactées, il faut appeler changeLocalIds().
Définition à la ligne 41 du fichier IVariableSynchronizer.h.
|
inlinevirtual |
Définition à la ligne 45 du fichier IVariableSynchronizer.h.
|
pure virtual |
Appelé lorsque les numéros locaux des entités sont modifiés.
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
Référencé par Arcane::mesh::ItemFamily::compactVariablesAndGroups().
|
pure virtual |
Rangs des sous-domaines avec lesquels on communique.
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
Recalcule les infos de synchronisation.
Cette opération est collective.
Cette fonction doit être rappelée si les entités de itemGroup() changent de propriétaire ou si le groupe lui-même évolue. TODO: appeler cette fonction automatiquement si besoin.
Implémenté dans Arcane::VariableSynchronizer, Arcane::NullVariableSynchronizer, et Arcane::MpiVariableSynchronizer.
|
pure virtual |
Liste des ids locaux des entités fantômes avec un sous-domaine.
Le rang du sous-domaine est celui de communicatingRanks()[index].
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
Groupe d'entité servant à la synchronisation.
L'implémentation actuelle supporte uniquement le groupe de toutes les entités d'une famille.
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
|
pure virtual |
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émenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
|
pure virtual |
Gestionnaire parallèle associé
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
|
pure virtual |
Liste des ids locaux des entités partagées avec un sous-domaine.
Le rang du sous-domaine est celui de communicatingRanks()[index].
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
Synchronise la variable var en mode bloquant.
Implémenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
|
virtual |
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 dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
Définition à la ligne 296 du fichier InterfaceImpl.cc.
Références ARCANE_THROW.
|
pure virtual |
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émenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
|
virtual |
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 dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.
Définition à la ligne 302 du fichier InterfaceImpl.cc.
Références ARCANE_THROW.
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émenté dans Arcane::VariableSynchronizer, et Arcane::NullVariableSynchronizer.