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#

Inherited by#

List of Public Static Methods#

List of Public Methods#

List of Protected Methods#

Complete Member Function Documentation#

info
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)
self_cast
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)
self_cast
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)
set_check_enabled
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)
abort
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)
all_gather
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)
all_gatherv
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)
all_to_all
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)
barrier
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)
broadcast
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::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)
gather
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)
get_info
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)
get_new_tag
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)
mp_collective_op
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)
mp_collective_op
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)
mp_collective_op
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)
mp_collective_op
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)
mp_collective_op
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)
mp_collective_op
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)
mp_collective_op
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)
mp_collective_op
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)
nproc
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)
rank
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)
recv
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)
send
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)
send_recv_finish
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)
send_recv_start
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::~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::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)
init_group
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)
init_group_node
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
Referenced By
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)
init_group_trio
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
Referenced By
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)
operator =
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)
printOn
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)
readOn
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#

info_obj (public)
const Type_info Comm_Group::info_obj
check_enabled_ (private)
int Comm_Group::check_enabled_ = 0
static_group_number_ (private)
int Comm_Group::static_group_number_ = 0
group_communication_tag_ (private)
int Comm_Group::group_communication_tag_ = - 1
group_number_ (private)
int Comm_Group::group_number_ = - 1
group_tag_increment_ (private)
int Comm_Group::group_tag_increment_ = - 1
local_ranks_ (private)
ArrOfInt Comm_Group::local_ranks_
nproc_ (private)
int Comm_Group::nproc_ = - 1
rank_ (private)
int Comm_Group::rank_ = - 1
world_ranks_ (private)
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