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;
43struct ARCANE_MPI_EXPORT MpiParallelMngBuildInfo
46 MpiParallelMngBuildInfo(MPI_Comm comm);
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;
79class ARCANE_MPI_EXPORT MpiParallelMng
80:
public ParallelMngDispatcher
83 friend ArcaneMpiSerializeMessageList;
89 ~MpiParallelMng()
override;
91 bool isParallel()
const override {
return m_is_parallel; }
102 void initialize()
override;
123 void printStats()
override;
126 void barrier()
override;
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;
191 MPI_Comm m_communicator = MPI_COMM_NULL;
192 bool m_is_communicator_owned =
false;
200 void _checkFinishedSubRequests();
202 IParallelMng* _createSubParallelMng(MPI_Comm sub_communicator);
Vue modifiable d'un tableau d'un type T.
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 sérialiseur.
Interface d'un gestionnaire de thread.
Interface d'un gestionnaire de timer.
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.
Gère les MPI_Datatype associées aux types Arcane.
Spécialisation de MpiRequestList pour MpiParallelMng.
IParallelMng * worldParallelMng() const override
Gestionnaire de parallélisme sur l'ensemble des ressources allouées.
bool m_is_initialized
true si déjà initialisé
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.
Int32 m_comm_size
Nombre de sous-domaines.
bool isParallel() const override
Retourne true si l'exécution est parallèle.
ITraceMng * traceMng() const override
Gestionnaire de traces.
Int32 m_comm_rank
Numéro du processeur actuel.
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.
Statistiques sur le parallélisme.
Référence à une instance.
Implémentation d'un tampon pour la sérialisation.
Vecteur 1D de données avec sémantique par valeur (style STL).
eReduceType
Types des réductions supportées.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
double Real
Type représentant un réel.
std::int32_t Int32
Type entier signé sur 32 bits.
Infos pour construire un MpiParallelMng.