Comm_Group#
#include <Comm_Group.h>
: Cette classe decrit un groupe de processeurs sur lesquels
How to cite this class in this doc#
:ref:`Comm\_Group <class-comm-group>`
[Comm\_Group](#class-comm-group)
Detailed description#
une portion de code s’execute simultanement. Elle fournit toutes les methodes permettant d’echanger des donnees entre les processeurs du groupe (mpsum, send, recv, …), et de synchroniser les processeurs (barrier). Elle est specialisee selon le support reseau (MPI, PVM, …) Attention, ces methodes sont reservees a des operations de bas niveau (noyau TRUST). Dans le code courant, il faut utiliser les methodes classes de communications de haut niveau : (envoyer(), envoyer_broadcast(), class Schema_Comm , class Process , etc) Pour creer un nouveau groupe et l’utiliser, voir class PE_Groups Pour la procedure d’initialisation, voir PE_Groups::Initialize()
Inherits from#
public : Objet_U
Inherited by#
public : Comm_Group_MPI
public : Comm_Group_Noparallel
List of Public Static Methods#
List of Public Methods#
List of Protected Methods#
Complete Member Function Documentation#
int Comm_Group::check_enabled()
Referenced By
How to cite in this doc:
:ref:`int Comm_Group::check_enabled() <public-static-int-comm-group-check-enabled>`
[int Comm_Group::check_enabled()](#public-static-int-comm-group-check-enabled)
const Type_info * Comm_Group::info()
How to cite in this doc:
:ref:`const Type_info * Comm_Group::info() <public-static-const-type-info-ptr-comm-group-info>`
[const Type_info * Comm_Group::info()](#public-static-const-type-info-ptr-comm-group-info)
const Comm_Group & Comm_Group::self_cast(const Objet_U &)
How to cite in this doc:
:ref:`const Comm_Group & Comm_Group::self_cast(const Objet_U &) <public-static-const-comm-group-ref-comm-group-self-cast-const-objet-u-ref>`
[const Comm_Group & Comm_Group::self_cast(const Objet_U &)](#public-static-const-comm-group-ref-comm-group-self-cast-const-objet-u-ref)
Comm_Group & Comm_Group::self_cast(Objet_U &)
How to cite in this doc:
:ref:`Comm_Group & Comm_Group::self_cast(Objet_U &) <public-static-comm-group-ref-comm-group-self-cast-objet-u-ref>`
[Comm_Group & Comm_Group::self_cast(Objet_U &)](#public-static-comm-group-ref-comm-group-self-cast-objet-u-ref)
void Comm_Group::set_check_enabled(int flag)
Referenced By
How to cite in this doc:
:ref:`void Comm_Group::set_check_enabled(int flag) <public-static-void-comm-group-set-check-enabled-int-flag>`
[void Comm_Group::set_check_enabled(int flag)](#public-static-void-comm-group-set-check-enabled-int-flag)
virtual void Comm_Group::abort() const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::abort() const =0 <public-virtual-void-comm-group-abort-const-equal-0>`
[virtual void Comm_Group::abort() const =0](#public-virtual-void-comm-group-abort-const-equal-0)
virtual void Comm_Group::all_gather(const void *src_buffer, void *dest_buffer, int data_size) const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::all_gather(const void *src_buffer, void *dest_buffer, int data_size) const =0 <public-virtual-void-comm-group-all-gather-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-data-size-const-equal-0>`
[virtual void Comm_Group::all_gather(const void *src_buffer, void *dest_buffer, int data_size) const =0](#public-virtual-void-comm-group-all-gather-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-data-size-const-equal-0)
virtual void Comm_Group::all_gatherv(const void *src_buffer, void *dest_buffer, int send_size, const True_int *recv_size, const True_int *displs) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::all_gatherv(const void *src_buffer, void *dest_buffer, int send_size, const True_int *recv_size, const True_int *displs) const =0 <public-virtual-void-comm-group-all-gatherv-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-send-size-const-true-int-ptr-recv-size-const-true-int-ptr-displs-const-equal-0>`
[virtual void Comm_Group::all_gatherv(const void *src_buffer, void *dest_buffer, int send_size, const True_int *recv_size, const True_int *displs) const =0](#public-virtual-void-comm-group-all-gatherv-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-send-size-const-true-int-ptr-recv-size-const-true-int-ptr-displs-const-equal-0)
virtual void Comm_Group::all_to_all(const void *src_buffer, void *dest_buffer, int data_size) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::all_to_all(const void *src_buffer, void *dest_buffer, int data_size) const =0 <public-virtual-void-comm-group-all-to-all-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-data-size-const-equal-0>`
[virtual void Comm_Group::all_to_all(const void *src_buffer, void *dest_buffer, int data_size) const =0](#public-virtual-void-comm-group-all-to-all-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-data-size-const-equal-0)
virtual void Comm_Group::barrier(int tag) const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::barrier(int tag) const =0 <public-virtual-void-comm-group-barrier-int-tag-const-equal-0>`
[virtual void Comm_Group::barrier(int tag) const =0](#public-virtual-void-comm-group-barrier-int-tag-const-equal-0)
virtual void Comm_Group::broadcast(void *buffer, int size, int pe_source) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::broadcast(void *buffer, int size, int pe_source) const =0 <public-virtual-void-comm-group-broadcast-void-ptr-buffer-int-size-int-pe-source-const-equal-0>`
[virtual void Comm_Group::broadcast(void *buffer, int size, int pe_source) const =0](#public-virtual-void-comm-group-broadcast-void-ptr-buffer-int-size-int-pe-source-const-equal-0)
Comm_Group::Comm_Group()
How to cite in this doc:
:ref:`Comm_Group::Comm_Group() <public-comm-group-comm-group>`
[Comm_Group::Comm_Group()](#public-comm-group-comm-group)
virtual void Comm_Group::gather(const void *src_buffer, void *dest_buffer, int data_size, int root) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::gather(const void *src_buffer, void *dest_buffer, int data_size, int root) const =0 <public-virtual-void-comm-group-gather-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-data-size-int-root-const-equal-0>`
[virtual void Comm_Group::gather(const void *src_buffer, void *dest_buffer, int data_size, int root) const =0](#public-virtual-void-comm-group-gather-const-void-ptr-src-buffer-void-ptr-dest-buffer-int-data-size-int-root-const-equal-0)
const Type_info * Comm_Group::get_info() const override
Donne des informations sur le type de l’ Objet_U .
Reimplements:
How to cite in this doc:
:ref:`const Type_info * Comm_Group::get_info() const override <public-const-type-info-ptr-comm-group-get-info-const-override>`
[const Type_info * Comm_Group::get_info() const override](#public-const-type-info-ptr-comm-group-get-info-const-override)
int Comm_Group::get_new_tag() const
Cette fonction renvoie un nouveau tag de communication pour le groupe.
Effet de bord : incremente le membre group_communication_tag_.
Referenced By
How to cite in this doc:
:ref:`int Comm_Group::get_new_tag() const <public-int-comm-group-get-new-tag-const>`
[int Comm_Group::get_new_tag() const](#public-int-comm-group-get-new-tag-const)
virtual void Comm_Group::mp_collective_op(const double *x, double *resu, const Collective_Op *op, int n) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const double *x, double *resu, const Collective_Op *op, int n) const =0 <public-virtual-void-comm-group-mp-collective-op-const-double-ptr-x-double-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const double *x, double *resu, const Collective_Op *op, int n) const =0](#public-virtual-void-comm-group-mp-collective-op-const-double-ptr-x-double-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0)
virtual void Comm_Group::mp_collective_op(const double *x, double *resu, int n, Collective_Op op) const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const double *x, double *resu, int n, Collective_Op op) const =0 <public-virtual-void-comm-group-mp-collective-op-const-double-ptr-x-double-ptr-resu-int-n-collective-op-op-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const double *x, double *resu, int n, Collective_Op op) const =0](#public-virtual-void-comm-group-mp-collective-op-const-double-ptr-x-double-ptr-resu-int-n-collective-op-op-const-equal-0)
virtual void Comm_Group::mp_collective_op(const float *x, float *resu, const Collective_Op *op, int n) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const float *x, float *resu, const Collective_Op *op, int n) const =0 <public-virtual-void-comm-group-mp-collective-op-const-float-ptr-x-float-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const float *x, float *resu, const Collective_Op *op, int n) const =0](#public-virtual-void-comm-group-mp-collective-op-const-float-ptr-x-float-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0)
virtual void Comm_Group::mp_collective_op(const float *x, float *resu, int n, Collective_Op op) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const float *x, float *resu, int n, Collective_Op op) const =0 <public-virtual-void-comm-group-mp-collective-op-const-float-ptr-x-float-ptr-resu-int-n-collective-op-op-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const float *x, float *resu, int n, Collective_Op op) const =0](#public-virtual-void-comm-group-mp-collective-op-const-float-ptr-x-float-ptr-resu-int-n-collective-op-op-const-equal-0)
virtual void Comm_Group::mp_collective_op(const int *x, int *resu, const Collective_Op *op, int n) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const int *x, int *resu, const Collective_Op *op, int n) const =0 <public-virtual-void-comm-group-mp-collective-op-const-int-ptr-x-int-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const int *x, int *resu, const Collective_Op *op, int n) const =0](#public-virtual-void-comm-group-mp-collective-op-const-int-ptr-x-int-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0)
virtual void Comm_Group::mp_collective_op(const int *x, int *resu, int n, Collective_Op op) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const int *x, int *resu, int n, Collective_Op op) const =0 <public-virtual-void-comm-group-mp-collective-op-const-int-ptr-x-int-ptr-resu-int-n-collective-op-op-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const int *x, int *resu, int n, Collective_Op op) const =0](#public-virtual-void-comm-group-mp-collective-op-const-int-ptr-x-int-ptr-resu-int-n-collective-op-op-const-equal-0)
virtual void Comm_Group::mp_collective_op(const trustIdType *x, trustIdType *resu, const Collective_Op *op, int n) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const trustIdType *x, trustIdType *resu, const Collective_Op *op, int n) const =0 <public-virtual-void-comm-group-mp-collective-op-const-trustidtype-ptr-x-trustidtype-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const trustIdType *x, trustIdType *resu, const Collective_Op *op, int n) const =0](#public-virtual-void-comm-group-mp-collective-op-const-trustidtype-ptr-x-trustidtype-ptr-resu-const-collective-op-ptr-op-int-n-const-equal-0)
virtual void Comm_Group::mp_collective_op(const trustIdType *x, trustIdType *resu, int n, Collective_Op op) const =0
How to cite in this doc:
:ref:`virtual void Comm_Group::mp_collective_op(const trustIdType *x, trustIdType *resu, int n, Collective_Op op) const =0 <public-virtual-void-comm-group-mp-collective-op-const-trustidtype-ptr-x-trustidtype-ptr-resu-int-n-collective-op-op-const-equal-0>`
[virtual void Comm_Group::mp_collective_op(const trustIdType *x, trustIdType *resu, int n, Collective_Op op) const =0](#public-virtual-void-comm-group-mp-collective-op-const-trustidtype-ptr-x-trustidtype-ptr-resu-int-n-collective-op-op-const-equal-0)
int Comm_Group::nproc() const
Renvoie le nombre de processeurs dans le groupe *this.
Referenced By
How to cite in this doc:
:ref:`int Comm_Group::nproc() const <public-int-comm-group-nproc-const>`
[int Comm_Group::nproc() const](#public-int-comm-group-nproc-const)
int Comm_Group::rank() const
Renvoie le rang du processeur local dans le groupe *this.
ou - 1 si je ne suis pas dans le groupe.
Referenced By
How to cite in this doc:
:ref:`int Comm_Group::rank() const <public-int-comm-group-rank-const>`
[int Comm_Group::rank() const](#public-int-comm-group-rank-const)
virtual void Comm_Group::recv(int pe, void *buffer, int size, int tag) const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::recv(int pe, void *buffer, int size, int tag) const =0 <public-virtual-void-comm-group-recv-int-pe-void-ptr-buffer-int-size-int-tag-const-equal-0>`
[virtual void Comm_Group::recv(int pe, void *buffer, int size, int tag) const =0](#public-virtual-void-comm-group-recv-int-pe-void-ptr-buffer-int-size-int-tag-const-equal-0)
virtual void Comm_Group::send(int pe, const void *buffer, int size, int tag) const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::send(int pe, const void *buffer, int size, int tag) const =0 <public-virtual-void-comm-group-send-int-pe-const-void-ptr-buffer-int-size-int-tag-const-equal-0>`
[virtual void Comm_Group::send(int pe, const void *buffer, int size, int tag) const =0](#public-virtual-void-comm-group-send-int-pe-const-void-ptr-buffer-int-size-int-tag-const-equal-0)
virtual void Comm_Group::send_recv_finish() const =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::send_recv_finish() const =0 <public-virtual-void-comm-group-send-recv-finish-const-equal-0>`
[virtual void Comm_Group::send_recv_finish() const =0](#public-virtual-void-comm-group-send-recv-finish-const-equal-0)
virtual void Comm_Group::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 =0
Referenced By
How to cite in this doc:
:ref:`virtual void Comm_Group::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 =0 <public-virtual-void-comm-group-send-recv-start-const-arrofint-ref-send-list-const-arrofint-ref-send-size-const-char-ptr-const-ptr-const-send-buffers-const-arrofint-ref-recv-list-const-arrofint-ref-recv-size-char-ptr-const-ptr-const-recv-buffers-typehint-typehint-equal-char-const-equal-0>`
[virtual void Comm_Group::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 =0](#public-virtual-void-comm-group-send-recv-start-const-arrofint-ref-send-list-const-arrofint-ref-send-size-const-char-ptr-const-ptr-const-send-buffers-const-arrofint-ref-recv-list-const-arrofint-ref-recv-size-char-ptr-const-ptr-const-recv-buffers-typehint-typehint-equal-char-const-equal-0)
Comm_Group::~Comm_Group() override
Destructeur (pour l’instant, rien a faire)
How to cite in this doc:
:ref:`Comm_Group::~Comm_Group() override <public-comm-group-dtor-comm-group-override>`
[Comm_Group::~Comm_Group() override](#public-comm-group-dtor-comm-group-override)
Comm_Group::Comm_Group(const Comm_Group &)
Le constructeur par copie est interdit !
References
How to cite in this doc:
:ref:`Comm_Group::Comm_Group(const Comm_Group &) <protected-comm-group-comm-group-const-comm-group-ref>`
[Comm_Group::Comm_Group(const Comm_Group &)](#protected-comm-group-comm-group-const-comm-group-ref)
void Comm_Group::init_group(const ArrOfInt &pe_list)
Cette fonction doit etre appelee simultanement par tous les PEs du groupe current_group avec les memes parametres.
Les processeurs de la pe_list sont les rangs dans current_group() des processeurs du nouveau groupe. Le maitre du groupe est le premier de la liste, le rang du processeur courant, s’il est dans le groupe est determine par son rang dans la liste. Il ne doit pas y avoir de doublon. Cette fonction est appelee par les methodes init_group des classes derivees.
References
Referenced By
How to cite in this doc:
:ref:`void Comm_Group::init_group(const ArrOfInt &pe_list) <protected-void-comm-group-init-group-const-arrofint-ref-pe-list>`
[void Comm_Group::init_group(const ArrOfInt &pe_list)](#protected-void-comm-group-init-group-const-arrofint-ref-pe-list)
void Comm_Group::init_group_node(int nproc, int loc_rank, int glob_rank)
Initialize all the information relative to world sizes and ranks for node communicator.
This method is called by derived classes when initializing communicator on node
References
How to cite in this doc:
:ref:`void Comm_Group::init_group_node(int nproc, int loc_rank, int glob_rank) <protected-void-comm-group-init-group-node-int-nproc-int-loc-rank-int-glob-rank>`
[void Comm_Group::init_group_node(int nproc, int loc_rank, int glob_rank)](#protected-void-comm-group-init-group-node-int-nproc-int-loc-rank-int-glob-rank)
void Comm_Group::init_group_trio(int nproc, int rank)
Initialise le groupe_TRUST().
Cette methode est appelee par init_group_trio() des classes derivees
References
How to cite in this doc:
:ref:`void Comm_Group::init_group_trio(int nproc, int rank) <protected-void-comm-group-init-group-trio-int-nproc-int-rank>`
[void Comm_Group::init_group_trio(int nproc, int rank)](#protected-void-comm-group-init-group-trio-int-nproc-int-rank)
const Comm_Group & Comm_Group::operator=(const Comm_Group &)
La copie est interdite !
References
How to cite in this doc:
:ref:`const Comm_Group & Comm_Group::operator=(const Comm_Group &) <protected-const-comm-group-ref-comm-group-operator-equal-const-comm-group-ref>`
[const Comm_Group & Comm_Group::operator=(const Comm_Group &)](#protected-const-comm-group-ref-comm-group-operator-equal-const-comm-group-ref)
Sortie & Comm_Group::printOn(Sortie &x) const override
Ecriture de l’objet sur un flot de sortie Methode a surcharger.
Reimplements:
References
How to cite in this doc:
:ref:`Sortie & Comm_Group::printOn(Sortie &x) const override <protected-sortie-ref-comm-group-printon-sortie-ref-x-const-override>`
[Sortie & Comm_Group::printOn(Sortie &x) const override](#protected-sortie-ref-comm-group-printon-sortie-ref-x-const-override)
Entree & Comm_Group::readOn(Entree &) override
Lecture d’un Objet_U sur un flot d’entree Methode a surcharger.
Reimplements:
References
How to cite in this doc:
:ref:`Entree & Comm_Group::readOn(Entree &) override <protected-entree-ref-comm-group-readon-entree-ref-override>`
[Entree & Comm_Group::readOn(Entree &) override](#protected-entree-ref-comm-group-readon-entree-ref-override)
Attributes Documentation#
const Type_info Comm_Group::info_obj
int Comm_Group::check_enabled_ = 0
int Comm_Group::static_group_number_ = 0
int Comm_Group::group_communication_tag_ = - 1
int Comm_Group::group_number_ = - 1
int Comm_Group::group_tag_increment_ = - 1
ArrOfInt Comm_Group::local_ranks_
int Comm_Group::nproc_ = - 1
int Comm_Group::rank_ = - 1
ArrOfInt Comm_Group::world_ranks_
Friends#
friend class PE_Groups
Enums#
Comm_Group::Collective_Op#
Location: trust-code/src/Kernel/Utilitaires/Comm_Group.h:52
How to cite in this doc:
:ref:`Comm\_Group::Collective\_Op <enum-none-comm-group-collective-op>`
[Comm\_Group::Collective\_Op](#enum-none-comm-group-collective-op)
COLL_SUM
COLL_MIN
COLL_MAX
COLL_PARTIAL_SUM
Comm_Group::TypeHint#
Location: trust-code/src/Kernel/Utilitaires/Comm_Group.h:78
How to cite in this doc:
:ref:`Comm\_Group::TypeHint <enum-none-comm-group-typehint>`
[Comm\_Group::TypeHint](#enum-none-comm-group-typehint)
CHAR
INT
DOUBLE
FLOAT