Arcane  v4.1.11.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IDataSynchronizeDispatcher.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* DataSynchronizeDispatcher.h (C) 2000-2026 */
9/* */
10/* Gestion de la synchronisation d'une instance de 'IData'. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_IMPL_INTERNAL_VARIABLESYNCHRONIZERDISPATCHER_H
14#define ARCANE_IMPL_INTERNAL_VARIABLESYNCHRONIZERDISPATCHER_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/utils/UniqueArray.h"
19#include "arcane/utils/Ref.h"
21
24#include "arcane/core/VariableCollection.h"
25
26#include "arcane/impl/IDataSynchronizeImplementation.h"
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30namespace Arcane
31{
33}
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
39namespace Arcane
40{
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
45class MemoryBuffer;
47class IVariableSynchronizerDispatcher;
49class IBufferCopier;
50
51/*---------------------------------------------------------------------------*/
52/*---------------------------------------------------------------------------*/
56class ARCANE_IMPL_EXPORT DataSynchronizeDispatcherBuildInfo
57{
58 public:
59
60 DataSynchronizeDispatcherBuildInfo(IParallelMng* pm,
63 Ref<IBufferCopier> copier)
64 : m_parallel_mng(pm)
65 , m_synchronize_implementation(sync_impl)
66 , m_synchronize_info(sync_info)
67 , m_buffer_copier(copier)
68 {}
69
70 public:
71
72 IParallelMng* parallelMng() const { return m_parallel_mng; }
73 Ref<IDataSynchronizeImplementation> synchronizeImplementation() const { return m_synchronize_implementation; }
74 Ref<DataSynchronizeInfo> synchronizeInfo() const { return m_synchronize_info; }
75 Ref<IBufferCopier> bufferCopier() const { return m_buffer_copier; }
76
77 private:
78
79 IParallelMng* m_parallel_mng = nullptr;
80 Ref<IDataSynchronizeImplementation> m_synchronize_implementation;
81 Ref<DataSynchronizeInfo> m_synchronize_info;
82 Ref<IBufferCopier> m_buffer_copier;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
97class ARCANE_IMPL_EXPORT IDataSynchronizeDispatcher
98{
100
101 protected:
102
103 virtual ~IDataSynchronizeDispatcher() = default;
104
105 public:
106
111 virtual void compute() = 0;
112
120
124 virtual void beginSynchronize(INumericDataInternal* data, bool is_compare_sync) = 0;
125
132
133 public:
134
136 create(const DataSynchronizeDispatcherBuildInfo& build_info);
137};
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
145class ARCANE_IMPL_EXPORT IDataSynchronizeMultiDispatcher
146{
147 public:
148
149 virtual ~IDataSynchronizeMultiDispatcher() = default;
150
151 public:
152
157 virtual void compute() = 0;
164 virtual void synchronize(ConstArrayView<IVariable*> vars) = 0;
165
166 public:
167
169};
170
171/*---------------------------------------------------------------------------*/
172/*---------------------------------------------------------------------------*/
173
174} // namespace Arcane
175
176/*---------------------------------------------------------------------------*/
177/*---------------------------------------------------------------------------*/
178
179#endif
Déclarations des types généraux de Arcane.
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour déclarer les méthodes virtuelles gérant les compteurs de référence.
#define ARCCORE_DECLARE_REFERENCE_COUNTED_CLASS(class_name)
Macro pour déclarer qu'une classe utilise un compteur de référence.
Vue constante d'un tableau de type T.
Infos pour construire un DataSynchronizeDispatcher.
Informations sur le résultat d'une synchronisation.
Interface pour copier des éléments entre deux zones avec indexation.
Interface pour gérer la synchronisation d'une donnée.
virtual void compute()=0
Recalcule les informations nécessaires après une mise à jour des informations de DataSynchronizeInfo.
virtual void beginSynchronize(INumericDataInternal *data, bool is_compare_sync)=0
Commence l'exécution pour la synchronisation pour la donnée data.
virtual DataSynchronizeResult endSynchronize()=0
Termine la synchronisation.
virtual void setSynchronizeBuffer(Ref< MemoryBuffer > buffer)=0
Positionne le buffer de synchronisation.
Interface de la synchronisation d'une liste de variables.
virtual void setSynchronizeBuffer(Ref< MemoryBuffer > buffer)=0
Positionne le buffer de synchronisation.
virtual void compute()=0
Recalcule les informations nécessaires après une mise à jour des informations de DataSynchronizeInfo.
Interface pour un 'IData' d'un type numérique.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Gestion d'un buffer mémoire.
Référence à une instance.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-