|
TrioCFD 1.9.8
TrioCFD documentation
|
: Cette classe regroupe des fonctions permettant la creation, la More...
#include <PE_Groups.h>
Static Public Member Functions | |
| static const Comm_Group & | current_group () |
| renvoie une reference au groupe de processeurs actif courant | |
| static void | create_group (const ArrOfInt &liste_pe, OWN_PTR(Comm_Group) &group, int force_Comm_Group_NoParallel=0) |
| Creation d'un nouveau groupe de processeurs (utilisation possible n'importe ou dans le code). | |
| static void | init_group (const ArrOfInt &liste_pe, OWN_PTR(Comm_Group) &group) |
| Initialisation d'un nouveau groupe de processeurs deja instantie (utilisation possible n'importe ou dans le code). | |
| static int | enter_group (const Comm_Group &group) |
| Si le processeur local appartient au groupe, le groupe courant pour ce processeur devient "group" et on renvoie 1, sinon on renvoie 0. | |
| static void | exit_group () |
| Retourne dans le groupe ou l'on etait avant le dernier enter_group() reussi (dont le resultat a ete 1). | |
| static const int & | get_nb_groups () |
| static int | rank_translate (int rank, const Comm_Group &group, const Comm_Group &dest_group=current_group()) |
| Calcule le rank dans le groupe courant du processeur de rang "rank" dans le "group". | |
| static const Comm_Group & | groupe_TRUST () |
| Renvoie une reference au groupe de tous les processeurs TRUST. | |
| static const Comm_Group & | get_node_group () |
| Renvoie une reference au groupe sur les noeuds. | |
| static const Comm_Group & | get_node_master () |
| Renvoie le groupe contenant le maitre de mon noeud. | |
| static const Comm_Group & | get_user_defined_group () |
| Renvoie une reference au groupe sur defini par l'utilisateur. | |
| static bool | has_user_defined_group () |
| static void | initialize (const Comm_Group &groupe_trio_u) |
| Methode a appeler au debut de l'execution (MAIN. | |
| static void | initialize_node (const Comm_Group &ngrp) |
| Methode a appeler apres l'initialisation de trio_u_world et l'initialisation des compteurs statistiques de TRUST. | |
| static void | initialize_node_master (const Comm_Group &ngrp) |
| Methode a appeler apres l'initialisation de trio_u_world et de node_group et l'initialisation des compteurs statistiques de TRUST. | |
| static void | initialize_user_defined_group (const Comm_Group &ngrp) |
| static void | finalize () |
| Methode a appeler en fin d'execution, une fois qu'on est revenu dans le groupe_TRUST() et juste avant de detruire de Comm_Group. | |
: Cette classe regroupe des fonctions permettant la creation, la
destruction et le changement du groupe de processeurs actif. La creation du groupe principal doit etre dans le MAIN.cpp et il faut initialiser PE_Groups en lui donnant le groupe principal. Les autres groupes crees seront du meme type.
Definition at line 34 of file PE_Groups.h.
|
static |
Creation d'un nouveau groupe de processeurs (utilisation possible n'importe ou dans le code).
Il faut l'appeler simultanement sur tous les processeurs du groupe current_group() avec le meme tableau liste_pe. liste_pe est la liste des rangs dans le groupe courant des processeurs que l'on veut inclure dans le groupe. Le premier de la liste sera le maitre du groupe. La liste ne doit pas comporter de doublon et doit contenir au moins un processeur. La methode type et initialize l'objet group. Il faut ensuite appeler enter_group() et exit_group() (autant de fois qu'on veut)
Definition at line 53 of file PE_Groups.cpp.
|
inlinestatic |
renvoie une reference au groupe de processeurs actif courant
Definition at line 65 of file PE_Groups.h.
|
static |
Si le processeur local appartient au groupe, le groupe courant pour ce processeur devient "group" et on renvoie 1, sinon on renvoie 0.
Une reference au groupe actuel est sauvegardee et sera restauree quand on appellera exit_group(). Cette methode doit etre appelee simultanement sur tous les processeurs du groupe "group". Attention: a chaque enter_group() doit correspondre un exit_group(). Cependant, il n'est pas interdit d'entrer plusieurs fois de suite dans le meme groupe, ni d'entrer dans un groupe plus grand que le groupe actuel. Exemple : group1 et group2 forment une partition du groupe_TRUST()
int sync_point(int x) { PE_Groups::enter_group(groupe_TRUST()); int i = mp_sum(x); PE_Groups::exit_group(); return i; } if (PE_Groups::enter_group(group1)) { s1 = mp_sum(x); // Somme sur le groupe 2 // Point de synchro avec l'autre groupe: s_all = sync_point(x); } else if (PE_Groups::enter_group(group2)) { s2 = mp_sum(x); // Point de synchro avec l'autre groupe: s_all = sync_point(x); } else { Cerr << "Error: processor " << me() << " is not within a subgroup."; exit(); } PE_Groups::exit_group(); // Sort du sous-groupe
Definition at line 118 of file PE_Groups.cpp.
|
static |
Retourne dans le groupe ou l'on etait avant le dernier enter_group() reussi (dont le resultat a ete 1).
Cette methode doit etre appelee simultanement sur tous les processeurs du current_group() actif juste avant exit_group()).
Definition at line 154 of file PE_Groups.cpp.
|
static |
Methode a appeler en fin d'execution, une fois qu'on est revenu dans le groupe_TRUST() et juste avant de detruire de Comm_Group.
principal.
Definition at line 263 of file PE_Groups.cpp.
|
static |
Definition at line 274 of file PE_Groups.cpp.
|
static |
Renvoie une reference au groupe sur les noeuds.
Definition at line 194 of file PE_Groups.cpp.
|
static |
Renvoie le groupe contenant le maitre de mon noeud.
Definition at line 203 of file PE_Groups.cpp.
|
static |
Renvoie une reference au groupe sur defini par l'utilisateur.
Definition at line 212 of file PE_Groups.cpp.
|
static |
Renvoie une reference au groupe de tous les processeurs TRUST.
Definition at line 185 of file PE_Groups.cpp.
|
static |
Definition at line 245 of file PE_Groups.cpp.
|
static |
Initialisation d'un nouveau groupe de processeurs deja instantie (utilisation possible n'importe ou dans le code).
Il faut l'appeler simultanement sur tous les processeurs du groupe current_group() avec le meme tableau liste_pe. liste_pe est la liste des rangs dans le groupe courant des processeurs que l'on veut inclure dans le groupe. Le premier de la liste sera le maitre du groupe. La liste ne doit pas comporter de doublon et doit contenir au moins un processeur. La methode type et initialize l'objet group. Il faut ensuite appeler enter_group() et exit_group() (autant de fois qu'on veut)
Definition at line 79 of file PE_Groups.cpp.
|
static |
Methode a appeler au debut de l'execution (MAIN.
cpp) Elle initialise current_group() avec groupe_trio_u
Definition at line 223 of file PE_Groups.cpp.
|
static |
Methode a appeler apres l'initialisation de trio_u_world et l'initialisation des compteurs statistiques de TRUST.
Definition at line 233 of file PE_Groups.cpp.
|
static |
Methode a appeler apres l'initialisation de trio_u_world et de node_group et l'initialisation des compteurs statistiques de TRUST.
Definition at line 252 of file PE_Groups.cpp.
|
static |
Definition at line 239 of file PE_Groups.cpp.
|
static |
Calcule le rank dans le groupe courant du processeur de rang "rank" dans le "group".
Il faut que 0 <= rank < group.nproc() Si le processeur en question n'appartient pas au groupe courant, renvoie -1.
Definition at line 174 of file PE_Groups.cpp.