13#ifndef ARCANE_IMPL_DATASYNCHRONIZERINFO_H
14#define ARCANE_IMPL_DATASYNCHRONIZERINFO_H
18#include "arcane/utils/UniqueArray.h"
19#include "arcane/utils/Ref.h"
24#include "arcane/core/VariableCollection.h"
26#include "arcane/impl/IDataSynchronizeImplementation.h"
75class ARCANE_IMPL_EXPORT VariableSyncInfo
80 VariableSyncInfo(
const VariableSyncInfo& rhs);
120class DataSynchronizeBufferInfoList
122 friend class DataSynchronizeInfo;
126 DataSynchronizeBufferInfoList(
const DataSynchronizeInfo* sync_info,
bool is_share)
127 : m_sync_info(sync_info)
128 , m_is_share(is_share)
134 Int32 nbRank()
const {
return m_displacements_base.size(); }
147 Int64 m_total_nb_item = 0;
149 bool m_is_share =
false;
165class ARCANE_IMPL_EXPORT DataSynchronizeInfo
168 friend class DataSynchronizeBufferInfoList;
172 static constexpr int SEND = 0;
173 static constexpr int RECEIVE = 1;
177 DataSynchronizeInfo() =
default;
181 DataSynchronizeInfo(
const DataSynchronizeInfo&) =
delete;
182 DataSynchronizeInfo operator=(
const DataSynchronizeInfo&) =
delete;
183 DataSynchronizeInfo(DataSynchronizeInfo&&) =
delete;
184 DataSynchronizeInfo operator=(DataSynchronizeInfo&&) =
delete;
190 return makeRef(
new DataSynchronizeInfo());
195 void clear() { m_ranks_info.clear(); m_communicating_ranks.clear(); }
196 Int32 size()
const {
return m_ranks_info.size(); }
200 const DataSynchronizeBufferInfoList&
sendInfo()
const {
return m_buffer_infos[SEND]; }
202 const DataSynchronizeBufferInfoList&
receiveInfo()
const {
return m_buffer_infos[RECEIVE]; }
218 void addReference() { ReferenceCounterImpl::addReference(); }
219 void removeReference() { ReferenceCounterImpl::removeReference(); }
223 ARCANE_DEPRECATED_REASON(
"Y2023: do not use")
224 ConstArrayView<VariableSyncInfo> infos()
const {
return m_ranks_info; }
226 ARCANE_DEPRECATED_REASON(
"Y2023: do not use")
227 ArrayView<VariableSyncInfo> infos() {
return m_ranks_info; }
229 ARCANE_DEPRECATED_REASON(
"Y2023: do not use")
230 VariableSyncInfo& operator[](Int32 i) {
return m_ranks_info[i]; }
231 ARCANE_DEPRECATED_REASON(
"Y2023: do not use")
232 const VariableSyncInfo& operator[](Int32 i)
const {
return m_ranks_info[i]; }
234 ARCANE_DEPRECATED_REASON(
"Y2023: do not use")
235 VariableSyncInfo& rankInfo(Int32 i) {
return m_ranks_info[i]; }
236 ARCANE_DEPRECATED_REASON(
"Y2023: do not use")
237 const VariableSyncInfo& rankInfo(Int32 i)
const {
return m_ranks_info[i]; }
241 UniqueArray<Int32> m_communicating_ranks;
242 UniqueArray<VariableSyncInfo> m_ranks_info;
243 std::array<DataSynchronizeBufferInfoList, 2> m_buffer_infos = { { {
this,
true }, {
this,
false } } };
247 DataSynchronizeBufferInfoList& _sendInfo() {
return m_buffer_infos[SEND]; }
248 DataSynchronizeBufferInfoList& _receiveInfo() {
return m_buffer_infos[RECEIVE]; }
Déclarations des types généraux de Arcane.
Fichier contenant les déclarations concernant le modèle de programmation par échange de message.
Tableau d'items de types quelconques.
Vue constante d'un tableau de type T.
ConstArrayView< Int32 > localIds(Int32 index) const
Numéros locaux des entités pour le rang index.
Int64 totalNbItem() const
Nombre total d'éléments.
Int32 nbItem(Int32 index) const
Nombre d'entités pour le rang index.
Int64 bufferDisplacement(Int32 index) const
Déplacement dans le buffer du rang index.
Informations nécessaires pour synchroniser les entités sur un groupe.
Int32 targetRank(Int32 index) const
Rang de la index-ème cible.
const DataSynchronizeBufferInfoList & receiveInfo() const
Informations de réception (fantômes)
Int32ConstArrayView communicatingRanks() const
Rangs de toutes les cibles.
const DataSynchronizeBufferInfoList & sendInfo() const
Informations d'envoi (partagées)
Informations sur le résultat d'une synchronisation.
Référence à une instance.
Implémentation thread-safe d'un compteur de référence.
Vecteur 1D de données avec sémantique par valeur (style STL).
Informations sur la liste des entités partagées/fantômes pour un rang donné pour une synchronisation.
ConstArrayView< Int32 > ghostIds() const
localIds() des entités à réceptionner du rang targetRank()
ConstArrayView< Int32 > shareIds() const
localIds() des entités à envoyer au rang targetRank()
Int32 m_target_rank
Rang du processeur cible.
UniqueArray< Int32 > m_share_ids
localIds() des entités à envoyer au processeur #m_rank
Int32 nbGhost() const
Nombre d'entités fantômes.
Int32 targetRank() const
Rang du processeur cible.
Int32 nbShare() const
Nombre d'entités partagées.
UniqueArray< Int32 > m_ghost_ids
localIds() des entités à réceptionner du processeur #m_rank
@ Unknown
Accessibilité inconnue.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
eDataSynchronizeCompareStatus
Comparaison des valeurs des entités fantômes avant/après une synchronisation.
@ Different
Valeurs différentes avant et après la synchronisation.
@ Unknown
Pas de comparaison ou résultat inconnue.
@ Same
Même valeurs avant et après la synchronisation.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.
std::int32_t Int32
Type entier signé sur 32 bits.