Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
VariableSynchronizerMng.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* VariableSynchronizerMng.h (C) 2000-2023 */
9/* */
10/* Gestionnaire des synchroniseurs de variables. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_IMPL_INTERNAL_VARIABLESYNCHRONIZERMNG_H
14#define ARCANE_IMPL_INTERNAL_VARIABLESYNCHRONIZERMNG_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/utils/TraceAccessor.h"
19#include "arcane/utils/Event.h"
20
21#include "arcane/core/IVariableSynchronizerMng.h"
22#include "arcane/core/internal/IVariableSynchronizerMngInternal.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29class VariableSynchronizerStats;
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
36class ARCANE_IMPL_EXPORT VariableSynchronizerMng
37: public TraceAccessor
39{
40 public:
41
44
45 public:
46
48 : public TraceAccessor
50 {
51 class BufferList;
52
53 public:
54
57
58 public:
59
60 Ref<MemoryBuffer> createSynchronizeBuffer(IMemoryAllocator* allocator) override;
61 void releaseSynchronizeBuffer(IMemoryAllocator* allocator, MemoryBuffer* v) override;
62
63 public:
64
65 void dumpStats(std::ostream& ostr) const;
66
67 private:
68
69 VariableSynchronizerMng* m_synchronizer_mng = nullptr;
70 BufferList* m_buffer_list = nullptr;
71 };
72
73 public:
74
75 void initialize();
76
77 public:
78
79 IParallelMng* parallelMng() const override { return m_parallel_mng; }
80
82 {
83 return m_on_synchronized;
84 }
85
86 void setSynchronizationCompareLevel(Int32 v) final { m_synchronize_compare_level = v; }
87 Int32 synchronizationCompareLevel() const final { return m_synchronize_compare_level; }
88 bool isSynchronizationComparisonEnabled() const final { return m_synchronize_compare_level > 0; }
89
90 void dumpStats(std::ostream& ostr) const override;
91 void flushPendingStats() override;
92 IVariableSynchronizerMngInternal* _internalApi() override { return &m_internal_api; }
93 bool isDoingStats() const { return m_is_doing_stats || m_synchronize_compare_level > 0; }
94
95 private:
96
97 IVariableMng* m_variable_mng = nullptr;
98 IParallelMng* m_parallel_mng = nullptr;
99 InternalApi m_internal_api{ this };
100 EventObservable<const VariableSynchronizerEventArgs&> m_on_synchronized;
101 VariableSynchronizerStats* m_stats = nullptr;
102 Int32 m_synchronize_compare_level = 0;
103 bool m_is_doing_stats = false;
104};
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108
109} // End namespace Arcane
110
111/*---------------------------------------------------------------------------*/
112/*---------------------------------------------------------------------------*/
113
114#endif
Fichier contenant les mécanismes de gestion des évènements.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface du gestionnaire de variables.
API interne à Arcane de IVariableSynchronizerMng.
Interface du gestionnaire de synchronisation des variables.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Gestion d'un buffer mémoire.
Gère un pool de buffer associé à un allocateur.
Gestionnaire des synchroniseurs de variables.
void setSynchronizationCompareLevel(Int32 v) final
Positionne le niveau de comparaison entre les valeurs avant et après synchronisations.
bool isSynchronizationComparisonEnabled() const final
Indique si on effectue les comparaisons des valeurs avant et après synchronisation.
EventObservable< const VariableSynchronizerEventArgs & > & onSynchronized() override
Évènement envoyé en début et fin de synchronisation.
Int32 synchronizationCompareLevel() const final
Niveau de comparaison des valeurs avant et après synchronisation.
IParallelMng * parallelMng() const override
Gestionnaire de parallélisme associé
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-