Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::VariableSynchronizer

Interface d'un service de synchronisation de variable. Plus de détails...

#include <arcane/impl/internal/VariableSynchronizer.h>

+ Graphe d'héritage de Arcane::VariableSynchronizer:
+ Graphe de collaboration de Arcane::VariableSynchronizer:

Classes

class  SyncMessage
 Gestion d'une synchronisation. Plus de détails...
 

Fonctions membres publiques

 VariableSynchronizer (IParallelMng *pm, const ItemGroup &group, Ref< IDataSynchronizeImplementationFactory > implementation_factory)
 
IParallelMngparallelMng () override
 Gestionnaire parallèle associé
 
const ItemGroupitemGroup () 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.
 
IVariableSynchronizerMngsynchronizeMng () 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.
 
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
 
virtual ~TraceAccessor ()
 Libère les ressources.
 
ITraceMngtraceMng () 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.
 

Attributs privés

IParallelMngm_parallel_mng = nullptr
 
ItemGroup m_item_group
 
Ref< DataSynchronizeInfom_sync_info
 
Timerm_sync_timer = nullptr
 
bool m_is_verbose = false
 
bool m_allow_multi_sync = true
 
bool m_trace_sync = false
 
EventObservable< const VariableSynchronizerEventArgs & > m_on_synchronized
 
Ref< IDataSynchronizeImplementationFactorym_implementation_factory
 
IVariableSynchronizerMngm_variable_synchronizer_mng = nullptr
 
SyncMessagem_default_message = nullptr
 
Runnerm_runner = nullptr
 
Ref< DataSynchronizeInfom_partial_sync_info
 
Ref< SyncMessagem_partial_message
 
UniqueArray< Int32 > m_partial_local_ids
 
bool m_is_check_coherence = false
 

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
 

Description détaillée

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.

Documentation des constructeurs et destructeur

◆ VariableSynchronizer()

Arcane::VariableSynchronizer::VariableSynchronizer ( IParallelMng pm,
const ItemGroup group,
Ref< IDataSynchronizeImplementationFactory implementation_factory 
)

Définition à la ligne 201 du fichier VariableSynchronizer.cc.

◆ ~VariableSynchronizer()

Arcane::VariableSynchronizer::~VariableSynchronizer ( )
override

Définition à la ligne 239 du fichier VariableSynchronizer.cc.

Documentation des fonctions membres

◆ _buildMessage() [1/2]

VariableSynchronizer::SyncMessage * Arcane::VariableSynchronizer::_buildMessage ( )
private

Définition à la ligne 249 du fichier VariableSynchronizer.cc.

◆ _buildMessage() [2/2]

VariableSynchronizer::SyncMessage * Arcane::VariableSynchronizer::_buildMessage ( Ref< DataSynchronizeInfo > &  sync_info)
private

Définition à la ligne 266 du fichier VariableSynchronizer.cc.

◆ _canSynchronizeMulti()

bool Arcane::VariableSynchronizer::_canSynchronizeMulti ( const VariableCollection vars)
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().

◆ _checkCreateTimer()

void Arcane::VariableSynchronizer::_checkCreateTimer ( )
private

Définition à la ligne 653 du fichier VariableSynchronizer.cc.

◆ _doSynchronize()

void Arcane::VariableSynchronizer::_doSynchronize ( SyncMessage message)
private

Définition à la ligne 318 du fichier VariableSynchronizer.cc.

◆ _rebuildMessage()

void Arcane::VariableSynchronizer::_rebuildMessage ( Int32ConstArrayView  local_ids)
private

Définition à la ligne 356 du fichier VariableSynchronizer.cc.

◆ _sendBeginEvent()

void Arcane::VariableSynchronizer::_sendBeginEvent ( VariableSynchronizerEventArgs args)
private

Définition à la ligne 618 du fichier VariableSynchronizer.cc.

◆ _sendEndEvent()

void Arcane::VariableSynchronizer::_sendEndEvent ( VariableSynchronizerEventArgs args)
private

Définition à la ligne 629 du fichier VariableSynchronizer.cc.

◆ _sendEvent()

void Arcane::VariableSynchronizer::_sendEvent ( VariableSynchronizerEventArgs args)
private

Définition à la ligne 643 du fichier VariableSynchronizer.cc.

◆ _setCurrentDevice()

void Arcane::VariableSynchronizer::_setCurrentDevice ( )
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().

◆ _synchronize() [1/2]

DataSynchronizeResult Arcane::VariableSynchronizer::_synchronize ( INumericDataInternal data,
bool  is_compare_sync 
)
private

Définition à la ligne 507 du fichier VariableSynchronizer.cc.

◆ _synchronize() [2/2]

void Arcane::VariableSynchronizer::_synchronize ( IVariable var,
SyncMessage message 
)
private

Définition à la ligne 426 du fichier VariableSynchronizer.cc.

◆ _synchronizeMulti()

void Arcane::VariableSynchronizer::_synchronizeMulti ( const VariableCollection vars,
SyncMessage message 
)
private

Définition à la ligne 573 du fichier VariableSynchronizer.cc.

◆ changeLocalIds()

void Arcane::VariableSynchronizer::changeLocalIds ( Int32ConstArrayView  old_to_new_ids)
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().

◆ communicatingRanks()

Int32ConstArrayView Arcane::VariableSynchronizer::communicatingRanks ( )
overridevirtual

Rangs des sous-domaines avec lesquels on communique.

Implémente Arcane::IVariableSynchronizer.

Définition à la ligne 591 du fichier VariableSynchronizer.cc.

◆ compute()

void Arcane::VariableSynchronizer::compute ( )
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().

◆ ghostItems()

Int32ConstArrayView Arcane::VariableSynchronizer::ghostItems ( Int32  index)
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.

◆ itemGroup()

const ItemGroup & Arcane::VariableSynchronizer::itemGroup ( )
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.

◆ onSynchronized()

EventObservable< const VariableSynchronizerEventArgs & > & Arcane::VariableSynchronizer::onSynchronized ( )
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.

◆ parallelMng()

IParallelMng * Arcane::VariableSynchronizer::parallelMng ( )
inlineoverridevirtual

Gestionnaire parallèle associé

Implémente Arcane::IVariableSynchronizer.

Définition à la ligne 65 du fichier VariableSynchronizer.h.

◆ sharedItems()

Int32ConstArrayView Arcane::VariableSynchronizer::sharedItems ( Int32  index)
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.

◆ synchronize() [1/4]

void Arcane::VariableSynchronizer::synchronize ( IVariable var)
overridevirtual

Synchronise la variable var en mode bloquant.

Implémente Arcane::IVariableSynchronizer.

Définition à la ligne 445 du fichier VariableSynchronizer.cc.

◆ synchronize() [2/4]

void Arcane::VariableSynchronizer::synchronize ( IVariable var,
Int32ConstArrayView  local_ids 
)
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.

◆ synchronize() [3/4]

void Arcane::VariableSynchronizer::synchronize ( VariableCollection  vars)
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().

◆ synchronize() [4/4]

void Arcane::VariableSynchronizer::synchronize ( VariableCollection  vars,
Int32ConstArrayView  local_ids 
)
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().

◆ synchronizeData()

void Arcane::VariableSynchronizer::synchronizeData ( IData data)
overridevirtual

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.

◆ synchronizeMng()

IVariableSynchronizerMng * Arcane::VariableSynchronizer::synchronizeMng ( ) const
inline

Définition à la ligne 99 du fichier VariableSynchronizer.h.

Documentation des fonctions amies et associées

◆ VariableSynchronizerComputeList

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

Documentation des données membres

◆ m_allow_multi_sync

bool Arcane::VariableSynchronizer::m_allow_multi_sync = true
private

Définition à la ligne 108 du fichier VariableSynchronizer.h.

◆ m_default_message

SyncMessage* Arcane::VariableSynchronizer::m_default_message = nullptr
private

Définition à la ligne 113 du fichier VariableSynchronizer.h.

◆ m_implementation_factory

Ref<IDataSynchronizeImplementationFactory> Arcane::VariableSynchronizer::m_implementation_factory
private

Définition à la ligne 111 du fichier VariableSynchronizer.h.

◆ m_is_check_coherence

bool Arcane::VariableSynchronizer::m_is_check_coherence = false
private

Définition à la ligne 119 du fichier VariableSynchronizer.h.

◆ m_is_verbose

bool Arcane::VariableSynchronizer::m_is_verbose = false
private

Définition à la ligne 107 du fichier VariableSynchronizer.h.

◆ m_item_group

ItemGroup Arcane::VariableSynchronizer::m_item_group
private

Définition à la ligne 104 du fichier VariableSynchronizer.h.

◆ m_on_synchronized

EventObservable<const VariableSynchronizerEventArgs&> Arcane::VariableSynchronizer::m_on_synchronized
private

Définition à la ligne 110 du fichier VariableSynchronizer.h.

◆ m_parallel_mng

IParallelMng* Arcane::VariableSynchronizer::m_parallel_mng = nullptr
private

Définition à la ligne 103 du fichier VariableSynchronizer.h.

◆ m_partial_local_ids

UniqueArray<Int32> Arcane::VariableSynchronizer::m_partial_local_ids
private

Définition à la ligne 118 du fichier VariableSynchronizer.h.

◆ m_partial_message

Ref<SyncMessage> Arcane::VariableSynchronizer::m_partial_message
private

Définition à la ligne 117 du fichier VariableSynchronizer.h.

◆ m_partial_sync_info

Ref<DataSynchronizeInfo> Arcane::VariableSynchronizer::m_partial_sync_info
private

Définition à la ligne 116 du fichier VariableSynchronizer.h.

◆ m_runner

Runner* Arcane::VariableSynchronizer::m_runner = nullptr
private

Définition à la ligne 114 du fichier VariableSynchronizer.h.

◆ m_sync_info

Ref<DataSynchronizeInfo> Arcane::VariableSynchronizer::m_sync_info
private

Définition à la ligne 105 du fichier VariableSynchronizer.h.

◆ m_sync_timer

Timer* Arcane::VariableSynchronizer::m_sync_timer = nullptr
private

Définition à la ligne 106 du fichier VariableSynchronizer.h.

◆ m_trace_sync

bool Arcane::VariableSynchronizer::m_trace_sync = false
private

Définition à la ligne 109 du fichier VariableSynchronizer.h.

◆ m_variable_synchronizer_mng

IVariableSynchronizerMng* Arcane::VariableSynchronizer::m_variable_synchronizer_mng = nullptr
private

Définition à la ligne 112 du fichier VariableSynchronizer.h.


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