UCC 1.0
Unified Collective Communications
Team abstraction data-structures

Data Structures

struct  ucc_team_p2p_conn
 
struct  ucc_ep_map_strided
 
struct  ucc_ep_map_array
 
struct  ucc_ep_map_cb
 
struct  ucc_ep_map_t
 
struct  ucc_team_params
 Structure representing the parameters to customize the team. More...
 
struct  ucc_team_attr
 Structure representing the team attributes. More...
 
union  ucc_ep_map_t.__unnamed2__
 

Typedefs

typedef struct ucc_team_p2p_conn ucc_team_p2p_conn_t
 
typedef struct ucc_ep_map_t ucc_ep_map_t
 
typedef struct ucc_team_params ucc_team_params_t
 Structure representing the parameters to customize the team. More...
 
typedef struct ucc_team_attr ucc_team_attr_t
 Structure representing the team attributes. More...
 
typedef struct ucc_team * ucc_team_h
 UCC team handle. More...
 
typedef void * ucc_p2p_conn_t
 
typedef void * ucc_context_addr_h
 
typedef size_t ucc_context_addr_len_t
 

Enumerations

enum  ucc_team_params_field {
  UCC_TEAM_PARAM_FIELD_ORDERING = UCC_BIT(0) ,
  UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS = UCC_BIT(1) ,
  UCC_TEAM_PARAM_FIELD_EP = UCC_BIT(2) ,
  UCC_TEAM_PARAM_FIELD_EP_LIST = UCC_BIT(3) ,
  UCC_TEAM_PARAM_FIELD_EP_RANGE = UCC_BIT(4) ,
  UCC_TEAM_PARAM_FIELD_TEAM_SIZE = UCC_BIT(5) ,
  UCC_TEAM_PARAM_FIELD_SYNC_TYPE = UCC_BIT(6) ,
  UCC_TEAM_PARAM_FIELD_OOB = UCC_BIT(7) ,
  UCC_TEAM_PARAM_FIELD_P2P_CONN = UCC_BIT(8) ,
  UCC_TEAM_PARAM_FIELD_MEM_PARAMS = UCC_BIT(9) ,
  UCC_TEAM_PARAM_FIELD_EP_MAP = UCC_BIT(10) ,
  UCC_TEAM_PARAM_FIELD_ID = UCC_BIT(11) ,
  UCC_TEAM_PARAM_FIELD_FLAGS = UCC_BIT(12)
}
 
enum  ucc_team_attr_field {
  UCC_TEAM_ATTR_FIELD_POST_ORDERING = UCC_BIT(0) ,
  UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS = UCC_BIT(1) ,
  UCC_TEAM_ATTR_FIELD_EP = UCC_BIT(2) ,
  UCC_TEAM_ATTR_FIELD_EP_RANGE = UCC_BIT(3) ,
  UCC_TEAM_ATTR_FIELD_SYNC_TYPE = UCC_BIT(4) ,
  UCC_TEAM_ATTR_FIELD_MEM_PARAMS = UCC_BIT(5)
}
 
enum  ucc_team_flags { UCC_TEAM_FLAG_COLL_WORK_BUFFER = UCC_BIT(0) }
 
enum  ucc_post_ordering_t {
  UCC_COLLECTIVE_POST_ORDERED = 0 ,
  UCC_COLLECTIVE_POST_UNORDERED = 1 ,
  UCC_COLLECTIVE_INIT_ORDERED = 2 ,
  UCC_COLLECTIVE_INIT_UNORDERED = 3 ,
  UCC_COLLECTIVE_INIT_AND_POST_ORDERED = 4 ,
  UCC_COLLECTIVE_INIT_AND_POST_UNORDERED = 5
}
 
enum  ucc_ep_range_type_t {
  UCC_COLLECTIVE_EP_RANGE_CONTIG = 0 ,
  UCC_COLLECTIVE_EP_RANGE_NONCONTIG = 1
}
 
enum  ucc_ep_map_type_t {
  UCC_EP_MAP_FULL = 1 ,
  UCC_EP_MAP_STRIDED = 2 ,
  UCC_EP_MAP_ARRAY = 3 ,
  UCC_EP_MAP_CB = 4
}
 

Detailed Description

Data-structures associated with team create and management routines


Data Structure Documentation

◆ ucc_ep_map_strided

struct ucc_ep_map_strided
Data Fields
uint64_t start
int64_t stride

◆ ucc_ep_map_array

struct ucc_ep_map_array
Data Fields
void * map
size_t elem_size

4 if array is int, 8 if e.g. uint64_t

◆ ucc_ep_map_t

struct ucc_ep_map_t
Data Fields
ucc_ep_map_type_t type
uint64_t ep_num

number of eps mapped to ctx

union ucc_ep_map_t.__unnamed2__ __unnamed__

◆ ucc_team_params

struct ucc_team_params

Description

ucc_team_params_t defines the parameters that can be used to customize the team. The "mask" bit array fields are defined by ucc_team_params_field. The bits in "mask" bit array is defined by ucc_team_params_field, which correspond to fields in structure ucc_team_params_t. The valid fields of the structure is specified by the setting the bit to "1" in the bit-array "mask". When bits corresponding to the fields is not set, the fields are not defined.

Data Fields
uint64_t mask
uint64_t flags
ucc_post_ordering_t ordering

ucc_team_params::ordering is set to one the values defined by ucc_post_ordering_t

uint64_t outstanding_colls

ucc_team_params::outstanding_colls represents the number of outstanding non-blocking calls the user expects to post to the team. If the user posts more non-blocking calls than set, the behavior is undefined. If not set, there is no limit on the number of outstanding calls to be posted.

uint64_t ep

ucc_team_params::ep The endpoint is a non-negative unique integer identifying the participant in the collective. If ep is not set, and ucc_team_params::oob is not set, the library generates the ep. The generated ep can be queried using the ucc_team_get_attr interface.

uint64_t * ep_list

ucc_team_params::ep_list The endpoint list provides the list of eps participating to create the team.

ucc_ep_range_type_t ep_range

ucc_team_params::ep_range can be either contiguous or not contiguous. It is a hint to the library.

uint64_t team_size

ucc_team_params::team_size The team size is the number of participants in the team. If ucc_team_params::oob is provided, the team size and ucc_oob_coll::n_oob_eps should be the same.

ucc_coll_sync_type_t sync_type

ucc_team_params::sync_type The options for sync_type are provided by ucc_coll_sync_type_t

ucc_team_oob_coll_t oob

ucc_team_params::oob The signature of the function is defined by ucc_oob_coll_t . The oob is used for exchanging information between the team participants during team creation. The user is responsible for implementing the oob operation. The relation between ucc_team_params::ep and ucc_oob_coll::oob_ep is defined as below:

ucc_team_p2p_conn_t p2p_conn

ucc_team_params::p2p_conn is a callback function for the gathering the point-to-point communication information.

ucc_mem_map_params_t mem_params

ucc_team_params::mem_params provides an ability to attach a buffer to the team. This can be used as input/output or control buffer for the team. Typically, it can be useful for one-sided collective implementation.

ucc_ep_map_t ep_map

ucc_team_params::ep_map provides a mapping between ucc_oob_coll::oob_ep used by the team and ucc_oob_coll::oob_ep used by the context. The mapping options are defined by ucc_ep_map_t. The definition is valid only when context is created with an ucc_oob_coll.

uint64_t id

ucc_team_params::id The team id is a unique integer identifying the team that is active. The integer is unique within the process and not the job .i.e., any two active non-overlapping teams can have the same id. This semantic helps to avoid a global information exchange .i.e, the processes or threads not participating in the particular, need not participate in the team creation. If not provided, the team id is created internally. For the MPI programming model, this can be inherited from the MPI communicator id.

◆ ucc_team_attr

struct ucc_team_attr

Description

ucc_team_attr_t defines the attributes of the team. The bits in "mask" bit array is defined by ucc_team_attr_field, which correspond to fields in structure ucc_team_attr_t. The valid fields of the structure is specified by the setting the bit to "1" in the bit-array "mask". When bits corresponding to the fields is not set, the fields are not defined.

Data Fields
uint64_t mask
ucc_post_ordering_t ordering
uint64_t outstanding_colls
uint64_t ep
ucc_ep_range_type_t ep_range
ucc_coll_sync_type_t sync_type
ucc_mem_map_params_t mem_params

◆ ucc_ep_map_t.__unnamed2__

union ucc_ep_map_t.__unnamed2__
Data Fields
struct ucc_ep_map_strided strided
struct ucc_ep_map_array array
struct ucc_ep_map_cb cb

Typedef Documentation

◆ ucc_team_p2p_conn_t

◆ ucc_ep_map_t

typedef struct ucc_ep_map_t ucc_ep_map_t

◆ ucc_team_params_t

Description

ucc_team_params_t defines the parameters that can be used to customize the team. The "mask" bit array fields are defined by ucc_team_params_field. The bits in "mask" bit array is defined by ucc_team_params_field, which correspond to fields in structure ucc_team_params_t. The valid fields of the structure is specified by the setting the bit to "1" in the bit-array "mask". When bits corresponding to the fields is not set, the fields are not defined.

◆ ucc_team_attr_t

Description

ucc_team_attr_t defines the attributes of the team. The bits in "mask" bit array is defined by ucc_team_attr_field, which correspond to fields in structure ucc_team_attr_t. The valid fields of the structure is specified by the setting the bit to "1" in the bit-array "mask". When bits corresponding to the fields is not set, the fields are not defined.

◆ ucc_team_h

typedef struct ucc_team* ucc_team_h

The UCC team handle is an opaque handle created by the library. It abstracts the group resources required for the collective operations and participants of the collective operation. The participants of the collective operation can be an OS process or thread.

◆ ucc_p2p_conn_t

typedef void* ucc_p2p_conn_t

◆ ucc_context_addr_h

typedef void* ucc_context_addr_h

◆ ucc_context_addr_len_t

typedef size_t ucc_context_addr_len_t

Enumeration Type Documentation

◆ ucc_team_params_field

Enumerator
UCC_TEAM_PARAM_FIELD_ORDERING 
UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS 
UCC_TEAM_PARAM_FIELD_EP 
UCC_TEAM_PARAM_FIELD_EP_LIST 
UCC_TEAM_PARAM_FIELD_EP_RANGE 
UCC_TEAM_PARAM_FIELD_TEAM_SIZE 
UCC_TEAM_PARAM_FIELD_SYNC_TYPE 
UCC_TEAM_PARAM_FIELD_OOB 
UCC_TEAM_PARAM_FIELD_P2P_CONN 
UCC_TEAM_PARAM_FIELD_MEM_PARAMS 
UCC_TEAM_PARAM_FIELD_EP_MAP 
UCC_TEAM_PARAM_FIELD_ID 
UCC_TEAM_PARAM_FIELD_FLAGS 

◆ ucc_team_attr_field

Enumerator
UCC_TEAM_ATTR_FIELD_POST_ORDERING 
UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS 
UCC_TEAM_ATTR_FIELD_EP 
UCC_TEAM_ATTR_FIELD_EP_RANGE 
UCC_TEAM_ATTR_FIELD_SYNC_TYPE 
UCC_TEAM_ATTR_FIELD_MEM_PARAMS 

◆ ucc_team_flags

Enumerator
UCC_TEAM_FLAG_COLL_WORK_BUFFER 

◆ ucc_post_ordering_t

Enumerator
UCC_COLLECTIVE_POST_ORDERED 

When set to this value, the collective participants shall post the operation in the same order.

UCC_COLLECTIVE_POST_UNORDERED 

When set to this value, the collective participants shall post the operation in any order.

UCC_COLLECTIVE_INIT_ORDERED 

When set to this value, the collective participants shall initialize the operation in the same order.

UCC_COLLECTIVE_INIT_UNORDERED 

When set to this value, the collective participants shall initialize the operation in any order.

UCC_COLLECTIVE_INIT_AND_POST_ORDERED 

When set to this value, the collective participants shall initialize and post the operation in the same order.

UCC_COLLECTIVE_INIT_AND_POST_UNORDERED 

When set to this value, the collective participants shall initialize and post the operation in any order.

◆ ucc_ep_range_type_t

Enumerator
UCC_COLLECTIVE_EP_RANGE_CONTIG 
UCC_COLLECTIVE_EP_RANGE_NONCONTIG 

◆ ucc_ep_map_type_t

Enumerator
UCC_EP_MAP_FULL 

The ep range of the team spans all eps from a context

UCC_EP_MAP_STRIDED 

The ep range of the team can be described by the 2 values: start, stride.

UCC_EP_MAP_ARRAY 

The ep range is given as an array of intergers that map the ep in the team to the team_context rank.

UCC_EP_MAP_CB 

The ep range mapping is defined as callback provided by the UCC user.