16#ifndef Comm_Group_included
17#define Comm_Group_included
19#include <TRUST_Deriv.h>
20#include <TRUSTArray.h>
41 Declare_base_sans_constructeur_ni_destructeur(
Comm_Group);
70 inline int rank()
const;
71 inline int nproc()
const;
93 const ArrOfInt& send_size,
94 const char *
const *
const send_buffers,
95 const ArrOfInt& recv_list,
96 const ArrOfInt& recv_size,
97 char *
const *
const recv_buffers,
104 virtual void send(
int pe,
const void *buffer,
int size,
int tag)
const = 0;
105 virtual void recv(
int pe,
void *buffer,
int size,
int tag)
const = 0;
108 virtual void broadcast(
void *buffer,
int size,
int pe_source)
const = 0;
111 virtual void all_to_all(
const void *src_buffer,
void *dest_buffer,
int data_size)
const = 0;
112 virtual void all_gather(
const void *src_buffer,
void *dest_buffer,
int data_size)
const = 0;
113 virtual void gather(
const void *src_buffer,
void *dest_buffer,
int data_size,
int root)
const = 0;
114 virtual void all_gatherv(
const void *src_buffer,
void *dest_buffer,
int send_size,
const int* recv_size,
const int* displs)
const = 0;
120 virtual void init_group(
const ArrOfInt& pe_list);
132 static int check_enabled_;
133 static int static_group_number_;
142 ArrOfInt local_ranks_;
145 ArrOfInt world_ranks_;
149 int group_number_ = -1;
154 int group_tag_increment_ = -1;
156 mutable int group_communication_tag_ = -1;
161 return check_enabled_;
174 return group_communication_tag_;
static int check_enabled()
virtual void mp_collective_op(const double *x, double *resu, const Collective_Op *op, int n) const =0
virtual void all_gather(const void *src_buffer, void *dest_buffer, int data_size) const =0
static void set_check_enabled(int flag)
virtual void send(int pe, const void *buffer, int size, int tag) const =0
int get_node_id() const
Retrieve ID of my numa node.
virtual void send_recv_finish() const =0
int nproc() const
Renvoie le nombre de processeurs dans le groupe *this.
virtual void mp_collective_op(const int *x, int *resu, const Collective_Op *op, int n) const =0
virtual 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 =0
int rank() const
Renvoie le rang du processeur local dans le groupe *this.
virtual void all_gatherv(const void *src_buffer, void *dest_buffer, int send_size, const int *recv_size, const int *displs) const =0
const Comm_Group & operator=(const Comm_Group &)
La copie est interdite !
virtual void broadcast(void *buffer, int size, int pe_source) const =0
virtual void abort() const =0
virtual void mp_collective_op(const float *x, float *resu, const Collective_Op *op, int n) const =0
virtual void mp_collective_op(const float *x, float *resu, int n, Collective_Op op) const =0
virtual void mp_collective_op(const double *x, double *resu, int n, Collective_Op op) const =0
virtual void all_to_all(const void *src_buffer, void *dest_buffer, int data_size) const =0
virtual void barrier(int tag) const =0
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.
virtual void init_group(const ArrOfInt &pe_list)
Cette fonction doit etre appelee simultanement par tous les PEs du groupe current_group avec les meme...
virtual void mp_collective_op(const int *x, int *resu, int n, Collective_Op op) const =0
virtual void recv(int pe, void *buffer, int size, int tag) const =0
int get_number_of_nodes() const
virtual void gather(const void *src_buffer, void *dest_buffer, int data_size, int root) const =0
~Comm_Group() override
Destructeur (pour l'instant, rien a faire).
void init_group_trio(int nproc, int rank)
Initialise le groupe_TRUST().
int get_new_tag() const
Cette fonction renvoie un nouveau tag de communication pour le groupe.
Objet_U()
Constructeur par defaut : attribue un numero d'identifiant unique a l'objet (object_id_),...