NewMadeleine

Documentation

« back to PM2 home.
nm_coll_trees.h File Reference
#include <nm_log.h>
#include <nm_core_interface.h>
Include dependency graph for nm_coll_trees.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  nm_coll_tree_info_s
 description of an instanciated tree More...
 
struct  nm_coll_tree_status_s
 common status for a non-blocking operation that walks a tree More...
 
enum  nm_coll_tree_kind_e {
  NM_COLL_TREE_NONE = 0 , NM_COLL_TREE_FLAT , NM_COLL_TREE_CHAIN , NM_COLL_TREE_CHAIN_MODIFIED ,
  NM_COLL_TREE_2CHAINS_MODIFIED , NM_COLL_TREE_LADDER , NM_COLL_TREE_BINOMIAL , NM_COLL_TREE_3NOMIAL ,
  NM_COLL_TREE_4NOMIAL , NM_COLL_TREE_8NOMIAL , NM_COLL_TREE_BINARY , NM_COLL_TREE_3ARY ,
  NM_COLL_TREE_4ARY , NM_COLL_TREE_8ARY , NM_COLL_TREE_DEFAULT , _NM_COLL_TREE_MAX
}
 kind of tree More...
 
typedef enum nm_coll_tree_kind_e nm_coll_tree_kind_t
 
void nm_coll_tree_init (struct nm_coll_tree_info_s *p_tree, nm_coll_tree_kind_t kind, int n, int self, int root)
 
void nm_coll_tree_step (const struct nm_coll_tree_info_s *p_tree, int step, int *p_parent, int *p_children, int *n_children)
 get the parent & children for the local node at the given step.
 
int nm_coll_tree_weight (const struct nm_coll_tree_info_s *p_tree, int step, int self)
 
static const char * nm_coll_tree_kind_name (nm_coll_tree_kind_t kind)
 
nm_coll_tree_kind_t nm_coll_tree_kind_by_name (const char *s_kind)
 
nm_coll_tree_kind_t nm_coll_tree_env (void)
 get tree kind from environment
 
nm_coll_tree_kind_t nm_coll_tree_heuristic (int comm_size __attribute__((unused)), nm_len_t data_size)
 
int nm_coll_binary_nb_nodes_in_left_subtree (const struct nm_coll_tree_info_s *const p_tree)
 
static int nm_coll_log2_floor (int x)
 floor(log2(x))
 
static int nm_coll_log2_ceil (int x)
 ceil(log2(x))
 
static int nm_coll_log4_floor (int x)
 floor(log4(x))
 
static int nm_coll_ipow (int base, int exp)
 fast integer power() = base ^ exp
 
static int nm_coll_log_n_ceil (int x, const int n)
 ceil(log_n(x))
 
static int nm_coll_log_n_floor (int x, const int n)
 floor(log_n(x)
 
static int nm_coll_r2v (int i, const struct nm_coll_tree_info_s *p_tree)
 translate real ranks to virtual ranks (with root=0)
 
static int nm_coll_v2r (int i, const struct nm_coll_tree_info_s *p_tree)
 translate virtual ranks (with root=0) to real ranks
 
static void nm_coll_tree_status_init (struct nm_coll_tree_status_s *p_status, nm_session_t p_session, nm_coll_tree_kind_t kind, nm_group_t p_group, int root, int self, nm_tag_t tag)
 initialize a common status for non-blocking collective
 
static void nm_coll_tree_status_destroy (struct nm_coll_tree_status_s *p_status)
 
static void nm_coll_tree_send (struct nm_coll_tree_status_s *p_coll_tree, int dest, struct nm_data_s *p_data, nm_sr_request_t *p_req)
 
static void nm_coll_tree_issend (struct nm_coll_tree_status_s *p_coll_tree, int dest, struct nm_data_s *p_data, nm_sr_request_t *p_req)
 
static void nm_coll_tree_recv (struct nm_coll_tree_status_s *p_coll_tree, int from, struct nm_data_s *p_data, nm_sr_request_t *p_req)
 
static void nm_coll_tree_set_notifier (struct nm_coll_tree_status_s *p_coll_tree, nm_sr_request_t *p_req, void(*p_notifier)(nm_sr_event_t, const nm_sr_event_info_t *, void *))
 
static int nm_coll_tree_req_index (struct nm_coll_tree_status_s *p_coll_tree, nm_sr_request_t *p_request)