TRUST 1.9.8
HPC thermohydraulic platform
Loading...
Searching...
No Matches
PE_Groups Class Reference

: Cette classe regroupe des fonctions permettant la creation, la More...

#include <PE_Groups.h>

Static Public Member Functions

static const Comm_Groupcurrent_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_Groupgroupe_TRUST ()
 Renvoie une reference au groupe de tous les processeurs TRUST.
static const Comm_Groupget_node_group ()
 Renvoie une reference au groupe sur les noeuds.
static const Comm_Groupget_node_master ()
 Renvoie le groupe contenant le maitre de mon noeud.
static const Comm_Groupget_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.

Detailed Description

: 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.

See also
la class Comm_Group

Definition at line 34 of file PE_Groups.h.

Member Function Documentation

◆ create_group()

void PE_Groups::create_group ( const ArrOfInt & liste_pe,
OWN_PTR(Comm_Group) & group,
int force_Comm_Group_NoParallel = 0 )
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.

◆ current_group()

const Comm_Group & PE_Groups::current_group ( )
inlinestatic

renvoie une reference au groupe de processeurs actif courant

Definition at line 65 of file PE_Groups.h.

◆ enter_group()

int PE_Groups::enter_group ( const Comm_Group & group)
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.

◆ exit_group()

void PE_Groups::exit_group ( )
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.

◆ finalize()

void PE_Groups::finalize ( )
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.

◆ get_nb_groups()

const int & PE_Groups::get_nb_groups ( )
static

Definition at line 274 of file PE_Groups.cpp.

◆ get_node_group()

const Comm_Group & PE_Groups::get_node_group ( )
static

Renvoie une reference au groupe sur les noeuds.

Definition at line 194 of file PE_Groups.cpp.

◆ get_node_master()

const Comm_Group & PE_Groups::get_node_master ( )
static

Renvoie le groupe contenant le maitre de mon noeud.

Definition at line 203 of file PE_Groups.cpp.

◆ get_user_defined_group()

const Comm_Group & PE_Groups::get_user_defined_group ( )
static

Renvoie une reference au groupe sur defini par l'utilisateur.

Definition at line 212 of file PE_Groups.cpp.

◆ groupe_TRUST()

const Comm_Group & PE_Groups::groupe_TRUST ( )
static

Renvoie une reference au groupe de tous les processeurs TRUST.

Definition at line 185 of file PE_Groups.cpp.

◆ has_user_defined_group()

bool PE_Groups::has_user_defined_group ( )
static

Definition at line 245 of file PE_Groups.cpp.

◆ init_group()

void PE_Groups::init_group ( const ArrOfInt & liste_pe,
OWN_PTR(Comm_Group) & group )
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.

◆ initialize()

void PE_Groups::initialize ( const Comm_Group & groupe_trio_u)
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.

◆ initialize_node()

void PE_Groups::initialize_node ( const Comm_Group & ngrp)
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.

◆ initialize_node_master()

void PE_Groups::initialize_node_master ( const Comm_Group & ngrp)
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.

◆ initialize_user_defined_group()

void PE_Groups::initialize_user_defined_group ( const Comm_Group & ngrp)
static

Definition at line 239 of file PE_Groups.cpp.

◆ rank_translate()

int PE_Groups::rank_translate ( int rank,
const Comm_Group & group,
const Comm_Group & dest_group = current_group() )
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.


The documentation for this class was generated from the following files:
  • /home/docs/checkouts/readthedocs.org/user_builds/cea-trust-platform/checkouts/v1.9.8/src/Kernel/Utilitaires/PE_Groups.h
  • /home/docs/checkouts/readthedocs.org/user_builds/cea-trust-platform/checkouts/v1.9.8/src/Kernel/Utilitaires/PE_Groups.cpp