UCC 1.0
Unified Collective Communications
ucc.h
1
10#ifndef UCC_H_
11#define UCC_H_
12
13#include <ucc/api/ucc_def.h>
14#include <ucc/api/ucc_version.h>
15#include <ucc/api/ucc_status.h>
16#include <stdio.h>
17
18BEGIN_C_DECLS
19
139typedef enum {
151 UCC_COLL_TYPE_REDUCE = UCC_BIT(11),
158
162typedef enum ucc_memory_type {
171
193typedef uint64_t ucc_datatype_t;
194
195#define UCC_DT_INT8 UCC_PREDEFINED_DT(0)
196#define UCC_DT_INT16 UCC_PREDEFINED_DT(1)
197#define UCC_DT_INT32 UCC_PREDEFINED_DT(2)
198#define UCC_DT_INT64 UCC_PREDEFINED_DT(3)
199#define UCC_DT_INT128 UCC_PREDEFINED_DT(4)
200#define UCC_DT_UINT8 UCC_PREDEFINED_DT(5)
201#define UCC_DT_UINT16 UCC_PREDEFINED_DT(6)
202#define UCC_DT_UINT32 UCC_PREDEFINED_DT(7)
203#define UCC_DT_UINT64 UCC_PREDEFINED_DT(8)
204#define UCC_DT_UINT128 UCC_PREDEFINED_DT(9)
205#define UCC_DT_FLOAT16 UCC_PREDEFINED_DT(10)
206#define UCC_DT_FLOAT32 UCC_PREDEFINED_DT(11)
207#define UCC_DT_FLOAT64 UCC_PREDEFINED_DT(12)
208#define UCC_DT_BFLOAT16 UCC_PREDEFINED_DT(13)
209#define UCC_DT_PREDEFINED_LAST 14
210
216};
217
224typedef enum {
225 UCC_GENERIC_DT_OPS_FLAG_CONTIG = UCC_BIT(0),
231 UCC_GENERIC_DT_OPS_FLAG_REDUCE = UCC_BIT(1),
242
256typedef struct ucc_reduce_cb_params {
257 uint64_t mask; /*< for backward compatibility. currently ignored. */
258 void *src1; /*< input buffer */
259 void *src2; /*< input buffer: represents n_vectors buffers with
260 offset "stride" between them */
261 void *dst; /*< destination buffer */
262 size_t n_vectors; /*< number of vectors from src2 to reduce */
263 size_t count; /*< number of elements in one vector */
264 size_t stride; /*< stride in bytes between the vectors in src2 */
265 ucc_dt_generic_t *dt; /*< pointer to user-defined datatype used for
266 reduction */
267 void *cb_ctx; /*< user-defined context as defined
268 by @ref ucc_generic_dt_ops::reduce.cb_ctx */
278typedef struct ucc_generic_dt_ops {
279 uint64_t mask;
280 uint64_t flags;
281 size_t contig_size;
295 void* (*start_pack)(void *context, const void *buffer, size_t count);
296
310 void* (*start_unpack)(void *context, void *buffer, size_t count);
311
325 size_t (*packed_size)(void *state);
326
343 size_t (*pack) (void *state, size_t offset, void *dest, size_t max_length);
344
360 ucc_status_t (*unpack)(void *state, size_t offset, const void *src, size_t length);
361
376 void (*finish)(void *state);
377
387 struct {
389 void *cb_ctx;
392
393
416 ucc_datatype_t *datatype_p);
417
423
443typedef enum {
459
482typedef enum {
487
510typedef enum {
514
515
530
541
562typedef struct ucc_lib_params {
563 uint64_t mask;
565 uint64_t coll_types;
569
589typedef struct ucc_lib_attr {
590 uint64_t mask;
592 uint64_t coll_types;
596
597
627ucc_status_t ucc_lib_config_read(const char *env_prefix, const char *filename,
628 ucc_lib_config_h *config);
629
652
675void ucc_lib_config_print(const ucc_lib_config_h config, FILE *stream,
676 const char *title, ucc_config_print_flags_t print_flags);
677
701 const char *value);
702
703
711ucc_status_t ucc_init_version(unsigned api_major_version,
712 unsigned api_minor_version,
713 const ucc_lib_params_t *params,
714 const ucc_lib_config_h config,
715 ucc_lib_h *lib_p);
716
717
746static inline ucc_status_t ucc_init(const ucc_lib_params_t *params,
747 const ucc_lib_config_h config,
748 ucc_lib_h *lib_p)
749{
750 return ucc_init_version(UCC_API_MAJOR, UCC_API_MINOR, params, config,
751 lib_p);
752}
753
754
777
778
801
802/*
803 * *************************************************************
804 * Context Section
805 * *************************************************************
806 */
807
812typedef enum {
816
828
840
846typedef struct ucc_oob_coll {
847 ucc_status_t (*allgather)(void *src_buf, void *recv_buf, size_t size,
848 void *allgather_info, void **request);
849 ucc_status_t (*req_test)(void *request);
850 ucc_status_t (*req_free)(void *request);
852 uint32_t n_oob_eps;
855 uint32_t oob_ep;
863
866
871typedef struct ucc_mem_map {
872 void * address;
873 size_t len;
875
880typedef struct ucc_mem_map_params {
882 uint64_t n_segments;
884
907typedef struct ucc_context_params {
908 uint64_t mask;
912 uint64_t ctx_id;
915
935typedef struct ucc_context_attr {
936 uint64_t mask;
943
975 const char *filename,
976 ucc_context_config_h *config);
977
998
1021void ucc_context_config_print(const ucc_context_config_h config, FILE *stream,
1022 const char *title, ucc_config_print_flags_t print_flags);
1023
1049 const char *component, const char *name,
1050 const char *value);
1051
1082 const ucc_context_params_t *params,
1083 const ucc_context_config_h config,
1084 ucc_context_h *context);
1085
1107
1130
1152 ucc_context_attr_t *context_attr);
1153
1154/*
1155 * *************************************************************
1156 * Teams Section
1157 * *************************************************************
1158 */
1159
1177 UCC_TEAM_PARAM_FIELD_FLAGS = UCC_BIT(12)
1179
1192
1198 UCC_TEAM_FLAG_COLL_WORK_BUFFER = UCC_BIT(0) /*< If set, this indicates
1199 the user will provide
1200 a scratchpad buffer for
1201 use in one-sided
1202 collectives. Otherwise,
1203 an internal buffer will
1204 used. */
1206
1211typedef struct ucc_team_p2p_conn {
1212 int (*conn_info_lookup)(void *conn_ctx, uint64_t ep, ucc_p2p_conn_t **conn_info, void *request);
1215 ucc_status_t (*req_test)(void *request);
1216 ucc_status_t (*req_free)(void *request);
1218
1223typedef enum {
1224
1230
1236
1242
1248
1254
1261
1266typedef enum {
1270
1276 uint64_t start;
1277 int64_t stride;
1278};
1279
1285 void *map;
1286 size_t elem_size;
1287};
1288
1294 uint64_t (*cb)(uint64_t ep, void *cb_ctx);
1295 void *cb_ctx;
1296};
1297
1302typedef enum {
1305 UCC_EP_MAP_ARRAY = 3,
1309
1314typedef struct ucc_ep_map_t {
1316 uint64_t ep_num;
1317 union {
1318 struct ucc_ep_map_strided strided;
1319 struct ucc_ep_map_array array;
1320 struct ucc_ep_map_cb cb;
1321 };
1323
1347typedef struct ucc_team_params {
1348
1349 uint64_t mask;
1350 uint64_t flags;
1355
1362
1368 uint64_t ep;
1369
1373 uint64_t *ep_list;
1374
1379
1384 uint64_t team_size;
1385
1391
1417
1422
1429
1438
1448 uint64_t id;
1450
1470typedef struct ucc_team_attr {
1471 uint64_t mask;
1474 uint64_t ep;
1479
1480
1511 uint32_t num_contexts,
1512 const ucc_team_params_t *team_params,
1513 ucc_team_h *new_team);
1514
1515
1536
1537
1565
1587 ucc_team_attr_t *team_attr);
1588
1617ucc_status_t ucc_team_create_from_parent(uint64_t my_ep, uint32_t included,
1618 ucc_team_h parent_team,
1619 ucc_team_h *new_team);
1620
1641
1642
1663
1685 uint64_t *num_eps);
1686
1687
1688/*
1689 * *************************************************************
1690 * Collectives Section
1691 * *************************************************************
1692 */
1693
1697typedef enum {
1698 UCC_COLL_ARGS_FLAG_IN_PLACE = UCC_BIT(0),
1702 UCC_COLL_ARGS_FLAG_PERSISTENT = UCC_BIT(1),
1713 UCC_COLL_ARGS_FLAG_COUNT_64BIT = UCC_BIT(2),
1732 UCC_COLL_ARGS_FLAG_TIMEOUT = UCC_BIT(6),
1748
1753 void *buffer;
1769
1773typedef struct ucc_coll_buffer_info {
1774 void *buffer;
1780
1784typedef enum {
1788
1798
1832typedef struct ucc_coll_args {
1833 uint64_t mask;
1835 union {
1839 union {
1848 uint64_t flags;
1849 uint64_t root;
1864 double timeout;
1866
1895 ucc_coll_req_h *request, ucc_team_h team);
1896
1917
1918
1945 ucc_coll_req_h *request,
1946 ucc_team_h team);
1947
1967{
1968 return request->status;
1969}
1970
1990
1995typedef enum ucc_event_type {
1999 UCC_EVENT_OVERFLOW = UCC_BIT(3)
2001
2006typedef enum ucc_ee_type {
2012
2017typedef struct ucc_event {
2023
2028typedef struct ucc_ee_params {
2033
2063 ucc_ee_h *ee);
2064
2088
2113
2136
2159
2180
2203
2204END_C_DECLS
2205#endif
ucc_memory_type_t mem_type
Definition: ucc.h:1766
ucc_aint_t * displacements
Definition: ucc.h:1756
void * buffer
Definition: ucc.h:1774
ucc_datatype_t datatype
Definition: ucc.h:1776
ucc_count_t * counts
Definition: ucc.h:1754
ucc_count_t count
Definition: ucc.h:1775
void * buffer
Definition: ucc.h:1753
ucc_datatype_t datatype
Definition: ucc.h:1765
ucc_memory_type_t mem_type
Definition: ucc.h:1777
uint64_t ucc_count_t
Count datatype to support both small (32 bit) and large counts (64 bit)
Definition: ucc_def.h:106
enum ucc_memory_type ucc_memory_type_t
ucc_memory_type
Definition: ucc.h:162
uint16_t ucc_coll_id_t
Datatype for collective tags.
Definition: ucc_def.h:135
ucc_coll_args_field
Definition: ucc.h:1792
uint64_t ucc_aint_t
Datatype to support both small (32 bit) and large address offsets (64 bit)
Definition: ucc_def.h:112
struct ucc_coll_buffer_info_v ucc_coll_buffer_info_v_t
ucc_coll_args_flags_t
Definition: ucc.h:1697
ucc_error_type_t
Definition: ucc.h:1784
struct ucc_coll_buffer_info ucc_coll_buffer_info_t
@ UCC_MEMORY_TYPE_ROCM
Definition: ucc.h:166
@ UCC_MEMORY_TYPE_CUDA
Definition: ucc.h:164
@ UCC_MEMORY_TYPE_HOST
Definition: ucc.h:163
@ UCC_MEMORY_TYPE_ROCM_MANAGED
Definition: ucc.h:167
@ UCC_MEMORY_TYPE_CUDA_MANAGED
Definition: ucc.h:165
@ UCC_MEMORY_TYPE_LAST
Definition: ucc.h:168
@ UCC_MEMORY_TYPE_UNKNOWN
Definition: ucc.h:169
@ UCC_COLL_ARGS_FIELD_FLAGS
Definition: ucc.h:1793
@ UCC_COLL_ARGS_FIELD_GLOBAL_WORK_BUFFER
Definition: ucc.h:1796
@ UCC_COLL_ARGS_FIELD_TAG
Definition: ucc.h:1794
@ UCC_COLL_ARGS_FIELD_CB
Definition: ucc.h:1795
@ UCC_COLL_ARGS_FLAG_CONTIG_DST_BUFFER
Definition: ucc.h:1726
@ UCC_COLL_ARGS_FLAG_IN_PLACE
Definition: ucc.h:1698
@ UCC_COLL_ARGS_FLAG_CONTIG_SRC_BUFFER
Definition: ucc.h:1720
@ UCC_COLL_ARGS_FLAG_TIMEOUT
Definition: ucc.h:1732
@ UCC_COLL_ARGS_FLAG_MEM_MAPPED_BUFFERS
Definition: ucc.h:1741
@ UCC_COLL_ARGS_FLAG_DISPLACEMENTS_64BIT
Definition: ucc.h:1716
@ UCC_COLL_ARGS_FLAG_PERSISTENT
Definition: ucc.h:1702
@ UCC_COLL_ARGS_FLAG_COUNT_64BIT
Definition: ucc.h:1713
@ UCC_ERR_TYPE_LOCAL
Definition: ucc.h:1785
@ UCC_ERR_TYPE_GLOBAL
Definition: ucc.h:1786
Definition: ucc.h:1773
Definition: ucc.h:1752
ucc_reduction_op_t op
Definition: ucc.h:1843
void * global_work_buffer
Definition: ucc.h:1853
ucc_coll_callback_t cb
Definition: ucc.h:1863
double timeout
Definition: ucc.h:1864
ucc_coll_type_t coll_type
Definition: ucc.h:1834
union ucc_coll_args::@3 src
ucc_error_type_t error_type
Definition: ucc.h:1851
uint64_t root
Definition: ucc.h:1849
ucc_coll_id_t tag
Definition: ucc.h:1852
uint64_t mask
Definition: ucc.h:1833
uint64_t flags
Definition: ucc.h:1848
union ucc_coll_args::@4 dst
static ucc_status_t ucc_collective_test(ucc_coll_req_h request)
The routine to query the status of the collective operation.
Definition: ucc.h:1966
ucc_status_t ucc_collective_finalize(ucc_coll_req_h request)
The routine to release the collective operation associated with the request object.
ucc_status_t ucc_collective_init_and_post(ucc_coll_args_t *coll_args, ucc_coll_req_h *request, ucc_team_h team)
The routine to initialize and post a collective operation.
ucc_status_t ucc_collective_post(ucc_coll_req_h request)
The routine to post a collective operation.
struct ucc_coll_args ucc_coll_args_t
Structure representing arguments for the collective operations.
ucc_status_t ucc_collective_init(ucc_coll_args_t *coll_args, ucc_coll_req_h *request, ucc_team_h team)
The routine to initialize a collective operation.
Structure representing arguments for the collective operations.
Definition: ucc.h:1832
ucc_coll_sync_type_t sync_type
Definition: ucc.h:938
void * address
Definition: ucc.h:872
ucc_mem_map_params_t mem_params
Definition: ucc.h:913
size_t len
Definition: ucc.h:873
uint64_t ctx_id
Definition: ucc.h:912
ucc_coll_sync_type_t sync_type
Definition: ucc.h:910
uint64_t mask
Definition: ucc.h:908
ucc_context_addr_len_t ctx_addr_len
Definition: ucc.h:940
uint64_t global_work_buffer_size
Definition: ucc.h:941
uint64_t n_segments
Definition: ucc.h:882
ucc_context_type_t type
Definition: ucc.h:937
ucc_context_type_t type
Definition: ucc.h:909
ucc_mem_map_t * segments
Definition: ucc.h:881
ucc_context_oob_coll_t oob
Definition: ucc.h:911
ucc_context_addr_h ctx_addr
Definition: ucc.h:939
uint64_t mask
Definition: ucc.h:936
struct ucc_mem_map_params ucc_mem_map_params_t
ucc_context_attr_field
Definition: ucc.h:833
struct ucc_oob_coll ucc_oob_coll_t
OOB collective operation for creating the context.
ucc_context_type_t
Definition: ucc.h:812
struct ucc_context_config * ucc_context_config_h
UCC context configuration handle.
Definition: ucc_def.h:99
struct ucc_context_params ucc_context_params_t
Structure representing the parameters to customize the context.
struct ucc_mem_map ucc_mem_map_t
struct ucc_context * ucc_context_h
UCC context.
Definition: ucc_def.h:38
struct ucc_context_attr ucc_context_attr_t
Structure representing context attributes.
ucc_context_params_field
Definition: ucc.h:821
@ UCC_CONTEXT_ATTR_FIELD_SYNC_TYPE
Definition: ucc.h:835
@ UCC_CONTEXT_ATTR_FIELD_CTX_ADDR
Definition: ucc.h:836
@ UCC_CONTEXT_ATTR_FIELD_WORK_BUFFER_SIZE
Definition: ucc.h:838
@ UCC_CONTEXT_ATTR_FIELD_TYPE
Definition: ucc.h:834
@ UCC_CONTEXT_ATTR_FIELD_CTX_ADDR_LEN
Definition: ucc.h:837
@ UCC_CONTEXT_SHARED
Definition: ucc.h:814
@ UCC_CONTEXT_EXCLUSIVE
Definition: ucc.h:813
@ UCC_CONTEXT_PARAM_FIELD_TYPE
Definition: ucc.h:822
@ UCC_CONTEXT_PARAM_FIELD_MEM_PARAMS
Definition: ucc.h:826
@ UCC_CONTEXT_PARAM_FIELD_SYNC_TYPE
Definition: ucc.h:823
@ UCC_CONTEXT_PARAM_FIELD_OOB
Definition: ucc.h:824
@ UCC_CONTEXT_PARAM_FIELD_ID
Definition: ucc.h:825
Structure representing context attributes.
Definition: ucc.h:935
Structure representing the parameters to customize the context.
Definition: ucc.h:907
Definition: ucc.h:871
Definition: ucc.h:880
ucc_status_t ucc_context_create(ucc_lib_h lib_handle, const ucc_context_params_t *params, const ucc_context_config_h config, ucc_context_h *context)
The ucc_context_create routine creates the context handle.
ucc_status_t ucc_context_progress(ucc_context_h context)
The ucc_context_progress routine progresses the operations on the context handle.
ucc_status_t ucc_context_destroy(ucc_context_h context)
The ucc_context_destroy routine frees the context handle.
ucc_status_t ucc_context_config_modify(ucc_context_config_h config, const char *component, const char *name, const char *value)
The ucc_context_config_modify routine modifies the runtime configuration of UCC context (optionally f...
void ucc_context_config_release(ucc_context_config_h config)
The ucc_context_config_release routine releases the configuration descriptor.
ucc_status_t ucc_context_config_read(ucc_lib_h lib_handle, const char *filename, ucc_context_config_h *config)
Routine reads the configuration information for contexts from the runtime enviornment and creates the...
void ucc_context_config_print(const ucc_context_config_h config, FILE *stream, const char *title, ucc_config_print_flags_t print_flags)
The ucc_context_config_print routine prints the configuration information.
ucc_status_t ucc_context_get_attr(ucc_context_h context, ucc_context_attr_t *context_attr)
The routine queries the attributes of the context handle.
size_t stride
Definition: ucc.h:264
void * cb_ctx
Definition: ucc.h:267
uint64_t mask
Definition: ucc.h:257
size_t count
Definition: ucc.h:263
void * src2
Definition: ucc.h:259
size_t n_vectors
Definition: ucc.h:262
void * src1
Definition: ucc.h:258
ucc_dt_generic_t * dt
Definition: ucc.h:265
void * dst
Definition: ucc.h:261
uint64_t ucc_datatype_t
Enumeration representing the UCC library's datatype.
Definition: ucc.h:193
size_t(* pack)(void *state, size_t offset, void *dest, size_t max_length)
Pack data.
Definition: ucc.h:343
ucc_generic_dt_ops_field
Definition: ucc.h:214
void ucc_dt_destroy(ucc_datatype_t datatype)
Destroy generic datatype.
ucc_status_t ucc_dt_create_generic(const ucc_generic_dt_ops_t *ops, void *context, ucc_datatype_t *datatype_p)
Create a generic datatype.
struct ucc_generic_dt_ops::@0 reduce
User-defined reduction callback.
struct ucc_reduce_cb_params ucc_reduce_cb_params_t
Descriptor of user-defined reduction callback.
void(* finish)(void *state)
Finish packing/unpacking.
Definition: ucc.h:376
struct ucc_generic_dt_ops ucc_generic_dt_ops_t
UCC generic data type descriptor.
size_t(* packed_size)(void *state)
Get the total size of packed data.
Definition: ucc.h:325
ucc_status_t(* unpack)(void *state, size_t offset, const void *src, size_t length)
Unpack data.
Definition: ucc.h:360
void * cb_ctx
Definition: ucc.h:389
ucc_generic_dt_ops_flags_t
Flags that can be specified for generic datatype.
Definition: ucc.h:224
@ UCC_GENERIC_DT_OPS_FIELD_FLAGS
Definition: ucc.h:215
@ UCC_GENERIC_DT_OPS_FLAG_CONTIG
Definition: ucc.h:225
@ UCC_GENERIC_DT_OPS_FLAG_REDUCE
Definition: ucc.h:231
Descriptor of user-defined reduction callback.
Definition: ucc.h:256
ucc_ee_type_t ee_type
Definition: ucc.h:2029
ucc_coll_req_h req
Definition: ucc.h:2021
void * ev_context
Definition: ucc.h:2019
void * ee_context
Definition: ucc.h:2030
ucc_event_type_t ev_type
Definition: ucc.h:2018
size_t ee_context_size
Definition: ucc.h:2031
size_t ev_context_size
Definition: ucc.h:2020
enum ucc_event_type ucc_event_type_t
ucc_event_type
Definition: ucc.h:1995
enum ucc_ee_type ucc_ee_type_t
struct ucc_ee_params ucc_ee_params_t
struct ucc_event ucc_ev_t
ucc_ee_type
Definition: ucc.h:2006
@ UCC_EVENT_COMPUTE_COMPLETE
Definition: ucc.h:1998
@ UCC_EVENT_COLLECTIVE_COMPLETE
Definition: ucc.h:1997
@ UCC_EVENT_COLLECTIVE_POST
Definition: ucc.h:1996
@ UCC_EVENT_OVERFLOW
Definition: ucc.h:1999
@ UCC_EE_CUDA_STREAM
Definition: ucc.h:2007
@ UCC_EE_LAST
Definition: ucc.h:2009
@ UCC_EE_CPU_THREAD
Definition: ucc.h:2008
@ UCC_EE_UNKNOWN
Definition: ucc.h:2010
Definition: ucc.h:2028
Definition: ucc.h:2017
ucc_status_t ucc_ee_wait(ucc_ee_h ee, ucc_ev_t *ev)
The routine blocks the calling thread until there is an event on the queue.
ucc_status_t ucc_ee_get_event(ucc_ee_h ee, ucc_ev_t **ev)
The routine gets the event from the event queue.
ucc_status_t ucc_ee_create(ucc_team_h team, const ucc_ee_params_t *params, ucc_ee_h *ee)
The routine creates the execution context for collective operations.
ucc_status_t ucc_ee_set_event(ucc_ee_h ee, ucc_ev_t *ev)
The routine to set the event to the tail of the queue.
ucc_status_t ucc_ee_ack_event(ucc_ee_h ee, ucc_ev_t *ev)
The routine acks the events from the event queue.
ucc_status_t ucc_ee_destroy(ucc_ee_h ee)
The routine destroys the execution context created for collective operations.
ucc_status_t ucc_collective_triggered_post(ucc_ee_h ee, ucc_ev_t *ee_event)
The routine posts the collective operation on the execution engine, which is launched on the event.
uint64_t coll_types
Definition: ucc.h:565
uint64_t reduction_types
Definition: ucc.h:593
uint64_t coll_types
Definition: ucc.h:592
uint64_t reduction_types
Definition: ucc.h:566
uint64_t mask
Definition: ucc.h:563
ucc_thread_mode_t thread_mode
Definition: ucc.h:591
ucc_coll_sync_type_t sync_type
Definition: ucc.h:594
ucc_thread_mode_t thread_mode
Definition: ucc.h:564
uint64_t mask
Definition: ucc.h:590
ucc_coll_sync_type_t sync_type
Definition: ucc.h:567
struct ucc_lib_params ucc_lib_params_t
Structure representing the parameters to customize the library.
struct ucc_lib_config * ucc_lib_config_h
UCC library configuration handle.
Definition: ucc_def.h:92
ucc_coll_sync_type_t
Enumeration representing the collective synchronization model.
Definition: ucc.h:510
ucc_lib_attr_field
Definition: ucc.h:535
struct ucc_lib_info * ucc_lib_h
UCC library handle.
Definition: ucc_def.h:25
ucc_lib_params_field
UCC library initialization parameters.
Definition: ucc.h:524
ucc_coll_type_t
Enumeration representing the collective operations.
Definition: ucc.h:139
ucc_reduction_op_t
Enumeration representing the UCC reduction operations.
Definition: ucc.h:443
ucc_thread_mode_t
Enumeration representing the UCC library's thread model.
Definition: ucc.h:482
struct ucc_lib_attr ucc_lib_attr_t
Structure representing the attributes of the library.
@ UCC_SYNC_COLLECTIVES
Definition: ucc.h:512
@ UCC_NO_SYNC_COLLECTIVES
Definition: ucc.h:511
@ UCC_LIB_ATTR_FIELD_SYNC_TYPE
Definition: ucc.h:539
@ UCC_LIB_ATTR_FIELD_COLL_TYPES
Definition: ucc.h:537
@ UCC_LIB_ATTR_FIELD_REDUCTION_TYPES
Definition: ucc.h:538
@ UCC_LIB_ATTR_FIELD_THREAD_MODE
Definition: ucc.h:536
@ UCC_LIB_PARAM_FIELD_SYNC_TYPE
Definition: ucc.h:528
@ UCC_LIB_PARAM_FIELD_REDUCTION_TYPES
Definition: ucc.h:527
@ UCC_LIB_PARAM_FIELD_COLL_TYPES
Definition: ucc.h:526
@ UCC_LIB_PARAM_FIELD_THREAD_MODE
Definition: ucc.h:525
@ UCC_COLL_TYPE_ALLGATHERV
Definition: ucc.h:141
@ UCC_COLL_TYPE_GATHER
Definition: ucc.h:149
@ UCC_COLL_TYPE_ALLTOALLV
Definition: ucc.h:144
@ UCC_COLL_TYPE_SCATTER
Definition: ucc.h:154
@ UCC_COLL_TYPE_ALLREDUCE
Definition: ucc.h:142
@ UCC_COLL_TYPE_FANIN
Definition: ucc.h:147
@ UCC_COLL_TYPE_REDUCE
Definition: ucc.h:151
@ UCC_COLL_TYPE_SCATTERV
Definition: ucc.h:155
@ UCC_COLL_TYPE_FANOUT
Definition: ucc.h:148
@ UCC_COLL_TYPE_LAST
Definition: ucc.h:156
@ UCC_COLL_TYPE_BCAST
Definition: ucc.h:146
@ UCC_COLL_TYPE_BARRIER
Definition: ucc.h:145
@ UCC_COLL_TYPE_REDUCE_SCATTERV
Definition: ucc.h:153
@ UCC_COLL_TYPE_ALLTOALL
Definition: ucc.h:143
@ UCC_COLL_TYPE_REDUCE_SCATTER
Definition: ucc.h:152
@ UCC_COLL_TYPE_ALLGATHER
Definition: ucc.h:140
@ UCC_COLL_TYPE_GATHERV
Definition: ucc.h:150
@ UCC_OP_SUM
Definition: ucc.h:444
@ UCC_OP_BXOR
Definition: ucc.h:453
@ UCC_OP_LAST
Definition: ucc.h:457
@ UCC_OP_MAX
Definition: ucc.h:446
@ UCC_OP_MAXLOC
Definition: ucc.h:454
@ UCC_OP_AVG
Definition: ucc.h:456
@ UCC_OP_PROD
Definition: ucc.h:445
@ UCC_OP_BAND
Definition: ucc.h:451
@ UCC_OP_LAND
Definition: ucc.h:448
@ UCC_OP_MINLOC
Definition: ucc.h:455
@ UCC_OP_MIN
Definition: ucc.h:447
@ UCC_OP_LXOR
Definition: ucc.h:450
@ UCC_OP_BOR
Definition: ucc.h:452
@ UCC_OP_LOR
Definition: ucc.h:449
@ UCC_THREAD_MULTIPLE
Definition: ucc.h:485
@ UCC_THREAD_SINGLE
Definition: ucc.h:483
@ UCC_THREAD_FUNNELED
Definition: ucc.h:484
Structure representing the attributes of the library.
Definition: ucc.h:589
Structure representing the parameters to customize the library.
Definition: ucc.h:562
static ucc_status_t ucc_init(const ucc_lib_params_t *params, const ucc_lib_config_h config, ucc_lib_h *lib_p)
The ucc_init initializes the UCC library.
Definition: ucc.h:746
ucc_status_t ucc_lib_get_attr(ucc_lib_h lib_p, ucc_lib_attr_t *lib_attr)
The ucc_lib_get_attr routine queries the library attributes.
ucc_status_t ucc_finalize(ucc_lib_h lib_p)
The ucc_finalize routine finalizes the UCC library.
void ucc_lib_config_release(ucc_lib_config_h config)
The ucc_lib_config_release routine releases the configuration descriptor.
ucc_status_t ucc_lib_config_read(const char *env_prefix, const char *filename, ucc_lib_config_h *config)
The ucc_lib_config_read routine provides a method to read library configuration from the environment ...
void ucc_lib_config_print(const ucc_lib_config_h config, FILE *stream, const char *title, ucc_config_print_flags_t print_flags)
The ucc_lib_config_print routine prints the configuration information.
ucc_status_t ucc_lib_config_modify(ucc_lib_config_h config, const char *name, const char *value)
The ucc_lib_config_modify routine modifies the runtime configuration as described by the descriptor.
uint64_t * ep_list
Definition: ucc.h:1373
uint64_t ep
Definition: ucc.h:1368
ucc_coll_sync_type_t sync_type
Definition: ucc.h:1476
int64_t stride
Definition: ucc.h:1277
ucc_ep_map_t ep_map
Definition: ucc.h:1437
uint64_t mask
Definition: ucc.h:1349
ucc_mem_map_params_t mem_params
Definition: ucc.h:1428
uint64_t mask
Definition: ucc.h:1471
uint64_t id
Definition: ucc.h:1448
uint64_t team_size
Definition: ucc.h:1384
ucc_ep_range_type_t ep_range
Definition: ucc.h:1475
uint64_t ep_num
Definition: ucc.h:1316
ucc_ep_range_type_t ep_range
Definition: ucc.h:1378
uint64_t start
Definition: ucc.h:1276
uint64_t ep
Definition: ucc.h:1474
ucc_post_ordering_t ordering
Definition: ucc.h:1354
uint64_t outstanding_colls
Definition: ucc.h:1473
ucc_team_p2p_conn_t p2p_conn
Definition: ucc.h:1421
ucc_coll_sync_type_t sync_type
Definition: ucc.h:1390
ucc_team_oob_coll_t oob
Definition: ucc.h:1416
size_t elem_size
Definition: ucc.h:1286
ucc_post_ordering_t ordering
Definition: ucc.h:1472
ucc_ep_map_type_t type
Definition: ucc.h:1315
uint64_t outstanding_colls
Definition: ucc.h:1361
ucc_mem_map_params_t mem_params
Definition: ucc.h:1477
void * map
Definition: ucc.h:1285
uint64_t flags
Definition: ucc.h:1350
struct ucc_team_attr ucc_team_attr_t
Structure representing the team attributes.
size_t ucc_context_addr_len_t
Definition: ucc_def.h:150
struct ucc_team_params ucc_team_params_t
Structure representing the parameters to customize the team.
struct ucc_team_p2p_conn ucc_team_p2p_conn_t
void * ucc_context_addr_h
Definition: ucc_def.h:145
struct ucc_ep_map_t ucc_ep_map_t
struct ucc_team * ucc_team_h
UCC team handle.
Definition: ucc_def.h:50
ucc_team_params_field
Definition: ucc.h:1164
ucc_post_ordering_t
Definition: ucc.h:1223
ucc_team_flags
Definition: ucc.h:1197
void * ucc_p2p_conn_t
Definition: ucc_def.h:140
ucc_ep_map_type_t
Definition: ucc.h:1302
ucc_ep_range_type_t
Definition: ucc.h:1266
ucc_team_attr_field
Definition: ucc.h:1184
@ UCC_TEAM_PARAM_FIELD_ID
Definition: ucc.h:1176
@ UCC_TEAM_PARAM_FIELD_EP_LIST
Definition: ucc.h:1168
@ UCC_TEAM_PARAM_FIELD_EP
Definition: ucc.h:1167
@ UCC_TEAM_PARAM_FIELD_SYNC_TYPE
Definition: ucc.h:1171
@ UCC_TEAM_PARAM_FIELD_MEM_PARAMS
Definition: ucc.h:1174
@ UCC_TEAM_PARAM_FIELD_EP_MAP
Definition: ucc.h:1175
@ UCC_TEAM_PARAM_FIELD_EP_RANGE
Definition: ucc.h:1169
@ UCC_TEAM_PARAM_FIELD_ORDERING
Definition: ucc.h:1165
@ UCC_TEAM_PARAM_FIELD_FLAGS
Definition: ucc.h:1177
@ UCC_TEAM_PARAM_FIELD_OOB
Definition: ucc.h:1172
@ UCC_TEAM_PARAM_FIELD_OUTSTANDING_COLLS
Definition: ucc.h:1166
@ UCC_TEAM_PARAM_FIELD_P2P_CONN
Definition: ucc.h:1173
@ UCC_TEAM_PARAM_FIELD_TEAM_SIZE
Definition: ucc.h:1170
@ UCC_COLLECTIVE_INIT_UNORDERED
Definition: ucc.h:1247
@ UCC_COLLECTIVE_POST_ORDERED
Definition: ucc.h:1229
@ UCC_COLLECTIVE_INIT_ORDERED
Definition: ucc.h:1241
@ UCC_COLLECTIVE_INIT_AND_POST_UNORDERED
Definition: ucc.h:1259
@ UCC_COLLECTIVE_INIT_AND_POST_ORDERED
Definition: ucc.h:1253
@ UCC_COLLECTIVE_POST_UNORDERED
Definition: ucc.h:1235
@ UCC_TEAM_FLAG_COLL_WORK_BUFFER
Definition: ucc.h:1198
@ UCC_EP_MAP_CB
Definition: ucc.h:1307
@ UCC_EP_MAP_STRIDED
Definition: ucc.h:1304
@ UCC_EP_MAP_ARRAY
Definition: ucc.h:1305
@ UCC_EP_MAP_FULL
Definition: ucc.h:1303
@ UCC_COLLECTIVE_EP_RANGE_NONCONTIG
Definition: ucc.h:1268
@ UCC_COLLECTIVE_EP_RANGE_CONTIG
Definition: ucc.h:1267
@ UCC_TEAM_ATTR_FIELD_POST_ORDERING
Definition: ucc.h:1185
@ UCC_TEAM_ATTR_FIELD_SYNC_TYPE
Definition: ucc.h:1189
@ UCC_TEAM_ATTR_FIELD_OUTSTANDING_CALLS
Definition: ucc.h:1186
@ UCC_TEAM_ATTR_FIELD_MEM_PARAMS
Definition: ucc.h:1190
@ UCC_TEAM_ATTR_FIELD_EP
Definition: ucc.h:1187
@ UCC_TEAM_ATTR_FIELD_EP_RANGE
Definition: ucc.h:1188
Definition: ucc.h:1284
Definition: ucc.h:1275
Definition: ucc.h:1314
Structure representing the team attributes.
Definition: ucc.h:1470
Structure representing the parameters to customize the team.
Definition: ucc.h:1347
ucc_status_t ucc_team_get_my_ep(ucc_team_h team, uint64_t *ep)
The routine returns the endpoint of the calling participant.
ucc_status_t ucc_team_create_post(ucc_context_h *contexts, uint32_t num_contexts, const ucc_team_params_t *team_params, ucc_team_h *new_team)
The routine is a method to create the team.
ucc_status_t ucc_team_get_size(ucc_team_h team, uint32_t *size)
The routine returns the size of the team.
ucc_status_t ucc_team_create_from_parent(uint64_t my_ep, uint32_t included, ucc_team_h parent_team, ucc_team_h *new_team)
The routine creates a new team from the parent team.
ucc_status_t ucc_team_destroy(ucc_team_h team)
The team frees the team handle.
ucc_status_t ucc_team_get_all_eps(ucc_team_h team, uint64_t **ep, uint64_t *num_eps)
The routine queries all endpoints associated with the team handle.
ucc_status_t ucc_team_create_test(ucc_team_h team)
The routine queries the status of the team creation operation.
ucc_status_t ucc_team_get_attr(ucc_team_h team, ucc_team_attr_t *team_attr)
The routine returns the attributes of the team.
ucc_config_print_flags_t
Print configurations.
Definition: ucc_def.h:124
ucc_status_t
Status codes for the UCC operations.
Definition: ucc_status.h:26
ucc_status_t status
Definition: ucc_def.h:63
Definition: ucc_def.h:62
UCC collective completion callback.
Definition: ucc_def.h:74
Definition: ucc.h:1293
uint64_t(* cb)(uint64_t ep, void *cb_ctx)
Definition: ucc.h:1294
void * cb_ctx
Definition: ucc.h:1295
UCC generic data type descriptor.
Definition: ucc.h:278
size_t contig_size
Definition: ucc.h:281
uint64_t flags
Definition: ucc.h:280
uint64_t mask
Definition: ucc.h:279
OOB collective operation for creating the context.
Definition: ucc.h:846
ucc_status_t(* req_test)(void *request)
Definition: ucc.h:849
uint32_t oob_ep
Definition: ucc.h:855
ucc_status_t(* allgather)(void *src_buf, void *recv_buf, size_t size, void *allgather_info, void **request)
Definition: ucc.h:847
void * coll_info
Definition: ucc.h:851
ucc_status_t(* req_free)(void *request)
Definition: ucc.h:850
uint32_t n_oob_eps
Definition: ucc.h:852
Definition: ucc.h:1211
ucc_status_t(* req_test)(void *request)
Definition: ucc.h:1215
int(* conn_info_release)(ucc_p2p_conn_t *conn_info)
Definition: ucc.h:1213
int(* conn_info_lookup)(void *conn_ctx, uint64_t ep, ucc_p2p_conn_t **conn_info, void *request)
Definition: ucc.h:1212
ucc_status_t(* req_free)(void *request)
Definition: ucc.h:1216
void * conn_ctx
Definition: ucc.h:1214