14#include "arcane/impl/internal/DataSynchronizeBuffer.h"
16#include "arcane/utils/FatalErrorException.h"
17#include "arcane/utils/internal/MemoryBuffer.h"
19#include "arcane/impl/DataSynchronizeInfo.h"
20#include "arcane/impl/internal/IBufferCopier.h"
22#include "arcane/accelerator/core/Runner.h"
37 for (Int32 i = 0; i < nb_rank; ++i)
49 for (Int32 i = 0; i < nb_rank; ++i)
82 Int64 displacement = m_buffer_info->bufferDisplacement(index);
83 Int32
local_size = m_buffer_info->nbItem(index);
84 return m_memory_view.subView(displacement,
local_size);
93 return m_buffer_info->localIds(index);
102DataSynchronizeBufferBase::
124 m_buffer_copier->barrier();
136 m_nb_rank = m_sync_info->size();
165 if (m_is_compare_sync_values)
177 if (m_is_compare_sync_values) {
229 for (Int32 i = 0; i < nb_rank; ++i) {
251 if (!m_is_compare_sync_values)
318 for (ConstMemoryView
var_values : m_data_views) {
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
void barrier() const
Bloque tant que toutes les commandes associées à la file ne sont pas terminées.
ConstArrayView< Int32 > localIds(Int32 index) const
Numéros locaux des entités pour le rang index.
MutableMemoryView globalBuffer()
Buffer global.
Int64 displacement(Int32 index) const
Déplacement dans globalBuffer() pour le index-ème rang.
MutableMemoryView localBuffer(Int32 index)
Buffer pour le index-ème rang.
void barrier() final
Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.
Int32 targetRank(Int32 index) const final
Rang cible du index-ème rang.
void _compute(Int32 datatype_size)
Calcule les informations pour la synchronisation.
BufferInfo m_compare_sync_buffer_info
Buffer pour tester si la synchronisation a modifié les valeurs des mailles fantômes.
Int32 nbRank() const final
Nombre de rangs.
void _allocateBuffers(Int32 datatype_size)
Calcul et alloue les tampons nécessaires aux envois et réceptions pour les synchronisations des varia...
BufferInfo m_share_buffer_info
Buffer pour toutes les données des entités partagées qui serviront en envoi.
BufferInfo m_ghost_buffer_info
Buffer pour toutes les données des entités fantômes qui serviront en réception.
Ref< MemoryBuffer > m_memory
Buffer contenant les données concaténées en envoi et réception.
Int64 totalNbItem() const
Nombre total d'éléments.
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)
const DataSynchronizeBufferInfoList & sendInfo() const
Informations d'envoi (partagées)
Informations sur le résultat d'une synchronisation.
void barrier() override
Bloque tant que les copies ne sont pas terminées.
Interface pour copier des éléments entre deux zones avec indexation.
virtual void barrier()=0
Attend que les copies (copySendAsync() et copyReceiveAsync()) soient terminées.
virtual void copyAllSend()
Recopie dans le buffer d'envoi toute les données.
virtual void copyAllReceive()
Recopie toutes les données depuis le buffer de réception.
virtual void copyReceiveAsync(Int32 index)=0
Recopie dans les données depuis le buffer de réception du index-ème rang.
virtual void copySendAsync(Int32 index)=0
Recopie dans le buffer d'envoi les données du index-ème rang.
virtual Int32 nbRank() const =0
Nombre de rangs.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void prepareSynchronize(Int32 datatype_size, bool is_compare_sync) override
Prépare la synchronisation.
void copyReceiveAsync(Int32 index) final
Recopie dans les données depuis le buffer de réception du index-ème rang.
void copySendAsync(Int32 index) final
Recopie dans le buffer d'envoi les données du index-ème rang.
DataSynchronizeResult finalizeSynchronize()
Termine la synchronisation.
void copyReceiveAsync(Int32 index) final
Recopie dans les données depuis le buffer de réception du index-ème rang.
void copySendAsync(Int32 index) final
Recopie dans le buffer d'envoi les données du index-ème rang.
void prepareSynchronize(Int32 datatype_size, bool is_compare_sync) override
Prépare la synchronisation.
Vue constante d'un tableau de type T.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
@ Different
Valeurs différentes avant et après la synchronisation.
@ Same
Même valeurs avant et après la synchronisation.