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"
30class IParallelTopology;
35class ISharedMemoryMessageQueue;
36class SharedMemoryAllDispatcher;
47 : rank(-1), nb_rank(0), trace_mng(
nullptr), thread_mng(
nullptr)
48 , message_queue(
nullptr), thread_barrier(
nullptr), all_dispatchers(
nullptr){}
79 bool isParallel()
const override {
return m_is_parallel; }
80 Int32
commRank()
const override {
return m_rank; }
81 Int32
commSize()
const override {
return m_nb_rank; }
88 void initialize()
override;
89 bool isMasterIO()
const override {
return commRank()==0; }
97 void sendSerializer(
ISerializer* values,Int32 rank)
override;
101 void recvSerializer(
ISerializer* values,Int32 rank)
override;
106 void broadcastSerializer(
ISerializer* values,Int32 rank)
override;
112 void printStats()
override;
113 void barrier()
override;
116 ARCANE_DEPRECATED_260 Real reduceRank(
eReduceType rt,Real v,Int32* rank)
118 Real
rv = reduce(
rt,v);
126 void build()
override;
132 return m_thread_barrier;
160 bool _isAcceleratorAware()
const override {
return true; }
171 ISharedMemoryMessageQueue* m_message_queue;
Tableau d'items de types quelconques.
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 gestionnaire de thread.
Interface d'un gestionnaire de timer.
Envoie de valeurs sur différents processeurs.
Interface d'un service de synchronisation de variable.
Groupe d'entités de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Interface d'une file de messages avec les threads.
Implémentation de IRequestList pour SharedMemoryParallelMng.
Gestionnaire du parallélisme utilisant les threads.
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.
IParallelMng * worldParallelMng() const override
Gestionnaire de parallélisme sur l'ensemble des ressources allouées.
Parallel::IStat * stat() override
Gestionnaire des statistiques.
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.
IThreadMng * threadMng() const override
Gestionnaire de threads.
void * getMPICommunicator() override
Adresse du communicateur MPI associé à ce gestionnaire.
ITimerMng * timerMng() const override
Gestionnaire de timers.
Redirige la gestion des messages des sous-domaines suivant le type de l'argument.
Statistiques sur le parallélisme.
Vue constante d'un tableau de type T.
Interface d'un sérialiseur.
Interface d'une barrière entre threads.
Interface du gestionnaire de traces.
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.
Informations pour envoyer/recevoir un message point à point.
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eBlockingType
Type indiquant si un message est bloquant ou non.
eReduceType
Types des réductions supportées.
Infos pour construire un SharedMemoryParallelMng.