Superviseur du parallélisme utilisant MPI. Plus de détails...
Fonctions membres publiques | |
MpiParallelSuperMng (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. | |
Parallel::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. | |
Fonctions membres publiques statiques | |
static void | initMPI (IApplication *app) |
Attributs publics | |
IApplication * | m_application |
Gestionnaire principal. | |
IThreadMng * | m_thread_mng |
Parallel::IStat * | m_stat |
bool | m_is_parallel |
Statistiques. | |
Int32 | m_rank |
Rang MPI dans le communicateur global de ce processus. | |
Int32 | m_nb_rank |
Nombre de processus MPI dans le communicateur global. | |
Int32 | m_nb_local_sub_domain |
Nombre de sous-domaines locaux. | |
MPI_Comm | m_mpi_main_communicator |
Communicateur MPI. | |
MP::Communicator | m_main_communicator |
Communicateur MPI. | |
MpiErrorHandler | m_error_handler |
MpiAdapter * | m_adapter |
MpiDatatypeList * | m_datatype_list |
Fonctions membres privées statiques | |
static void | _ErrorHandler (MPI_Comm *, int *,...) |
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.
Définition à la ligne 48 du fichier MpiParallelSuperMng.cc.
|
explicit |
Définition à la ligne 102 du fichier MpiParallelSuperMng.cc.
|
override |
Définition à la ligne 123 du fichier MpiParallelSuperMng.cc.
|
staticprivate |
Définition à la ligne 198 du fichier MpiParallelSuperMng.cc.
|
inlineoverridevirtual |
Retourne le gestionnaire principal.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 59 du fichier MpiParallelSuperMng.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 308 du fichier MpiParallelSuperMng.cc.
Références m_main_communicator.
|
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 219 du fichier MpiParallelSuperMng.cc.
Références Arcane::arcaneIsAcceleratorAwareMPI(), Arccore::TraceAccessor::info(), m_application, m_is_parallel, m_main_communicator, m_mpi_main_communicator, m_nb_rank, m_rank, et Arcane::IBase::traceMng().
|
inlineoverridevirtual |
Retourne le numéro du process (compris entre 0 et nbProcess()-1)
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 62 du fichier MpiParallelSuperMng.cc.
Références m_rank.
Référencé par isMasterIO().
|
inlineoverridevirtual |
Retourne le nombre total de process utilisés.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 63 du fichier MpiParallelSuperMng.cc.
Références m_nb_rank.
|
inlineoverridevirtual |
Communicateur MPI associé à ce gestionnaire.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 66 du fichier MpiParallelSuperMng.cc.
Références m_main_communicator.
|
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 65 du fichier MpiParallelSuperMng.cc.
Références m_mpi_main_communicator.
|
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 151 du fichier MpiParallelSuperMng.cc.
|
static |
Définition à la ligne 159 du fichier MpiParallelSuperMng.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 262 du fichier MpiParallelSuperMng.cc.
Références ARCANE_THROW, Arcane::IParallelMng::build(), Arccore::TraceAccessor::debug(), m_application, m_main_communicator, 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 69 du fichier MpiParallelSuperMng.cc.
Références commRank().
|
inlineoverridevirtual |
Retourne true si l'exécution est parallèle.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 61 du fichier MpiParallelSuperMng.cc.
Références m_is_parallel.
|
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 70 du fichier MpiParallelSuperMng.cc.
|
inlineoverridevirtual |
Nombre de sous-domaines à créér localement.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 71 du fichier MpiParallelSuperMng.cc.
Références m_nb_local_sub_domain.
|
inlineoverridevirtual |
Gestionnaire de thread.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 60 du fichier MpiParallelSuperMng.cc.
|
inlineoverridevirtual |
Rang de cette instance pour les traces.
Implémente Arcane::IParallelSuperMng.
Définition à la ligne 64 du fichier MpiParallelSuperMng.cc.
Références m_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 297 du fichier MpiParallelSuperMng.cc.
Références Arccore::TraceAccessor::info(), m_application, m_main_communicator, m_rank, et Arcane::IBase::traceMng().
MpiAdapter* Arcane::MpiParallelSuperMng::m_adapter |
Définition à la ligne 90 du fichier MpiParallelSuperMng.cc.
IApplication* Arcane::MpiParallelSuperMng::m_application |
Gestionnaire principal.
Définition à la ligne 80 du fichier MpiParallelSuperMng.cc.
Référencé par application(), build(), internalCreateWorldParallelMng(), et tryAbort().
MpiDatatypeList* Arcane::MpiParallelSuperMng::m_datatype_list |
Définition à la ligne 91 du fichier MpiParallelSuperMng.cc.
MpiErrorHandler Arcane::MpiParallelSuperMng::m_error_handler |
Définition à la ligne 89 du fichier MpiParallelSuperMng.cc.
bool Arcane::MpiParallelSuperMng::m_is_parallel |
Statistiques.
true si on est en mode parallèle
Définition à la ligne 83 du fichier MpiParallelSuperMng.cc.
Référencé par build(), et isParallel().
MP::Communicator Arcane::MpiParallelSuperMng::m_main_communicator |
Communicateur MPI.
Définition à la ligne 88 du fichier MpiParallelSuperMng.cc.
Référencé par barrier(), build(), communicator(), internalCreateWorldParallelMng(), et tryAbort().
MPI_Comm Arcane::MpiParallelSuperMng::m_mpi_main_communicator |
Communicateur MPI.
Définition à la ligne 87 du fichier MpiParallelSuperMng.cc.
Référencé par build(), et getMPICommunicator().
Int32 Arcane::MpiParallelSuperMng::m_nb_local_sub_domain |
Nombre de sous-domaines locaux.
Définition à la ligne 86 du fichier MpiParallelSuperMng.cc.
Référencé par nbLocalSubDomain().
Int32 Arcane::MpiParallelSuperMng::m_nb_rank |
Nombre de processus MPI dans le communicateur global.
Définition à la ligne 85 du fichier MpiParallelSuperMng.cc.
Référencé par build(), et commSize().
Int32 Arcane::MpiParallelSuperMng::m_rank |
Rang MPI dans le communicateur global de ce processus.
Définition à la ligne 84 du fichier MpiParallelSuperMng.cc.
Référencé par build(), commRank(), traceRank(), et tryAbort().
Parallel::IStat* Arcane::MpiParallelSuperMng::m_stat |
Définition à la ligne 82 du fichier MpiParallelSuperMng.cc.
IThreadMng* Arcane::MpiParallelSuperMng::m_thread_mng |
Définition à la ligne 81 du fichier MpiParallelSuperMng.cc.