Superviseur du parallélisme utilisant MPI et Threads. Plus de détails...
Fonctions membres publiques | |
HybridParallelSuperMng (const ServiceBuildInfo &sbi) | |
void | initialize () override |
Initialise l'instance. | |
void | build () override |
Construit les membres l'instance. | |
IApplication * | application () const override |
Retourne le gestionnaire principal. | |
IThreadMng * | threadMng () 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. | |
void * | getMPICommunicator () override |
Adresse du communicateur MPI associé à ce gestionnaire. | |
MP::Communicator | communicator () const override |
Communicateur MPI associé à ce gestionnaire. | |
Ref< IParallelMng > | internalCreateWorldParallelMng (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 | |
HybridParallelMngContainer * | m_container = nullptr |
Ref< IParallelMngContainerFactory > | m_builder_factory |
Ref< IParallelMngContainer > | m_main_builder |
IApplication * | m_application |
Gestionnaire principal. | |
Parallel::IStat * | m_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 |
MpiLock * | m_mpi_lock |
MpiAdapter * | m_mpi_adapter |
MpiDatatypeList * | m_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 () |
Superviseur du parallélisme utilisant MPI et Threads.
Définition à la ligne 274 du fichier HybridParallelSuperMng.cc.
|
explicit |
Définition à la ligne 324 du fichier HybridParallelSuperMng.cc.
|
override |
Définition à la ligne 341 du fichier HybridParallelSuperMng.cc.
|
inlineoverridevirtual |
Retourne le gestionnaire principal.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 285 du fichier HybridParallelSuperMng.cc.
Références m_application.
|
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.
|
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().
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().
|
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().
|
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.
|
inlineoverridevirtual |
Communicateur MPI associé à ce gestionnaire.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 292 du fichier HybridParallelSuperMng.cc.
|
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.
|
overridevirtual |
Initialise l'instance.
L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 360 du fichier HybridParallelSuperMng.cc.
|
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().
|
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().
|
inlineoverridevirtual |
Retourne true si l'exécution est parallèle.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 287 du fichier HybridParallelSuperMng.cc.
|
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.
|
inlineoverridevirtual |
Nombre de sous-domaines à créér localement.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 297 du fichier HybridParallelSuperMng.cc.
|
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.
|
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.
|
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().
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().
Ref<IParallelMngContainerFactory> Arcane::MessagePassing::HybridParallelSuperMng::m_builder_factory |
Définition à la ligne 305 du fichier HybridParallelSuperMng.cc.
MP::Communicator Arcane::MessagePassing::HybridParallelSuperMng::m_communicator |
Définition à la ligne 313 du fichier HybridParallelSuperMng.cc.
HybridParallelMngContainer* Arcane::MessagePassing::HybridParallelSuperMng::m_container = nullptr |
Définition à la ligne 304 du fichier HybridParallelSuperMng.cc.
MpiDatatypeList* Arcane::MessagePassing::HybridParallelSuperMng::m_datatype_list |
Définition à la ligne 317 du fichier HybridParallelSuperMng.cc.
MpiErrorHandler Arcane::MessagePassing::HybridParallelSuperMng::m_error_handler |
Définition à la ligne 318 du fichier HybridParallelSuperMng.cc.
Int32 Arcane::MessagePassing::HybridParallelSuperMng::m_local_nb_rank = A_NULL_RANK |
Définition à la ligne 314 du fichier HybridParallelSuperMng.cc.
Ref<IParallelMngContainer> Arcane::MessagePassing::HybridParallelSuperMng::m_main_builder |
Définition à la ligne 306 du fichier HybridParallelSuperMng.cc.
MpiAdapter* Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_adapter |
Définition à la ligne 316 du fichier HybridParallelSuperMng.cc.
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().
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().
MPI_Comm Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_communicator |
Définition à la ligne 312 du fichier HybridParallelSuperMng.cc.
MpiLock* Arcane::MessagePassing::HybridParallelSuperMng::m_mpi_lock |
Définition à la ligne 315 du fichier HybridParallelSuperMng.cc.
Parallel::IStat* Arcane::MessagePassing::HybridParallelSuperMng::m_stat |
Définition à la ligne 309 du fichier HybridParallelSuperMng.cc.