|
TrioCFD 1.9.8
TrioCFD documentation
|
: Classe Comm_Group_MPI, derivee de la classe abstraite Comm_Group. More...
#include <Comm_Group_MPI.h>
Public Member Functions | |
| Comm_Group_MPI () | |
| Constructeur par defaut. | |
| ~Comm_Group_MPI () override | |
| void | abort () const override |
| appel a MPI_Abort et rend la main | |
| void | mp_collective_op (const double *x, double *resu, int n, Collective_Op op) const override |
| void | mp_collective_op (const double *x, double *resu, const Collective_Op *op, int n) const override |
| void | mp_collective_op (const float *x, float *resu, int n, Collective_Op op) const override |
| void | mp_collective_op (const float *x, float *resu, const Collective_Op *op, int n) const override |
| void | mp_collective_op (const int *x, int *resu, int n, Collective_Op op) const override |
| void | mp_collective_op (const int *x, int *resu, const Collective_Op *op, int n) const override |
| void | barrier (int tag) const override |
| Point de synchronisation de tous les processeurs du groupe (permet de verifier que tout le monde est la. | |
| void | send_recv_start (const ArrOfInt &send_list, const ArrOfInt &send_size, const char *const *const send_buffers, const ArrOfInt &recv_list, const ArrOfInt &recv_size, char *const *const recv_buffers, TypeHint typehint=CHAR) const override |
| Demarre l'envoi et la reception des buffers. | |
| void | send_recv_finish () const override |
| Attend que l'ensemble des communications lancees par send_recv_start soient finie. | |
| void | send (int pe, const void *buffer, int size, int tag) const override |
| Envoi blocant. | |
| void | recv (int pe, void *buffer, int size, int tag) const override |
| Reception blocante d'un message. | |
| void | broadcast (void *buffer, int size, int pe_source) const override |
| void | all_to_all (const void *src_buffer, void *dest_buffer, int data_size) const override |
| void | all_gather (const void *src_buffer, void *dest_buffer, int data_size) const override |
| void | gather (const void *src_buffer, void *dest_buffer, int data_size, int root) const override |
| void | all_gatherv (const void *src_buffer, void *dest_buffer, int send_size, const int *recv_size, const int *displs) const override |
| Public Member Functions inherited from Comm_Group | |
| Comm_Group () | |
| ~Comm_Group () override | |
| Destructeur (pour l'instant, rien a faire). | |
| int | get_new_tag () const |
| Cette fonction renvoie un nouveau tag de communication pour le groupe. | |
| int | rank () const |
| Renvoie le rang du processeur local dans le groupe *this. | |
| int | nproc () const |
| Renvoie le nombre de processeurs dans le groupe *this. | |
| int | get_node_id () const |
| Retrieve ID of my numa node. | |
| int | get_number_of_nodes () const |
| Public Member Functions inherited from Objet_U | |
| ~Objet_U () override | |
| Destructeur, supprime l'objet de la liste d'objets enregistres dans "memoire". | |
| int | numero () const |
| Renvoie l'indice de l'objet dans Memoire::data. | |
| virtual int | duplique () const =0 |
| virtual Sortie & | printOn (Sortie &) const |
| Ecriture de l'objet sur un flot de sortie Methode a surcharger. | |
| virtual Entree & | readOn (Entree &) |
| Lecture d'un Objet_U sur un flot d'entree Methode a surcharger. | |
| virtual unsigned | taille_memoire () const =0 |
| virtual int | est_egal_a (const Objet_U &) const |
| Renvoie 1 si l'objet x et *this sont une seule et meme instance (meme adresse en memoire). | |
| virtual const Nom & | le_nom () const |
| Donne le nom de l'Objet_U Methode a surcharger : renvoie "neant" dans cette implementation. | |
| virtual void | nommer (const Nom &) |
| Donne un nom a l'Objet_U Methode virtuelle a surcharger. | |
| virtual int | reprendre (Entree &) |
| Reprise d'un Objet_U sur un flot d'entree Methode a surcharger. | |
| virtual int | sauvegarder (Sortie &) const |
| Sauvegarde d'un Objet_U sur un flot de sortie Methode a surcharger. | |
| int | get_object_id () const |
| Renvoie l'identifiant unique de l'objet object_id_. | |
| virtual const Type_info * | get_info () const |
| Donne des informations sur le type de l'Objet_U. | |
| const Nom & | que_suis_je () const |
| renvoie la chaine identifiant la classe. | |
| const char * | le_type () const |
| Donne le nom du type de l'Objet_U. | |
| virtual int | change_num (const int *const) |
| Change le numero interne de l'Objet_U. | |
| virtual int | lire_motcle_non_standard (const Motcle &motlu, Entree &is) |
| Lecture des parametres de type non simple d'un objet_U a partir d'un flot d'entree. | |
| virtual int | associer_ (Objet_U &) |
| Associe l'Objet_U a un autre Objet_U Methode virtuelle a surcharger. | |
| const Interprete & | interprete () const |
| Interprete & | interprete () |
| Public Member Functions inherited from Process | |
| virtual | ~Process () |
Additional Inherited Members | |
| Public Types inherited from Comm_Group | |
| enum | Collective_Op { COLL_SUM , COLL_MIN , COLL_MAX , COLL_PARTIAL_SUM } |
| enum | TypeHint { CHAR , INT , DOUBLE , FLOAT } |
| Static Public Member Functions inherited from Comm_Group | |
| static int | check_enabled () |
| static void | set_check_enabled (int flag) |
| Static Public Member Functions inherited from Objet_U | |
| static const Nom & | nom_du_cas () |
| Renvoie une reference constante vers le nom du cas. | |
| static Nom & | get_set_nom_du_cas () |
| Renvoie une reference non constante vers le nom du cas (pour pouvoir le modifier). | |
| static const Type_info * | info () |
| Donne des informations sur le type de l'Objet_U. | |
| static const Objet_U & | self_cast (const Objet_U &) |
| methode ajoutee pour caster en python | |
| static Objet_U & | self_cast (Objet_U &) |
| Static Public Member Functions inherited from Process | |
| static int | me () |
| renvoie mon rang dans le groupe de communication courant. | |
| static int | nproc () |
| renvoie le nombre de processeurs dans le groupe courant Voir Comm_Group::nproc() et PE_Groups::current_group() | |
| static bool | is_parallel () |
| static void | exit (int exit_code=-1) |
| Routine de sortie de TRUST dans une region Kokkos. | |
| static double | mp_sum (double) |
| Calcule la somme de x sur tous les processeurs du groupe courant. | |
| static float | mp_sum (float) |
| static trustIdType | mp_sum (trustIdType) |
| Calcule la somme de x sur tous les processeurs du groupe courant. | |
| static double | mp_max (double) |
| static double | mp_min (double) |
| static int | mp_max (int) |
| renvoie le plus grand int i sur l'ensemble des processeurs du groupe courant. | |
| static int | mp_min (int) |
| renvoie le plus petit int i sur l'ensemble des processeurs du groupe courant. | |
| static double | mp_sum_as_double (int v) |
| static trustIdType | mppartial_sum (trustIdType i) |
| Calul de la somme partielle de i sur les processeurs 0 a me()-1 (renvoie 0 sur le processeur 0). | |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2) |
| C++14 compatible mp_sum_for_each: combine multiple mp_sum calls into one collective operation Usage: mp_sum_for_each(a, b); mp_sum_for_each(a, b, c); mp_sum_for_each(a, b, c, d); mp_sum_for_each(a, b, c, d, e); All arguments must be of the same type (double or int) and are modified in place. Supports 2-5 parameters. | |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2, T &arg3) |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2, T &arg3, T &arg4) |
| template<typename T> | |
| static void | mp_sum_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5) |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2) |
| C++14 compatible mp_max_for_each: combine multiple mp_max calls into one collective operation. | |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2, T &arg3) |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2, T &arg3, T &arg4) |
| template<typename T> | |
| static void | mp_max_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5) |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2) |
| C++14 compatible mp_min_for_each: combine multiple mp_min calls into one collective operation. | |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2, T &arg3) |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2, T &arg3, T &arg4) |
| template<typename T> | |
| static void | mp_min_for_each (T &arg1, T &arg2, T &arg3, T &arg4, T &arg5) |
| template<typename _TYPE_> | |
| static void | mp_sum_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1) |
| template<typename _TYPE_> | |
| static void | mp_max_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1) |
| template<typename _TYPE_> | |
| static void | mp_min_for_each_item (TRUSTArray< _TYPE_ > &x, int n=-1) |
| static bool | mp_and (bool) |
| Calcule le 'et' logique de b sur tous les processeurs du groupe courant. | |
| static bool | mp_or (bool) |
| static int | check_int_overflow (trustIdType) |
| static int | je_suis_maitre () |
| renvoie 1 si on est sur le processeur maitre du groupe courant (c'est a dire me() == 0), 0 sinon. | |
| static KOKKOS_INLINE_FUNCTION void | Kokkos_exit (const char *) |
| Routine de sortie de TRUST dans une region Kokkos. | |
| static int | node_master () |
| renvoie 1 si on est sur le processeur maitre du noeud numa, 0 sinon. | |
| static void | exit (const Nom &message, int exit_code=-1) |
| static bool | is_sequential () |
| static void | barrier () |
| Synchronise tous les processeurs du groupe courant (attend que tous les processeurs soient arrives a la barriere). | |
| static void | abort () |
| Routine de sortie de Trio-U sur une erreur abort(). | |
| static Sortie & | Journal (int message_level=0) |
| Renvoie un objet statique de type Sortie qui sert de journal d'evenements. | |
| static double | ram_processeur () |
| static void | imprimer_ram_totale (int all_process=0) |
| static bool | force_single_file (const int ranks, const Nom &filename) |
| Static Public Attributes inherited from Objet_U | |
| static double | precision_geom = 1e-10 |
| static constexpr bool | HAS_POINTER = false |
| static int | dimension =0 |
| static int | format_precision_geom =11 |
| static int | axi =0 |
| static int | bidim_axi =0 |
| static int | DEACTIVATE_SIGINT_CATCH =0 |
| static Type_info | info_obj |
| static bool | disable_TU =false |
| Flag to disable or not the writing of the .TU files. | |
| static bool | stat_per_proc_perf_log =false |
| Flag to enable the writing of the statistics detailed per processor in _csv.TU file. | |
| Static Public Attributes inherited from Process | |
| static int | exception_sur_exit =0 |
| static int | multiple_files =5120 |
| Protected Member Functions inherited from Comm_Group | |
| Comm_Group (const Comm_Group &) | |
| Le constructeur par copie est interdit ! | |
| const Comm_Group & | operator= (const Comm_Group &) |
| La copie est interdite ! | |
| virtual void | init_group (const ArrOfInt &pe_list) |
| Cette fonction doit etre appelee simultanement par tous les PEs du groupe current_group avec les memes parametres. | |
| void | init_group_node (int nproc, int loc_rank, int glob_rank) |
| Initialize all the information relative to world sizes and ranks for node communicator. | |
| void | init_group_trio (int nproc, int rank) |
| Initialise le groupe_TRUST(). | |
| Protected Member Functions inherited from Objet_U | |
| Objet_U () | |
| Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_), et enregistre l'objet en "memoire". | |
| Objet_U (const Objet_U &) | |
| Constructeur par copie. | |
| const Objet_U & | operator= (const Objet_U &) |
| Operateur= : ne fait rien (on conserve le numero et l'identifiant). | |
| virtual void | set_param (Param &) const |
| Protected Attributes inherited from Comm_Group | |
| int | node_id_ = -1 |
| int | nb_nodes_ = -1 |
: Classe Comm_Group_MPI, derivee de la classe abstraite Comm_Group.
Cette classe represente un groupe de communication qui repose sur MPI.
Construction de l'objet : voir init_group_trio() pour le groupe_TRUST et init_group() pour les autres.
Definition at line 36 of file Comm_Group_MPI.h.
| Comm_Group_MPI::Comm_Group_MPI | ( | ) |
Constructeur par defaut.
Il faut ensuite appeler init_group() ou init_group_trio() pour finir la construction du groupe.
Definition at line 98 of file Comm_Group_MPI.cpp.
|
override |
Definition at line 107 of file Comm_Group_MPI.cpp.
|
overridevirtual |
appel a MPI_Abort et rend la main
Implements Comm_Group.
Definition at line 149 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 509 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 519 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 488 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Point de synchronisation de tous les processeurs du groupe (permet de verifier que tout le monde est la.
..). Si check_enabled() est non nul, on utilise le tag pour verifier que tous les processeurs sont bien en train d'attendre le meme tag, sinon c'est une barriere simple. Le tag doit verifier 0 <= tag < max_tag (soit 32).
Implements Comm_Group.
Definition at line 281 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 478 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 499 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 234 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 204 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 243 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 211 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 252 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Implements Comm_Group.
Definition at line 218 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Reception blocante d'un message.
Implements Comm_Group.
Definition at line 465 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Envoi blocant.
Pour etre bien certain que le code est safe, on force une communication synchrone pour forcer le blocage en mode check (voir check_enabled()). Sinon, on utilise MPI_Send qui est en general non blocant pour les petits messages (donc de meilleures performances).
Implements Comm_Group.
Definition at line 445 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Attend que l'ensemble des communications lancees par send_recv_start soient finie.
Implements Comm_Group.
Definition at line 409 of file Comm_Group_MPI.cpp.
|
overridevirtual |
Demarre l'envoi et la reception des buffers.
Les buffers doivent rester valide jusqu'au retour de send_recv_finish(). Le graphe de communication et la taille des buffers doivent etre corrects !
send_list : liste des processeurs (numerotation sur groupe courant) a qui envoyer send_size : taille en octets de chaque message send_buffers : adresse des donnees a envoyer. recv_... : idem pour les donnees en reception.
Implements Comm_Group.
Definition at line 327 of file Comm_Group_MPI.cpp.