Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::MessagePassing::HybridParallelSuperMng

Superviseur du parallélisme utilisant MPI et Threads. Plus de détails...

+ Graphe d'héritage de Arcane::MessagePassing::HybridParallelSuperMng:
+ Graphe de collaboration de Arcane::MessagePassing::HybridParallelSuperMng:

Fonctions membres publiques

 HybridParallelSuperMng (const ServiceBuildInfo &sbi)
 
void initialize () override
 Initialise l'instance.
 
void build () override
 Construit les membres l'instance.
 
IApplicationapplication () const override
 Retourne le gestionnaire principal.
 
IThreadMngthreadMng () const override
 Gestionnaire de thread.
 
bool isParallel () const override
 Retourne true si l'exécution est parallèle.
 
Int32 commRank () const override
 Retourne le numéro du process (compris entre 0 et nbProcess()-1)
 
Int32 commSize () const override
 Retourne le nombre total de process utilisés.
 
Int32 traceRank () const override
 Rang de cette instance pour les traces.
 
voidgetMPICommunicator () override
 Adresse du communicateur MPI associé à ce gestionnaire.
 
MP::Communicator communicator () const override
 Communicateur MPI associé à ce gestionnaire.
 
Ref< IParallelMnginternalCreateWorldParallelMng (Int32 local_rank) override
 Créé un gestionnaire de parallélisme pour l'ensemble des coeurs alloués.
 
void tryAbort () override
 Tente de faire un abort.
 
bool isMasterIO () const override
 true si l'instance est un gestionnaire maître des entrées/sorties.
 
Integer masterIORank () const override
 Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)
 
Integer nbLocalSubDomain () override
 Nombre de sous-domaines à créér localement.
 
void barrier () override
 Gestionnaire de parallèlisme pour l'ensemble des ressources allouées.
 
- Fonctions membres publiques hérités de Arcane::ParallelSuperMngDispatcher
virtual void allGather (ByteConstArrayView send_buf, ByteArrayView recv_buf)
 
virtual void allGather (Int32ConstArrayView send_buf, Int32ArrayView recv_buf)
 
virtual void allGather (Int64ConstArrayView send_buf, Int64ArrayView recv_buf)
 
virtual void allGather (RealConstArrayView send_buf, RealArrayView recv_buf)
 
virtual Int32 reduce (eReduceType rt, Int32 v)
 
virtual Int64 reduce (eReduceType rt, Int64 v)
 
virtual Real reduce (eReduceType rt, Real v)
 
virtual void reduce (eReduceType rt, Int32ArrayView v)
 
virtual void reduce (eReduceType rt, Int64ArrayView v)
 
virtual void reduce (eReduceType rt, RealArrayView v)
 
virtual void broadcast (ByteArrayView send_buf, Integer id)
 Envoie un tableau de valeurs sur tous les processus Cette opération synchronise le tableau de valeur send_buf sur tous les processus. Le tableau utilisé est celui du processus dont l'identifiant (processId()) est process_id. Tous les processus doivent appelés cette méthode avec le même paramètre process_id et avoir un tableau send_buf contenant le même nombre d'éléments.
 
virtual void broadcast (Int32ArrayView send_buf, Integer id)
 
virtual void broadcast (Int64ArrayView send_buf, Integer id)
 
virtual void broadcast (RealArrayView send_buf, Integer id)
 
virtual void send (ByteConstArrayView values, Integer id)
 
virtual void send (Int32ConstArrayView values, Integer id)
 
virtual void send (Int64ConstArrayView values, Integer id)
 
virtual void send (RealConstArrayView values, Integer id)
 
virtual void recv (ByteArrayView values, Integer id)
 
virtual void recv (Int32ArrayView values, Integer id)
 
virtual void recv (Int64ArrayView values, Integer id)
 
virtual void recv (RealArrayView values, Integer id)
 
virtual Request send (ByteConstArrayView values, Integer id, bool is_blocked)
 
virtual Request send (Int32ConstArrayView values, Integer id, bool is_blocked)
 
virtual Request send (Int64ConstArrayView values, Integer id, bool is_blocked)
 
virtual Request send (RealConstArrayView values, Integer id, bool is_blocked)
 
virtual Request recv (ByteArrayView values, Integer id, bool is_blocked)
 
virtual Request recv (Int32ArrayView values, Integer id, bool is_blocked)
 
virtual Request recv (Int64ArrayView values, Integer id, bool is_blocked)
 
virtual Request recv (RealArrayView values, Integer id, bool is_blocked)
 
virtual void sendRecv (ByteConstArrayView send_buf, ByteArrayView recv_buf, Integer id)
 
virtual void sendRecv (Int32ConstArrayView send_buf, Int32ArrayView recv_buf, Integer id)
 
virtual void sendRecv (Int64ConstArrayView send_buf, Int64ArrayView recv_buf, Integer id)
 
virtual void sendRecv (RealConstArrayView send_buf, RealArrayView recv_buf, Integer id)
 
virtual void allToAll (ByteConstArrayView send_buf, ByteArrayView recv_buf, Integer count)
 
virtual void allToAll (Int32ConstArrayView send_buf, Int32ArrayView recv_buf, Integer count)
 
virtual void allToAll (Int64ConstArrayView send_buf, Int64ArrayView recv_buf, Integer count)
 
virtual void allToAll (RealConstArrayView send_buf, RealArrayView recv_buf, Integer count)
 
virtual Int32 scan (eReduceType rt, Int32 v)
 
virtual Int64 scan (eReduceType rt, Int64 v)
 
virtual Real scan (eReduceType rt, Real v)
 
virtual void scan (eReduceType rt, Int32ArrayView v)
 
virtual void scan (eReduceType rt, Int64ArrayView v)
 
virtual void scan (eReduceType rt, RealArrayView v)
 
- Fonctions membres publiques hérités de Arcane::IParallelSuperMng
virtual ~IParallelSuperMng ()
 Libère les ressources.
 

Attributs publics

HybridParallelMngContainerm_container = nullptr
 
Ref< IParallelMngContainerFactorym_builder_factory
 
Ref< IParallelMngContainerm_main_builder
 
IApplicationm_application
 Gestionnaire principal.
 
Parallel::IStatm_stat
 
Int32 m_mpi_comm_rank = -1
 Statistiques.
 
Int32 m_mpi_comm_size = -1
 Nombre de processeurs.
 
MPI_Comm m_mpi_communicator
 
MP::Communicator m_communicator
 
Int32 m_local_nb_rank = A_NULL_RANK
 
MpiLockm_mpi_lock
 
MpiAdapterm_mpi_adapter
 
MpiDatatypeListm_datatype_list
 
MpiErrorHandler m_error_handler
 

Membres hérités additionnels

- Types publics hérités de Arcane::IParallelSuperMng
typedef Parallel::Request Request
 
typedef Parallel::eReduceType eReduceType
 
- Fonctions membres protégées hérités de Arcane::ParallelSuperMngDispatcher
void _setDispatchers (IParallelDispatchT< Byte > *b, IParallelDispatchT< Int32 > *i32, IParallelDispatchT< Int64 > *i64, IParallelDispatchT< Real > *r)
 
void _finalize ()
 

Description détaillée

Superviseur du parallélisme utilisant MPI et Threads.

Définition à la ligne 274 du fichier HybridParallelSuperMng.cc.

Documentation des constructeurs et destructeur

◆ HybridParallelSuperMng()

Arcane::MessagePassing::HybridParallelSuperMng::HybridParallelSuperMng ( const ServiceBuildInfo sbi)
explicit

Définition à la ligne 324 du fichier HybridParallelSuperMng.cc.

◆ ~HybridParallelSuperMng()

Arcane::MessagePassing::HybridParallelSuperMng::~HybridParallelSuperMng ( )
override

Définition à la ligne 341 du fichier HybridParallelSuperMng.cc.

Documentation des fonctions membres

◆ application()

IApplication * Arcane::MessagePassing::HybridParallelSuperMng::application ( ) const
inlineoverridevirtual

Retourne le gestionnaire principal.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 285 du fichier HybridParallelSuperMng.cc.

Références m_application.

◆ barrier()

void Arcane::MessagePassing::HybridParallelSuperMng::barrier ( )
overridevirtual

Gestionnaire de parallèlisme pour l'ensemble des ressources allouées.

Effectue une barière

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 517 du fichier HybridParallelSuperMng.cc.

◆ build()

void Arcane::MessagePassing::HybridParallelSuperMng::build ( )
overridevirtual

Construit les membres l'instance.

L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée. Cette méthode doit être appelée avant initialize().

Avertissement
Cette méthode ne doit être appelée qu'une seule fois.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 368 du fichier HybridParallelSuperMng.cc.

Références Arcane::IApplication::applicationInfo(), ARCANE_CHECK_POINTER, ARCANE_FATAL, Arcane::arcaneHasThread(), Arcane::arcaneInitializeMPI(), Arcane::arcaneIsCudaAwareMPI(), Arccore::TraceAccessor::info(), m_application, m_mpi_comm_rank, m_mpi_comm_size, et Arccore::TraceAccessor::traceMng().

◆ commRank()

Int32 Arcane::MessagePassing::HybridParallelSuperMng::commRank ( ) const
inlineoverridevirtual

Retourne le numéro du process (compris entre 0 et nbProcess()-1)

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 288 du fichier HybridParallelSuperMng.cc.

Références m_mpi_comm_rank.

Référencé par internalCreateWorldParallelMng(), et isMasterIO().

◆ commSize()

Int32 Arcane::MessagePassing::HybridParallelSuperMng::commSize ( ) const
inlineoverridevirtual

Retourne le nombre total de process utilisés.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 289 du fichier HybridParallelSuperMng.cc.

Références m_mpi_comm_size.

◆ communicator()

MP::Communicator Arcane::MessagePassing::HybridParallelSuperMng::communicator ( ) const
inlineoverridevirtual

Communicateur MPI associé à ce gestionnaire.

Voir également
IParallelMng::communicator()

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 292 du fichier HybridParallelSuperMng.cc.

◆ getMPICommunicator()

void * Arcane::MessagePassing::HybridParallelSuperMng::getMPICommunicator ( )
inlineoverridevirtual

Adresse du communicateur MPI associé à ce gestionnaire.

Le communicateur n'est valide que si on utilise MPI. Sinon, l'adresse retournée est 0. La valeur retournée est de type (MPI_Comm*).

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 291 du fichier HybridParallelSuperMng.cc.

◆ initialize()

void Arcane::MessagePassing::HybridParallelSuperMng::initialize ( )
overridevirtual

Initialise l'instance.

L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.

Avertissement
Cette méthode ne doit être appelée qu'une seule fois.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 360 du fichier HybridParallelSuperMng.cc.

◆ internalCreateWorldParallelMng()

Ref< IParallelMng > Arcane::MessagePassing::HybridParallelSuperMng::internalCreateWorldParallelMng ( Int32  local_rank)
overridevirtual

Créé un gestionnaire de parallélisme pour l'ensemble des coeurs alloués.

Cette opération est collective.

Cette méthode ne doit être appelée qu'une seule fois lors de l'initialisation.

local_rank est le rang local de l'appelant dans la liste des rangs. En mode pure MPI, ce rang est toujours 0 car il n'y a qu'un seul thread. En mode Thread ou Thread/MPI, il s'agit du rang du thread utilisé lors de la création.

Le gestionnaire retourné reste la propriété de cette instance et ne doit pas être détruit.

A usage interne uniquement.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 481 du fichier HybridParallelSuperMng.cc.

Références Arcane::MessagePassing::HybridParallelMngContainer::_createParallelMng(), commRank(), Arcane::IApplication::createAndInitializeTraceMng(), Arccore::TraceAccessor::info(), m_application, et Arcane::IBase::traceMng().

◆ isMasterIO()

bool Arcane::MessagePassing::HybridParallelSuperMng::isMasterIO ( ) const
inlineoverridevirtual

true si l'instance est un gestionnaire maître des entrées/sorties.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 295 du fichier HybridParallelSuperMng.cc.

Références commRank().

◆ isParallel()

bool Arcane::MessagePassing::HybridParallelSuperMng::isParallel ( ) const
inlineoverridevirtual

Retourne true si l'exécution est parallèle.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 287 du fichier HybridParallelSuperMng.cc.

◆ masterIORank()

Integer Arcane::MessagePassing::HybridParallelSuperMng::masterIORank ( ) const
inlineoverridevirtual

Rang de l'instance gérant les entrées/sorties (pour laquelle isMasterIO() est vrai)

Dans l'implémentation actuelle, il s'agit toujours du processeur de rang 0.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 296 du fichier HybridParallelSuperMng.cc.

◆ nbLocalSubDomain()

Integer Arcane::MessagePassing::HybridParallelSuperMng::nbLocalSubDomain ( )
inlineoverridevirtual

Nombre de sous-domaines à créér localement.

  • 1 si séquentiel.
  • 1 si MPI pur
  • n si THREAD ou THREAD/MPI

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 297 du fichier HybridParallelSuperMng.cc.

◆ threadMng()

IThreadMng * Arcane::MessagePassing::HybridParallelSuperMng::threadMng ( ) const
inlineoverridevirtual

Gestionnaire de thread.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 286 du fichier HybridParallelSuperMng.cc.

Références Arcane::MessagePassing::HybridParallelMngContainer::m_thread_mng.

◆ traceRank()

Int32 Arcane::MessagePassing::HybridParallelSuperMng::traceRank ( ) const
inlineoverridevirtual

Rang de cette instance pour les traces.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 290 du fichier HybridParallelSuperMng.cc.

Références m_mpi_comm_rank.

◆ tryAbort()

void Arcane::MessagePassing::HybridParallelSuperMng::tryAbort ( )
overridevirtual

Tente de faire un abort.

Cette méthode est appelée lorsqu'une exception a été généré et que le cas en cours d'exécution doit s'interrompre. Elle permet d'effectuer les opérations de nettoyage du gestionnaire si besoin est.

Implémente Arcane::IParallelSuperMng.

Définition à la ligne 507 du fichier HybridParallelSuperMng.cc.

Références m_application, et Arcane::IBase::traceMng().

Documentation des données membres

◆ m_application

IApplication* Arcane::MessagePassing::HybridParallelSuperMng::m_application

Gestionnaire principal.

Définition à la ligne 308 du fichier HybridParallelSuperMng.cc.

Référencé par application(), build(), internalCreateWorldParallelMng(), et tryAbort().

◆ m_builder_factory

Ref<IParallelMngContainerFactory> Arcane::MessagePassing::HybridParallelSuperMng::m_builder_factory

Définition à la ligne 305 du fichier HybridParallelSuperMng.cc.

◆ m_communicator

MP::Communicator Arcane::MessagePassing::HybridParallelSuperMng::m_communicator

Définition à la ligne 313 du fichier HybridParallelSuperMng.cc.

◆ m_container

HybridParallelMngContainer* Arcane::MessagePassing::HybridParallelSuperMng::m_container = nullptr

Définition à la ligne 304 du fichier HybridParallelSuperMng.cc.

◆ m_datatype_list

MpiDatatypeList* Arcane::MessagePassing::HybridParallelSuperMng::m_datatype_list

Définition à la ligne 317 du fichier HybridParallelSuperMng.cc.

◆ m_error_handler

MpiErrorHandler Arcane::MessagePassing::HybridParallelSuperMng::m_error_handler

Définition à la ligne 318 du fichier HybridParallelSuperMng.cc.

◆ m_local_nb_rank

Int32 Arcane::MessagePassing::HybridParallelSuperMng::m_local_nb_rank = A_NULL_RANK

Définition à la ligne 314 du fichier HybridParallelSuperMng.cc.

◆ m_main_builder

Ref<IParallelMngContainer> Arcane::MessagePassing::HybridParallelSuperMng::m_main_builder

Définition à la ligne 306 du fichier HybridParallelSuperMng.cc.

◆ m_mpi_adapter

MpiAdapter* Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_adapter

Définition à la ligne 316 du fichier HybridParallelSuperMng.cc.

◆ m_mpi_comm_rank

Int32 Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_comm_rank = -1

Statistiques.

Numéro du processeur actuel

Définition à la ligne 310 du fichier HybridParallelSuperMng.cc.

Référencé par build(), commRank(), et traceRank().

◆ m_mpi_comm_size

Int32 Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_comm_size = -1

Nombre de processeurs.

Définition à la ligne 311 du fichier HybridParallelSuperMng.cc.

Référencé par build(), et commSize().

◆ m_mpi_communicator

MPI_Comm Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_communicator

Définition à la ligne 312 du fichier HybridParallelSuperMng.cc.

◆ m_mpi_lock

MpiLock* Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_lock

Définition à la ligne 315 du fichier HybridParallelSuperMng.cc.

◆ m_stat

Parallel::IStat* Arcane::MessagePassing::HybridParallelSuperMng::m_stat

Définition à la ligne 309 du fichier HybridParallelSuperMng.cc.


La documentation de cette classe a été générée à partir du fichier suivant :