12#ifndef ARCANE_PARALLEL_THREAD_SHAREDMEMORYPARALLELMNG_H
13#define ARCANE_PARALLEL_THREAD_SHAREDMEMORYPARALLELMNG_H
17#include "arcane/ParallelMngDispatcher.h"
19#include "arcane/utils/TraceInfo.h"
20#include "arcane/utils/NotImplementedException.h"
21#include "arcane/utils/Ref.h"
22#include "arccore/base/ReferenceCounter.h"
43struct ARCANE_THREAD_EXPORT SharedMemoryParallelMngBuildInfo
46 SharedMemoryParallelMngBuildInfo()
47 : rank(-1), nb_rank(0), trace_mng(
nullptr), thread_mng(
nullptr)
48 , message_queue(
nullptr), thread_barrier(
nullptr), all_dispatchers(
nullptr){}
61 MP::Communicator communicator;
69class ARCANE_THREAD_EXPORT SharedMemoryParallelMng
70:
public ParallelMngDispatcher
77 ~SharedMemoryParallelMng()
override;
79 bool isParallel()
const override {
return m_is_parallel; }
83 MP::Communicator
communicator()
const override {
return m_mpi_communicator; }
88 void initialize()
override;
112 void printStats()
override;
113 void barrier()
override;
118 Real rv = reduce(rt,v);
126 void build()
override;
132 return m_thread_barrier;
160 bool _isAcceleratorAware()
const override {
return true; }
181 MP::Communicator m_mpi_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.
Echange d'informations entre processeurs.
Interface d'une fabrique de conteneur 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'une barrière entre threads.
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.
Interface d'une liste de messages de sérialisation.
Interface d'un message de sérialisation entre IMessagePassingMng.
Interface d'une file de messages avec les threads.
Informations sur la source d'un message.
Informations pour envoyer/recevoir un message point à point.
Implémentation de IRequestList pour SharedMemoryParallelMng.
IParallelTopology * createTopology() override
Créé une instance contenant les infos sur la topologie des rangs de ce gestionnnaire.
IGetVariablesValuesParallelOperation * createGetVariablesValuesOperation() override
Retourne une opération pour récupérer les valeurs d'une variable sur les entités d'un autre sous-doma...
bool isThreadImplementation() const override
Indique si l'implémentation utilise les threads.
Int32 m_nb_rank
Nombre de rangs.
bool isMasterIO() const override
true si l'instance est un gestionnaire maître des entrées/sorties.
bool m_is_initialized
true si déjà initialisé
Integer masterIORank() const override
Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
IParallelNonBlockingCollective * nonBlockingCollective() const override
Interface des opérations collectives non blocantes.
PointToPointMessageInfo buildMessage(Int32 dest, MP::eBlockingType is_blocking)
Construit un message avec pour destinataire dest.
IParallelMng * worldParallelMng() const override
Gestionnaire de parallélisme sur l'ensemble des ressources allouées.
Parallel::IStat * stat() override
Gestionnaire des statistiques.
IVariableSynchronizer * createSynchronizer(IItemFamily *family) override
Retourne une interface pour synchroniser des variables sur le groupe de la famille family.
MP::Communicator communicator() const override
Communicateur MPI associé à ce gestionnaire.
IIOMng * ioMng() const override
Gestionnaire des entrées/sorties.
ITraceMng * traceMng() const override
Gestionnaire de traces.
Int32 m_rank
Rang de l'instance.
bool isParallel() const override
Retourne true si l'exécution est parallèle.
bool isHybridImplementation() const override
Indique si l'implémentation utilise le mode hybride.
Int32 commSize() const override
Nombre d'instance dans le communicateur.
Int32 commRank() const override
Rang de cette instance dans le communicateur.
IParallelExchanger * createExchanger() override
Retourne une interface pour transférer des messages entre processeurs.
IThreadMng * threadMng() const override
Gestionnaire de threads.
void * getMPICommunicator() override
Adresse du communicateur MPI associé à ce gestionnaire.
ITransferValuesParallelOperation * createTransferValuesOperation() override
Retourne une opération pour transférer des valeurs entre sous-domaine.
ITimerMng * timerMng() const override
Gestionnaire de timers.
Statistiques sur le parallélisme.
Référence à une instance.
Encapsulation d'un pointeur avec compteur de référence.
Implémentation d'un tampon pour la sérialisation.
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
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 SharedMemoryParallelMng.