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;
90 ~MpiParallelMng()
override;
92 bool isParallel()
const override {
return m_is_parallel; }
103 void initialize()
override;
124 void printStats()
override;
127 void barrier()
override;
133 Real rv = reduce(rt,v);
141 void build()
override;
148 MpiLock* mpiLock()
const {
return m_mpi_lock; }
150 MpiDatatypeList* datatypes() {
return m_datatype_list; }
152 MpiSerializeDispatcher* serializeDispatcher()
const {
return m_mpi_serialize_dispatcher; }
162 bool _isAcceleratorAware()
const override;
184 IIOMng* m_io_mng =
nullptr;
188 bool m_is_timer_owned =
false;
191 bool m_is_parallel =
false;
196 MPI_Comm m_communicator = MPI_COMM_NULL;
197 bool m_is_communicator_owned =
false;
206 void _checkFinishedSubRequests();
208 IParallelMng* _createSubParallelMng(MPI_Comm sub_communicator);
Vue modifiable d'un tableau d'un type T.
Opérations pour accéder aux valeurs de variables d'un autre sous-domaine.
Interface du gestionnaire des entrées sorties.
Interface d'une famille d'entités.
Échange d'informations entre processeurs.
Partie interne de IParallelMng.
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.
Informations sur la topologie d'allocation des coeurs de calcul.
Interface d'un sérialiseur.
Interface d'un gestionnaire de thread.
Interface d'un gestionnaire de timer.
Interface du gestionnaire de traces.
Envoie de valeurs sur différents processeurs.
Interface d'un service de synchronisation de variable.
Groupe d'entités de maillage.
Communicateur pour l'échange de message.
Interface d'une liste de messages de sérialisation.
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.
IParallelMngInternal * _internalApi() override
API interne à Arcane.
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.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
double Real
Type représentant un réel.
std::int32_t Int32
Type entier signé sur 32 bits.
Infos pour construire un MpiParallelMng.