12#ifndef ARCANE_BASICPARTICLEEXCHANGER_H
13#define ARCANE_BASICPARTICLEEXCHANGER_H
18#include "arcane/utils/List.h"
19#include "arcane/utils/FatalErrorException.h"
20#include "arcane/utils/IFunctor.h"
21#include "arcane/utils/PlatformUtils.h"
22#include "arcane/utils/ValueConvert.h"
23#include "arcane/utils/ScopedPtr.h"
26#include "arcane/IParticleExchanger.h"
27#include "arcane/VariableCollection.h"
29#include "arcane/ItemGroup.h"
30#include "arcane/ItemPrinter.h"
31#include "arcane/IItemFamily.h"
32#include "arcane/IParticleFamily.h"
33#include "arcane/IParallelMng.h"
34#include "arcane/IVariableMng.h"
35#include "arcane/IVariable.h"
36#include "arcane/IMesh.h"
37#include "arcane/Item.h"
38#include "arcane/Timer.h"
39#include "arcane/SerializeMessage.h"
40#include "arcane/ISerializeMessageList.h"
41#include "arcane/CommonVariables.h"
42#include "arcane/FactoryService.h"
44#include "arcane/mesh/MeshGlobal.h"
45#include "arcane/mesh/BasicParticleExchanger_axl.h"
53class SerializeMessage;
117 Int32 m_rank = A_NULL_RANK;
121 Real m_total_time_functor = 0.0;
122 Real m_total_time_waiting = 0.0;
135 Int64 m_nb_total_particle_finish_exchange = 0;
137 bool m_exchange_finished =
true;
138 Integer m_nb_loop = 0;
139 bool m_print_info =
false;
140 Int64 m_last_nb_to_exchange = 0;
141 Integer m_current_nb_reduce = 0;
142 Integer m_last_nb_reduce = 0;
143 Int64 m_nb_particle_send = 0;
145 Int32 m_verbose_level = 1;
146 Int32 m_debug_exchange_items_level = 0;
158 void _clearMessages();
174 void _sendPendingMessages();
177 void _checkInitialized();
Generation de la classe de base du Service.
Tableau d'items de types quelconques.
Interface d'un échangeur de particules asynchrone.
Interface d'une famille d'entités.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Groupe d'entités de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Structure contenant les informations pour créer un service.
Echangeur de particules basique (utilise une réduction bloquante).
bool exchangeItems(Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, ItemGroup item_group, IFunctor *functor) override
Échange des particules entre sous-domaines.
VariableList m_variables_to_exchange
Liste des variables à échanger.
bool waitMessages(Integer nb_pending_particles, Int32Array *new_particle_local_ids, IFunctor *functor) override
void setVerboseLevel(Integer level) override
Positionne le niveau de verbosité (0 pour aucune message)
IItemFamily * itemFamily() override
Famille associée.
UniqueArray< ISerializeMessage * > m_pending_messages
Liste des message en attente d'envoie.
void initialize(IItemFamily *item_family) override
Initialize l'échangeur pour la familly item_family.
Int64 m_serialize_id
Numéro du message. Utile pour le débug.
IAsyncParticleExchanger * asyncParticleExchanger() override
Gestion de l'asynchronisme (retourne nullptr si fonctionnalité non disponible)
void build() override
Construction de niveau build du service.
void addNewParticles(Integer nb_particle) override
Ajoute nb_particle dans l'échange actuel.
Integer verboseLevel() const override
Niveau de verbosité
void beginNewExchange(Integer nb_particle) override
Commence un nouvel échange de particules.
Int32 m_max_nb_message_without_reduce
void sendItems(Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send) override
UniqueArray< ISerializeMessage * > m_waiting_messages
Liste des message envoyés mais en cours de traitement.
Vue constante d'un tableau de type T.
Interface d'un message de sérialisation entre IMessagePassingMng.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-