12#ifndef ARCANE_PARALLEL_MPI_MPIPARALLELMNG_H
13#define ARCANE_PARALLEL_MPI_MPIPARALLELMNG_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/Ref.h"
20#include "arcane/ParallelMngDispatcher.h"
22#include "arcane/parallel/mpi/ArcaneMpi.h"
36class ArcaneMpiSerializeMessageList;
48 Int32 commRank()
const {
return comm_rank; }
49 Int32 commSize()
const {
return comm_nb_rank; }
50 MPI_Comm mpiComm()
const {
return mpi_comm; }
67 bool is_mpi_comm_owned;
83 friend ArcaneMpiSerializeMessageList;
91 bool isParallel()
const override {
return m_is_parallel; }
92 Int32
commRank()
const override {
return m_comm_rank; }
93 Int32
commSize()
const override {
return m_comm_size; }
102 void initialize()
override;
108 void sendSerializer(
ISerializer* values,Int32 rank)
override;
112 void recvSerializer(
ISerializer* values,Int32 rank)
override;
117 void broadcastSerializer(
ISerializer* values,Int32 rank)
override;
123 void printStats()
override;
126 void barrier()
override;
130 ARCANE_DEPRECATED_260 Real reduceRank(
eReduceType rt,Real v,Int32* rank)
132 Real
rv = reduce(
rt,v);
140 void build()
override;
147 MpiLock* mpiLock()
const {
return m_mpi_lock; }
149 MpiDatatypeList* datatypes() {
return m_datatype_list; }
151 MpiSerializeDispatcher* serializeDispatcher()
const {
return m_mpi_serialize_dispatcher; }
155 ISerializeMessageList* _createSerializeMessageList()
override;
156 IParallelMng* _createSubParallelMng(Int32ConstArrayView kept_ranks)
override;
157 bool _isAcceleratorAware()
const override;
158 Ref<IParallelMng> _createSubParallelMngRef(
Int32 color,
Int32 key)
override;
162 IGetVariablesValuesParallelOperation* createGetVariablesValuesOperation()
override;
163 ITransferValuesParallelOperation* createTransferValuesOperation()
override;
164 IParallelExchanger* createExchanger()
override;
165 IParallelTopology* createTopology()
override;
166 IVariableSynchronizer* createSynchronizer(IItemFamily* family)
override;
167 IVariableSynchronizer* createSynchronizer(
const ItemGroup& group)
override;
179 IIOMng* m_io_mng =
nullptr;
183 bool m_is_timer_owned =
false;
186 bool m_is_parallel =
false;
187 Int32 m_comm_rank = A_NULL_RANK;
188 Int32 m_comm_size = 0;
189 bool m_is_initialized =
false;
192 bool m_is_communicator_owned =
false;
197 bool m_use_serialize_list_v2 =
true;
201 void _checkFinishedSubRequests();
Tableau d'items de types quelconques.
Interface du gestionnaire des entrées sorties.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface des opérations parallèles collectives non bloquantes.
Informations sur la réplication des sous-domaines en parallèle.
Interface d'un gestionnaire de thread.
Interface d'un gestionnaire de timer.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Gère les MPI_Datatype associées aux types Arcane.
Spécialisation de MpiRequestList pour MpiParallelMng.
Gestionnaire du parallélisme utilisant MPI.
IParallelMng * worldParallelMng() const override
Gestionnaire de parallélisme sur l'ensemble des ressources allouées.
Int32 commRank() const override
Rang de cette instance dans le communicateur.
IThreadMng * threadMng() const override
Gestionnaire de threads.
IIOMng * ioMng() const override
Gestionnaire des entrées/sorties.
bool isThreadImplementation() const override
Indique si l'implémentation utilise les threads.
void * getMPICommunicator() override
Adresse du communicateur MPI associé à ce gestionnaire.
ITimerMng * timerMng() const override
Gestionnaire de timers.
IParallelNonBlockingCollective * nonBlockingCollective() const override
Interface des opérations collectives non blocantes.
bool isParallel() const override
Retourne true si l'exécution est parallèle.
ITraceMng * traceMng() const override
Gestionnaire de traces.
Communicator communicator() const override
Communicateur MPI associé à ce gestionnaire.
Integer masterIORank() const override
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
Parallel::IStat * stat() override
Gestionnaire des statistiques.
bool isMasterIO() const override
true si l'instance est un gestionnaire maître des entrées/sorties.
bool isHybridImplementation() const override
Indique si l'implémentation utilise le mode hybride.
Int32 commSize() const override
Nombre d'instance dans le communicateur.
Redirige la gestion des messages des sous-domaines suivant le type de l'argument.
Statistiques sur le parallélisme.
Interface d'un sérialiseur.
Interface du gestionnaire de traces.
Communicateur pour l'échange de message.
Interface d'un message de sérialisation entre IMessagePassingMng.
Informations sur la source d'un message.
Verrou pour les appels MPI.
Informations pour envoyer/recevoir un message point à point.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eReduceType
Types des réductions supportées.
Infos pour construire un MpiParallelMng.