Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
VariableSynchronizerComputeList.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* VariableSynchronizerComputeList.h (C) 2000-2024 */
9/* */
10/* Calcule de la liste des entités à synchroniser. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_IMPL_INTERNAL_VARIABLESYNCHRONIZERCOMPUTELIST_H
14#define ARCANE_IMPL_INTERNAL_VARIABLESYNCHRONIZERCOMPUTELIST_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/utils/TraceAccessor.h"
19#include "arcane/utils/Array.h"
20
21#include "arcane/core/ItemGroup.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28class IParallelMng;
29class VariableSynchronizer;
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
36class ARCANE_IMPL_EXPORT VariableSynchronizerComputeList
37: public TraceAccessor
38{
40 {
41 public:
42
43 RankInfo() = default;
44 explicit RankInfo(Int32 arank)
45 : m_rank(arank)
46 {}
47
48 public:
49
50 Int32 rank() const { return m_rank; }
51 void setRank(Int32 arank) { m_rank = arank; }
57 bool operator<(const RankInfo& ar) const
58 {
59 return m_rank < ar.m_rank;
60 }
61
62 private:
63
64 Int32 m_rank = A_NULL_RANK;
65 };
66
68 : public RankInfo
69 {
70 public:
71
72 GhostRankInfo() = default;
73 explicit GhostRankInfo(Int32 arank)
75 , m_nb_item(0)
76 {}
77 GhostRankInfo(Int32 arank, Integer nb_item)
79 , m_nb_item(nb_item)
80 {}
81
82 public:
83
84 void setInfos(Int32 arank, SharedArray<Int32>& local_ids)
85 {
86 setRank(arank);
87 m_nb_item = local_ids.size();
88 m_local_ids = local_ids;
89 }
90 Int32ConstArrayView localIds() const { return m_local_ids; }
91 Integer nbItem() const { return m_nb_item; }
92 void resize() { m_unique_ids.resize(m_nb_item); }
93 Int64ArrayView uniqueIds() { return m_unique_ids; }
94
95 private:
96
97 Integer m_nb_item = 0;
98 SharedArray<Int32> m_local_ids;
99 SharedArray<Int64> m_unique_ids;
100 };
101
103 : public RankInfo
104 {
105 public:
106
107 ShareRankInfo() = default;
108 ShareRankInfo(Int32 arank, Integer nb_item)
109 : RankInfo(arank)
110 , m_nb_item(nb_item)
111 {}
112 explicit ShareRankInfo(Int32 arank)
113 : RankInfo(arank)
114 {}
115
116 public:
117
118 void setInfos(Int32 arank, SharedArray<Int32>& local_ids)
119 {
120 setRank(arank);
121 m_nb_item = local_ids.size();
122 m_local_ids = local_ids;
123 }
124 Int32ConstArrayView localIds() const { return m_local_ids; }
125 void setLocalIds(SharedArray<Int32>& v) { m_local_ids = v; }
126 Integer nbItem() const { return m_nb_item; }
127 void resize() { m_unique_ids.resize(m_nb_item); }
128 Int64ArrayView uniqueIds() { return m_unique_ids; }
129
130 private:
131
132 Integer m_nb_item = 0;
133 SharedArray<Int32> m_local_ids;
134 SharedArray<Int64> m_unique_ids;
135 };
136
137 public:
138
140
141 public:
142
143 void compute();
144
145 private:
146
147 VariableSynchronizer* m_synchronizer;
148 IParallelMng* m_parallel_mng = nullptr;
149 ItemGroup m_item_group;
150 bool m_is_verbose = false;
151 bool m_is_debug = false;
152
153 private:
154
158 void _printSyncList();
159};
160
161/*---------------------------------------------------------------------------*/
162/*---------------------------------------------------------------------------*/
163
164} // End namespace Arcane
165
166/*---------------------------------------------------------------------------*/
167/*---------------------------------------------------------------------------*/
168
169#endif
Interface du gestionnaire de parallélisme pour un sous-domaine.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
bool operator<(const RankInfo &ar) const
Opérateur de comparaison. Une instance est considérée comme inférieure à une autre si son sous-domain...
Calcule de la liste des entités à synchroniser.
Interface d'un service de synchronisation de variable.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-