UCX 1.22
Unified Communication X
Loading...
Searching...
No Matches
uct.h
1
10#ifndef UCT_H_
11#define UCT_H_
12
13#include <uct/api/uct_def.h>
14#include <uct/api/tl.h>
15#include <uct/api/version.h>
16#include <ucs/async/async_fwd.h>
17#include <ucs/datastruct/callbackq.h>
18#include <ucs/datastruct/callbackq_compat.h>
19#include <ucs/datastruct/linear_func.h>
20#include <ucs/memory/memory_type.h>
21#include <ucs/type/status.h>
22#include <ucs/type/thread_mode.h>
23#include <ucs/type/cpu_set.h>
24#include <ucs/stats/stats_fwd.h>
25#include <ucs/sys/compiler_def.h>
26#include <ucs/sys/topo/base/topo.h>
27
28#include <sys/socket.h>
29#include <stdio.h>
30#include <sched.h>
31
32BEGIN_C_DECLS
33
218typedef struct uct_md_resource_desc {
219 char md_name[UCT_MD_NAME_MAX];
221
222
236
237
245typedef struct uct_component_attr {
252 uint64_t field_mask;
253
255 char name[UCT_COMPONENT_NAME_MAX];
256
259
274
278 uint64_t flags;
280
281
289enum {
295
300 UCT_COMPONENT_FLAG_RKEY_PTR = UCS_BIT(1)
302
303
315
316
328typedef struct uct_tl_resource_desc {
329 char tl_name[UCT_TL_NAME_MAX];
330 char dev_name[UCT_DEVICE_NAME_MAX];
333 ucs_sys_device_t sys_device;
336
337#define UCT_TL_RESOURCE_DESC_FMT "%s/%s"
338#define UCT_TL_RESOURCE_DESC_ARG(_resource) (_resource)->tl_name, (_resource)->dev_name
339
340
348typedef enum uct_atomic_op {
349 UCT_ATOMIC_OP_ADD,
350 UCT_ATOMIC_OP_AND,
351 UCT_ATOMIC_OP_OR,
352 UCT_ATOMIC_OP_XOR,
353 UCT_ATOMIC_OP_SWAP,
354 UCT_ATOMIC_OP_CSWAP,
355 UCT_ATOMIC_OP_LAST
356} uct_atomic_op_t;
357
358
369 /* Active message capabilities */
370#define UCT_IFACE_FLAG_AM_SHORT UCS_BIT(0)
371#define UCT_IFACE_FLAG_AM_BCOPY UCS_BIT(1)
372#define UCT_IFACE_FLAG_AM_ZCOPY UCS_BIT(2)
374#define UCT_IFACE_FLAG_PENDING UCS_BIT(3)
376 /* PUT capabilities */
377#define UCT_IFACE_FLAG_PUT_SHORT UCS_BIT(4)
378#define UCT_IFACE_FLAG_PUT_BCOPY UCS_BIT(5)
379#define UCT_IFACE_FLAG_PUT_ZCOPY UCS_BIT(6)
381 /* GET capabilities */
382#define UCT_IFACE_FLAG_GET_SHORT UCS_BIT(8)
383#define UCT_IFACE_FLAG_GET_BCOPY UCS_BIT(9)
384#define UCT_IFACE_FLAG_GET_ZCOPY UCS_BIT(10)
386 /* Atomic operations domain */
387#define UCT_IFACE_FLAG_ATOMIC_CPU UCS_BIT(30)
389#define UCT_IFACE_FLAG_ATOMIC_DEVICE UCS_BIT(31)
393 /* Error handling capabilities */
394#define UCT_IFACE_FLAG_ERRHANDLE_SHORT_BUF UCS_BIT(32)
395#define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_BUF UCS_BIT(33)
396#define UCT_IFACE_FLAG_ERRHANDLE_ZCOPY_BUF UCS_BIT(34)
397#define UCT_IFACE_FLAG_ERRHANDLE_AM_ID UCS_BIT(35)
398#define UCT_IFACE_FLAG_ERRHANDLE_REMOTE_MEM UCS_BIT(36)
399#define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_LEN UCS_BIT(37)
400#define UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE UCS_BIT(38)
402#define UCT_IFACE_FLAG_EP_CHECK UCS_BIT(39)
404 /* Connection establishment */
405#define UCT_IFACE_FLAG_CONNECT_TO_IFACE UCS_BIT(40)
406#define UCT_IFACE_FLAG_CONNECT_TO_EP UCS_BIT(41)
407#define UCT_IFACE_FLAG_CONNECT_TO_SOCKADDR UCS_BIT(42)
409 /* Special transport flags */
410#define UCT_IFACE_FLAG_AM_DUP UCS_BIT(43)
414 /* Callback invocation */
415#define UCT_IFACE_FLAG_CB_SYNC UCS_BIT(44)
418#define UCT_IFACE_FLAG_CB_ASYNC UCS_BIT(45)
425 /* Keepalive */
426#define UCT_IFACE_FLAG_EP_KEEPALIVE UCS_BIT(46)
432 /* Operation ordering */
433#define UCT_IFACE_FLAG_PUT_AM_ORDER UCS_BIT(47)
436 /* Tag matching operations */
437#define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
438#define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
439#define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
440#define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
442 /* Interface capability */
443#define UCT_IFACE_FLAG_INTER_NODE UCS_BIT(54)
444#define UCT_IFACE_FLAG_DEVICE_EP UCS_BIT(55)
445#define UCT_IFACE_FLAG_DEVICE_LKEY UCS_BIT(56)
461 /* Event types */
462#define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(0)
464#define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(1)
466#define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(2)
468 /* Event notification mechanisms */
469#define UCT_IFACE_FLAG_EVENT_FD UCS_BIT(3)
471#define UCT_IFACE_FLAG_EVENT_ASYNC_CB UCS_BIT(4)
492
493
506 UCT_EVENT_SEND_COMP = UCS_BIT(0),
507 UCT_EVENT_RECV = UCS_BIT(1),
508 UCT_EVENT_RECV_SIG = UCS_BIT(2),
510 UCT_EVENT_SPEED_CHANGE = UCS_BIT(3)
512
513
523 UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0),
538 UCT_FLUSH_FLAG_REMOTE = UCS_BIT(1)
548
549
561
562
568 UCT_SEND_FLAG_SIGNALED = UCS_BIT(0),
574 UCT_SEND_FLAG_PEER_CHECK = UCS_BIT(1)
582
583
591 UCT_CB_FLAG_RESERVED = UCS_BIT(1),
592 UCT_CB_FLAG_ASYNC = UCS_BIT(2)
608
609
630
631
699
712
713
718enum {
722 UCT_MD_FLAG_ALLOC = UCS_BIT(0),
723
727 UCT_MD_FLAG_REG = UCS_BIT(1),
728
733
739
743 UCT_MD_FLAG_ADVISE = UCS_BIT(4),
744
748 UCT_MD_FLAG_FIXED = UCS_BIT(5),
749
757
762
770
776
781
786 UCT_MD_FLAG_LAST = UCS_BIT(11)
788
874
875
887
888
900
901
913
914
932
933
999
1000
1015
1016
1028
1031
1034
1037
1040
1043
1046
1048 UCT_IFACE_FEATURE_LAST = UCS_BIT(7)
1050
1051/*
1052 * @ingroup UCT_RESOURCE
1053 * @brief Process Per Node (PPN) bandwidth specification: f(ppn) = dedicated + shared / ppn
1054 *
1055 * This structure specifies a function which is used as basis for bandwidth
1056 * estimation of various UCT operations. This information can be used to select
1057 * the best performing combination of UCT operations.
1058 */
1059typedef struct uct_ppn_bandwidth {
1060 double dedicated;
1061 double shared;
1063
1064
1070 struct {
1071 struct {
1072 size_t max_short;
1073 size_t max_bcopy;
1074 size_t min_zcopy;
1077 size_t max_zcopy;
1080 size_t opt_zcopy_align;
1082 size_t align_mtu;
1083 size_t max_iov;
1086 } put;
1088 struct {
1089 size_t max_short;
1090 size_t max_bcopy;
1091 size_t min_zcopy;
1094 size_t max_zcopy;
1097 size_t opt_zcopy_align;
1099 size_t align_mtu;
1100 size_t max_iov;
1103 } get;
1105 struct {
1106 size_t max_short;
1108 size_t max_bcopy;
1109 size_t min_zcopy;
1112 size_t max_zcopy;
1115 size_t opt_zcopy_align;
1117 size_t align_mtu;
1118 size_t max_hdr;
1119 size_t max_iov;
1122 } am;
1124 struct {
1125 struct {
1126 size_t min_recv;
1127 size_t max_zcopy;
1129 size_t max_iov;
1132 size_t max_outstanding;
1134 } recv;
1135
1136 struct {
1137 size_t max_short;
1139 size_t max_bcopy;
1141 size_t max_zcopy;
1143 size_t max_iov;
1145 } eager;
1147 struct {
1148 size_t max_zcopy;
1150 size_t max_hdr;
1153 size_t max_iov;
1155 } rndv;
1156 } tag;
1158 struct {
1159 uint64_t op_flags;
1160 uint64_t fop_flags;
1161 } atomic32, atomic64;
1163 uint64_t flags;
1164 uint64_t event_flags;
1173 struct sockaddr_storage listen_sockaddr;
1175 /*
1176 * The following fields define expected performance of the communication
1177 * interface, this would usually be a combination of device and system
1178 * characteristics and determined at run time.
1179 */
1180 double overhead;
1182 ucs_linear_func_t latency;
1184 uint8_t priority;
1196 ucs_sys_device_t ctl_device;
1198};
1199
1200
1212 uint64_t field_mask;
1214 ucs_cpu_set_t cpu_mask;
1216 uint64_t open_mode;
1218 union {
1225 struct {
1226 const char *tl_name;
1227 const char *dev_name;
1228 } device;
1236 struct {
1237 ucs_sock_addr_t listen_sockaddr;
1239 void *conn_request_arg;
1244 uint32_t cb_flags;
1245 } sockaddr;
1250 struct {
1252 ucs_status_t status;
1253 } stub;
1255
1258 ucs_stats_node_t *stats_root;
1261
1269
1277
1284
1285 /* Time period between keepalive rounds */
1287
1296
1314
1319 uint64_t features;
1320};
1321
1322
1472
1473
1484 uint64_t field_mask;
1485
1489 const void *private_data;
1490
1496};
1497
1508 uint64_t field_mask;
1509
1515};
1516
1517
1528 uint64_t field_mask;
1529
1533 struct sockaddr_storage sockaddr;
1534};
1535
1536
1567
1568
1579 struct {
1580 uint64_t max_alloc;
1581 size_t max_reg;
1582 uint64_t flags;
1583 uint64_t reg_mem_types;
1584 uint64_t detect_mem_types;
1585 uint64_t alloc_mem_types;
1586 uint64_t access_mem_types;
1588
1589 ucs_linear_func_t reg_cost;
1593 char component_name[UCT_COMPONENT_NAME_MAX];
1595 ucs_cpu_set_t local_cpus;
1596};
1597
1598
1635
1636
1645typedef struct uct_md_mem_attr {
1650 uint64_t field_mask;
1651
1658
1664 ucs_sys_device_t sys_dev;
1665
1672
1679
1689
1696
1697
1718ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, size_t length,
1719 uct_md_mem_attr_t *mem_attr);
1720
1721
1739
1740
1753
1754
1780
1781
1791 char priv[UCT_PENDING_REQ_PRIV_LEN];
1792};
1793
1794
1810
1830 void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1831 size_t length, void *inline_data, ucs_status_t status);
1832
1845 void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1846 unsigned header_length, ucs_status_t status, unsigned flags);
1847
1849 char priv[UCT_TAG_PRIV_LEN];
1850};
1851
1852
1857enum {
1858 /* If set, header points to inline data, otherwise it is user buffer. */
1859 UCT_TAG_RECV_CB_INLINE_DATA = UCS_BIT(0)
1861
1862
1863extern const char *uct_alloc_method_names[];
1864extern const char *uct_device_type_names[];
1865
1866
1881 unsigned *num_components_p);
1882
1893
1894
1908 uct_component_attr_t *component_attr);
1909
1910
1930ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1931 const uct_md_config_t *config, uct_md_h *md_p);
1932
1940
1941
1957 uct_tl_resource_desc_t **resources_p,
1958 unsigned *num_resources_p);
1959
1960
1971
1972
1987ucs_status_t uct_worker_create(ucs_async_context_t *async,
1988 ucs_thread_mode_t thread_mode,
1989 uct_worker_h *worker_p);
1990
1991
1999
2000
2024void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
2025 void *arg, unsigned flags,
2026 uct_worker_cb_id_t *id_p);
2027
2028
2050 uct_worker_cb_id_t *id_p);
2051
2052
2081 const char *env_prefix, const char *filename,
2082 uct_iface_config_t **config_p);
2083
2084
2092void uct_config_release(void *config);
2093
2094
2110ucs_status_t uct_config_get(void *config, const char *name, char *value,
2111 size_t max);
2112
2113
2126ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
2127
2128
2145 const uct_iface_params_t *params,
2146 const uct_iface_config_t *config,
2147 uct_iface_h *iface_p);
2148
2149
2157
2158
2167
2168
2181
2182
2194
2195
2215 const uct_iface_addr_t *iface_addr);
2216
2217
2235ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
2236 uct_completion_t *comp);
2237
2238
2252
2253
2274
2275
2291ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
2292 const char *name, uct_allocated_memory_t *mem);
2293
2294
2302
2303
2322 uct_am_callback_t cb, void *arg, uint32_t flags);
2323
2324
2339 void *arg);
2340
2341
2354 uct_conn_request_h conn_request);
2355
2356
2370 uct_conn_request_h conn_request);
2371
2372
2408
2409
2425
2426
2460
2461
2469
2470
2480
2481
2493 const uct_ep_addr_t *ep_addr);
2494
2495
2504
2505
2532
2533
2538typedef struct {
2544 uint64_t field_mask;
2545
2552 unsigned flags;
2553
2564 void *address;
2565
2570
2571 struct {
2576 const uct_md_h *mds;
2577
2583 unsigned count;
2584 } mds;
2585
2592 const char *name;
2593
2598 ucs_sys_device_t sys_device;
2600
2601
2620 size_t length, uct_mem_advice_t advice);
2621
2622
2636ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2637 unsigned flags, uct_mem_h *memh_p);
2638
2639
2648
2649
2663 size_t length,
2664 ucs_memory_type_t *mem_type_p);
2665
2666
2691ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods,
2692 unsigned num_methods,
2693 const uct_mem_alloc_params_t *params,
2695
2696
2707
2723 const char *env_prefix, const char *filename,
2724 uct_md_config_t **config_p);
2725
2726
2749
2750
2763
2764
2784ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2785 uct_rkey_bundle_t *rkey_ob);
2786
2787
2814 uint64_t remote_addr, void **addr_p);
2815
2816
2826 const uct_rkey_bundle_t *rkey_ob);
2827
2828
2843UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2844{
2845 return ucs_callbackq_dispatch(&worker->progress_q);
2846}
2847
2848
2877UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2878 uct_completion_t *comp)
2879{
2880 return iface->ops.iface_flush(iface, flags, comp);
2881}
2882
2895UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2896{
2897 return iface->ops.iface_fence(iface, flags);
2898}
2899
2909UCT_INLINE_API void uct_iface_release_desc(void *desc)
2910{
2911 uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2912 release_desc->cb(release_desc, desc);
2913}
2914
2915
2920UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2921 uint64_t remote_addr, uct_rkey_t rkey)
2922{
2923 return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2924}
2925
2926
2931UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2932 void *arg, uint64_t remote_addr,
2933 uct_rkey_t rkey)
2934{
2935 return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2936}
2937
2938
2969 const uct_iov_t *iov, size_t iovcnt,
2970 uint64_t remote_addr, uct_rkey_t rkey,
2971 uct_completion_t *comp)
2972{
2973 return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2974}
2975
2976
2981UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2982 uint64_t remote_addr, uct_rkey_t rkey)
2983{
2984 return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2985}
2986
2987
2993 void *arg, size_t length,
2994 uint64_t remote_addr, uct_rkey_t rkey,
2995 uct_completion_t *comp)
2996{
2997 return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2998 rkey, comp);
2999}
3000
3001
3032 const uct_iov_t *iov, size_t iovcnt,
3033 uint64_t remote_addr, uct_rkey_t rkey,
3034 uct_completion_t *comp)
3035{
3036 return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
3037}
3038
3039
3044UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
3045 const void *payload, unsigned length)
3046{
3047 return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
3048}
3049
3050
3081UCT_INLINE_API ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id,
3082 const uct_iov_t *iov, size_t iovcnt)
3083{
3084 return ep->iface->ops.ep_am_short_iov(ep, id, iov, iovcnt);
3085}
3086
3087
3092UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
3093 uct_pack_callback_t pack_cb, void *arg,
3094 unsigned flags)
3095{
3096 return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
3097}
3098
3099
3137UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
3138 const void *header,
3139 unsigned header_length,
3140 const uct_iov_t *iov, size_t iovcnt,
3141 unsigned flags,
3142 uct_completion_t *comp)
3143{
3144 return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
3145 flags, comp);
3146}
3147
3152UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
3153 uint64_t remote_addr, uct_rkey_t rkey,
3154 uint64_t *result, uct_completion_t *comp)
3155{
3156 return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
3157}
3158
3159
3164UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
3165 uint64_t remote_addr, uct_rkey_t rkey,
3166 uint32_t *result, uct_completion_t *comp)
3167{
3168 return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
3169}
3170
3171
3176UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
3177 uint32_t value, uint64_t remote_addr,
3178 uct_rkey_t rkey)
3179{
3180 return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
3181}
3182
3183
3188UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
3189 uint64_t value, uint64_t remote_addr,
3190 uct_rkey_t rkey)
3191{
3192 return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
3193}
3194
3195
3200UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3201 uint32_t value, uint32_t *result,
3202 uint64_t remote_addr, uct_rkey_t rkey,
3203 uct_completion_t *comp)
3204{
3205 return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
3206 remote_addr, rkey, comp);
3207}
3208
3209
3214UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3215 uint64_t value, uint64_t *result,
3216 uint64_t remote_addr, uct_rkey_t rkey,
3217 uct_completion_t *comp)
3218{
3219 return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
3220 remote_addr, rkey, comp);
3221}
3222
3223
3245 uct_pending_req_t *req,
3246 unsigned flags)
3247{
3248 return ep->iface->ops.ep_pending_add(ep, req, flags);
3249}
3250
3251
3263UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
3265 void *arg)
3266{
3267 ep->iface->ops.ep_pending_purge(ep, cb, arg);
3268}
3269
3270
3299UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
3300 uct_completion_t *comp)
3301{
3302 return ep->iface->ops.ep_flush(ep, flags, comp);
3303}
3304
3305
3318UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
3319{
3320 return ep->iface->ops.ep_fence(ep, flags);
3321}
3322
3323
3347 const void *data, size_t length)
3348{
3349 return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
3350}
3351
3352
3376UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
3377 uint64_t imm,
3378 uct_pack_callback_t pack_cb,
3379 void *arg, unsigned flags)
3380{
3381 return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
3382}
3383
3384
3423 uint64_t imm,
3424 const uct_iov_t *iov,
3425 size_t iovcnt,
3426 unsigned flags,
3427 uct_completion_t *comp)
3428{
3429 return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
3430 comp);
3431}
3432
3433
3471 const void *header,
3472 unsigned header_length,
3473 const uct_iov_t *iov,
3474 size_t iovcnt,
3475 unsigned flags,
3476 uct_completion_t *comp)
3477{
3478 return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
3479 iov, iovcnt, flags, comp);
3480}
3481
3482
3502{
3503 return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
3504}
3505
3506
3527 const void* header,
3528 unsigned header_length,
3529 unsigned flags)
3530{
3531 return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
3532 flags);
3533}
3534
3535
3567 uct_tag_t tag,
3568 uct_tag_t tag_mask,
3569 const uct_iov_t *iov,
3570 size_t iovcnt,
3571 uct_tag_context_t *ctx)
3572{
3573 return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3574}
3575
3576
3600 uct_tag_context_t *ctx,
3601 int force)
3602{
3603 return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3604}
3605
3606
3625UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3626{
3627 iface->ops.iface_progress_enable(iface, flags);
3628}
3629
3630
3650UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3651{
3652 iface->ops.iface_progress_disable(iface, flags);
3653}
3654
3655
3660UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3661{
3662 return iface->ops.iface_progress(iface);
3663}
3664
3665
3689 const uct_cm_config_t *config, uct_cm_h *cm_p);
3690
3691
3699
3700
3712
3713
3731 const char *env_prefix, const char *filename,
3732 uct_cm_config_t **config_p);
3733
3734
3748
3749
3768ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3769 socklen_t socklen,
3770 const uct_listener_params_t *params,
3771 uct_listener_h *listener_p);
3772
3773
3781
3782
3799 uct_conn_request_h conn_request);
3800
3801
3815 uct_listener_attr_t *listener_attr);
3816
3817
3825static UCS_F_ALWAYS_INLINE
3827{
3828 if (ucs_unlikely(status != UCS_OK) && (comp->status == UCS_OK)) {
3829 /* store first failure status */
3830 comp->status = status;
3831 }
3832}
3833
3834
3840END_C_DECLS
3841
3842#endif
enum ucs_memory_type ucs_memory_type_t
Memory types.
ucs_thread_mode_t
Thread sharing mode.
Definition thread_mode.h:19
unsigned long ucs_time_t
Definition time_def.h:23
ucs_status_t
Status codes.
Definition status.h:45
void * ucs_status_ptr_t
Status pointer.
Definition status.h:106
@ UCS_OK
Definition status.h:47
Definition types.h:151
ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header, const void *payload, unsigned length)
Definition uct.h:3044
uct_msg_flags
Flags for active message send operation.
Definition uct.h:567
ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id, const uct_iov_t *iov, size_t iovcnt)
Short io-vector send operation.
Definition uct.h:3081
ucs_status_t uct_iface_set_am_handler(uct_iface_h iface, uint8_t id, uct_am_callback_t cb, void *arg, uint32_t flags)
Set active message handler for the interface.
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition uct.h:2909
void(* uct_am_tracer_t)(void *arg, uct_am_trace_type_t type, uint8_t id, const void *data, size_t length, char *buffer, size_t max)
Callback to trace active messages.
Definition uct_def.h:529
ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id, uct_pack_callback_t pack_cb, void *arg, unsigned flags)
Definition uct.h:3092
ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id, const void *header, unsigned header_length, const uct_iov_t *iov, size_t iovcnt, unsigned flags, uct_completion_t *comp)
Send active message while avoiding local memory copy.
Definition uct.h:3137
ucs_status_t uct_iface_set_am_tracer(uct_iface_h iface, uct_am_tracer_t tracer, void *arg)
Set active message tracer for the interface.
ucs_status_t(* uct_am_callback_t)(void *arg, void *data, size_t length, unsigned flags)
Callback to process incoming active message.
Definition uct_def.h:511
@ UCT_SEND_FLAG_PEER_CHECK
Definition uct.h:574
@ UCT_SEND_FLAG_SIGNALED
Definition uct.h:568
ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode, uint64_t value, uint64_t remote_addr, uct_rkey_t rkey)
Definition uct.h:3188
ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode, uint32_t value, uint32_t *result, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Definition uct.h:3200
ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode, uint32_t value, uint64_t remote_addr, uct_rkey_t rkey)
Definition uct.h:3176
ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap, uint64_t remote_addr, uct_rkey_t rkey, uint64_t *result, uct_completion_t *comp)
Definition uct.h:3152
ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap, uint64_t remote_addr, uct_rkey_t rkey, uint32_t *result, uct_completion_t *comp)
Definition uct.h:3164
ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode, uint64_t value, uint64_t *result, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Definition uct.h:3214
uint64_t field_mask
Definition uct.h:1548
int backlog
Definition uct.h:1555
uint64_t field_mask
Definition uct.h:1484
uint64_t field_mask
Definition uct.h:1508
size_t private_data_length
Definition uct.h:1495
uct_cm_listener_conn_request_callback_t conn_request_cb
Definition uct.h:1560
void * user_data
Definition uct.h:1565
struct sockaddr_storage sockaddr
Definition uct.h:1533
uint64_t field_mask
Definition uct.h:1528
size_t max_conn_priv
Definition uct.h:1514
const void * private_data
Definition uct.h:1489
void(* uct_sockaddr_conn_request_callback_t)(uct_iface_h iface, void *arg, uct_conn_request_h conn_request, const void *conn_priv_data, size_t length)
Callback to process an incoming connection request on the server side.
Definition uct_def.h:647
uct_cm_attr_field
UCT connection manager attributes field mask.
Definition uct.h:896
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
ucs_status_t uct_iface_reject(uct_iface_h iface, uct_conn_request_h conn_request)
Reject connection request. Will invoke an error handler uct_error_handler_t on the remote transport i...
ucs_status_t uct_cm_client_ep_conn_notify(uct_ep_h ep)
Notify the server about client-side connection establishment.
ucs_status_t uct_cm_query(uct_cm_h cm, uct_cm_attr_t *cm_attr)
Get connection manager attributes.
ssize_t(* uct_cm_ep_priv_data_pack_callback_t)(void *arg, const uct_cm_ep_priv_data_pack_args_t *pack_args, void *priv_data)
Callback to fill the user's private data in a client-server flow.
Definition uct_def.h:776
void(* uct_cm_listener_conn_request_callback_t)(uct_listener_h listener, void *arg, const uct_cm_listener_conn_request_args_t *conn_req_args)
Callback to process an incoming connection request on the server side listener in a connection manage...
Definition uct_def.h:672
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags)
Initiate a disconnection of an endpoint connected to a sockaddr by a connection manager uct_cm_h.
ucs_status_t uct_cm_open(uct_component_h component, uct_worker_h worker, const uct_cm_config_t *config, uct_cm_h *cm_p)
Open a connection manager.
uct_ep_connect_params_field
UCT endpoint connected by uct_ep_connect parameters field mask.
Definition uct.h:1008
ucs_status_t uct_listener_reject(uct_listener_h listener, uct_conn_request_h conn_request)
Reject a connection request.
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
void(* uct_cm_ep_server_conn_notify_callback_t)(uct_ep_h ep, void *arg, const uct_cm_ep_server_conn_notify_args_t *connect_args)
Callback to process an incoming connection establishment acknowledgment on the server side listener,...
Definition uct_def.h:702
void(* uct_cm_ep_client_connect_callback_t)(uct_ep_h ep, void *arg, const uct_cm_ep_client_connect_args_t *connect_args)
Callback to process an incoming connection response on the client side from the server or handle a lo...
Definition uct_def.h:726
uct_listener_attr_field
UCT listener attributes field mask.
Definition uct.h:909
ucs_status_t(* uct_cm_ep_resolve_callback_t)(void *user_data, const uct_cm_ep_resolve_args_t *resolve_args)
Callback to notify that the client side endpoint is bound to a local device.
Definition uct_def.h:800
ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr, socklen_t socklen, const uct_listener_params_t *params, uct_listener_h *listener_p)
Create a new transport listener object.
ucs_status_t uct_listener_query(uct_listener_h listener, uct_listener_attr_t *listener_attr)
Get attributes specific to a particular listener.
ucs_status_t uct_cm_config_read(uct_component_h component, const char *env_prefix, const char *filename, uct_cm_config_t **config_p)
Read the configuration for a connection manager.
ucs_status_t uct_ep_connect(uct_ep_h ep, const uct_ep_connect_params_t *params)
Connect a client side endpoint after it is bound to a local network device, i.e. uct_ep_params_t::cm_...
void(* uct_ep_disconnect_cb_t)(uct_ep_h ep, void *arg)
Callback to handle the disconnection of the remote peer.
Definition uct_def.h:748
uct_listener_params_field
UCT listener created by uct_listener_create parameters field mask.
Definition uct.h:922
@ UCT_CM_ATTR_FIELD_MAX_CONN_PRIV
Definition uct.h:898
@ UCT_EP_CONNECT_PARAM_FIELD_PRIVATE_DATA
Definition uct.h:1010
@ UCT_EP_CONNECT_PARAM_FIELD_PRIVATE_DATA_LENGTH
Definition uct.h:1013
@ UCT_LISTENER_ATTR_FIELD_SOCKADDR
Definition uct.h:911
@ UCT_LISTENER_PARAM_FIELD_CONN_REQUEST_CB
Definition uct.h:927
@ UCT_LISTENER_PARAM_FIELD_BACKLOG
Definition uct.h:924
@ UCT_LISTENER_PARAM_FIELD_USER_DATA
Definition uct.h:930
Connection manager attributes, capabilities and limitations.
Definition uct.h:1502
Parameters for connecting a UCT endpoint by uct_ep_connect.
Definition uct.h:1478
UCT listener attributes, capabilities and limitations.
Definition uct.h:1522
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition uct.h:1542
ucs_status_t uct_config_modify(void *config, const char *name, const char *value)
Modify interface configuration (uct_iface_config_t), memory domain configuration (uct_md_config_t) or...
uct_alloc_method_t
Memory allocation methods.
Definition uct.h:482
void uct_worker_destroy(uct_worker_h worker)
Destroy a worker object.
void uct_worker_progress_unregister_safe(uct_worker_h worker, uct_worker_cb_id_t *id_p)
Remove a slow path callback function from worker's progress.
void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func, void *arg, unsigned flags, uct_worker_cb_id_t *id_p)
Add a slow path callback function to a worker progress.
unsigned uct_worker_progress(uct_worker_h worker)
Explicit progress for UCT worker.
Definition uct.h:2843
ucs_status_t uct_worker_create(ucs_async_context_t *async, ucs_thread_mode_t thread_mode, uct_worker_h *worker_p)
Create a worker object.
ucs_status_t uct_config_get(void *config, const char *name, char *value, size_t max)
Get value by name from interface configuration (uct_iface_config_t), memory domain configuration (uct...
@ UCT_ALLOC_METHOD_MD
Definition uct.h:485
@ UCT_ALLOC_METHOD_LAST
Definition uct.h:489
@ UCT_ALLOC_METHOD_MMAP
Definition uct.h:487
@ UCT_ALLOC_METHOD_HEAP
Definition uct.h:486
@ UCT_ALLOC_METHOD_HUGE
Definition uct.h:488
@ UCT_ALLOC_METHOD_THP
Definition uct.h:483
@ UCT_ALLOC_METHOD_DEFAULT
Definition uct.h:490
void * base_address
Definition uct.h:1671
char component_name[UCT_COMPONENT_NAME_MAX]
Definition uct.h:1593
ucs_sys_device_t sys_device
Definition uct.h:2598
struct uct_md_attr::@20 cap
uct_mem_h memh
Definition uct.h:1736
void * address
Definition uct.h:2564
uct_rkey_t rkey
Definition uct.h:1749
unsigned flags
Definition uct.h:2552
int dmabuf_fd
Definition uct.h:1688
uint64_t field_mask
Definition uct.h:1650
size_t rkey_packed_size
Definition uct.h:1594
ucs_memory_type_t mem_type
Definition uct.h:1657
ucs_linear_func_t reg_cost
Definition uct.h:1589
size_t dmabuf_offset
Definition uct.h:1694
ucs_sys_device_t sys_dev
Definition uct.h:1664
ucs_cpu_set_t local_cpus
Definition uct.h:1595
ucs_sys_device_t sys_device
Definition uct.h:1737
uint64_t field_mask
Definition uct.h:2544
void * handle
Definition uct.h:1750
void * address
Definition uct.h:1731
uct_alloc_method_t method
Definition uct.h:1733
ucs_memory_type_t mem_type
Definition uct.h:2569
const char * name
Definition uct.h:2592
ucs_memory_type_t mem_type
Definition uct.h:1734
size_t length
Definition uct.h:1732
void * type
Definition uct.h:1751
size_t alloc_length
Definition uct.h:1678
uct_md_h md
Definition uct.h:1735
ucs_status_t uct_rkey_ptr(uct_component_h component, uct_rkey_bundle_t *rkey_ob, uint64_t remote_addr, void **addr_p)
Get a local pointer to remote memory.
ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer, uct_rkey_bundle_t *rkey_ob)
Unpack a remote key.
uct_mem_alloc_params_field_t
UCT allocation parameters specification field mask.
Definition uct.h:2513
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
uct_md_mem_flags
Memory allocation/registration flags.
Definition uct.h:793
ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods, unsigned num_methods, const uct_mem_alloc_params_t *params, uct_allocated_memory_t *mem)
Allocate memory for zero-copy communications and remote access.
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
uct_mem_advice_t
list of UCT memory use advice
Definition uct.h:880
ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, size_t length, uct_md_mem_attr_t *mem_attr)
Query attributes of a given pointer.
ucs_status_t uct_md_config_read(uct_component_h component, const char *env_prefix, const char *filename, uct_md_config_t **config_p)
Read the configuration for a memory domain.
enum uct_md_mem_attr_field uct_md_mem_attr_field_t
UCT MD memory attributes field mask.
ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer)
Pack a remote key.
struct uct_md_mem_attr uct_md_mem_attr_t
Memory domain attributes.
int uct_md_is_sockaddr_accessible(uct_md_h md, const ucs_sock_addr_t *sockaddr, uct_sockaddr_accessibility_t mode)
Check if remote sock address is accessible from the memory domain.
uct_md_mem_attr_field
UCT MD memory attributes field mask.
Definition uct.h:1606
ucs_status_t uct_md_detect_memory_type(uct_md_h md, const void *addr, size_t length, ucs_memory_type_t *mem_type_p)
Detect memory type.
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition uct.h:704
ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length, unsigned flags, uct_mem_h *memh_p)
Register memory for zero-copy sends and remote access.
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
ucs_status_t uct_rkey_release(uct_component_h component, const uct_rkey_bundle_t *rkey_ob)
Release a remote key.
ucs_status_t uct_md_mem_dereg(uct_md_h md, uct_mem_h memh)
Undo the operation of uct_md_mem_reg().
ucs_status_t uct_md_mem_advise(uct_md_h md, uct_mem_h memh, void *addr, size_t length, uct_mem_advice_t advice)
Give advice about the use of memory.
@ UCT_MEM_ALLOC_PARAM_FIELD_MEM_TYPE
Definition uct.h:2521
@ UCT_MEM_ALLOC_PARAM_FIELD_MDS
Definition uct.h:2524
@ UCT_MEM_ALLOC_PARAM_FIELD_SYS_DEVICE
Definition uct.h:2530
@ UCT_MEM_ALLOC_PARAM_FIELD_NAME
Definition uct.h:2527
@ UCT_MEM_ALLOC_PARAM_FIELD_ADDRESS
Definition uct.h:2518
@ UCT_MEM_ALLOC_PARAM_FIELD_FLAGS
Definition uct.h:2515
@ UCT_MD_MEM_ACCESS_REMOTE_PUT
Definition uct.h:821
@ UCT_MD_MEM_FLAG_NONBLOCK
Definition uct.h:798
@ UCT_MD_MEM_FLAG_LOCK
Definition uct.h:809
@ UCT_MD_MEM_SYMMETRIC_RKEY
Definition uct.h:850
@ UCT_MD_MEM_ACCESS_LOCAL_WRITE
Definition uct.h:841
@ UCT_MD_MEM_ACCESS_REMOTE_ATOMIC
Definition uct.h:831
@ UCT_MD_MEM_ACCESS_REMOTE_GET
Definition uct.h:826
@ UCT_MD_MEM_ACCESS_RMA
Definition uct.h:869
@ UCT_MD_MEM_GVA
Definition uct.h:855
@ UCT_MD_MEM_ACCESS_ALL
Definition uct.h:860
@ UCT_MD_MEM_FLAG_FIXED
Definition uct.h:803
@ UCT_MD_MEM_FLAG_HIDE_ERRORS
Definition uct.h:815
@ UCT_MD_MEM_ACCESS_LOCAL_READ
Definition uct.h:836
@ UCT_MD_FLAG_SOCKADDR
Definition uct.h:761
@ UCT_MD_FLAG_INVALIDATE
Definition uct.h:769
@ UCT_MD_FLAG_ADVISE
Definition uct.h:743
@ UCT_MD_FLAG_REG_DMABUF
Definition uct.h:780
@ UCT_MD_FLAG_EXPORTED_MKEY
Definition uct.h:775
@ UCT_MD_FLAG_NEED_MEMH
Definition uct.h:732
@ UCT_MD_FLAG_RKEY_PTR
Definition uct.h:756
@ UCT_MD_FLAG_REG
Definition uct.h:727
@ UCT_MD_FLAG_LAST
Definition uct.h:786
@ UCT_MD_FLAG_ALLOC
Definition uct.h:722
@ UCT_MD_FLAG_FIXED
Definition uct.h:748
@ UCT_MD_FLAG_NEED_RKEY
Definition uct.h:738
@ UCT_MADV_NORMAL
Definition uct.h:881
@ UCT_MADV_WILLNEED
Definition uct.h:882
@ UCT_MD_MEM_ATTR_FIELD_DMABUF_FD
Definition uct.h:1627
@ UCT_MD_MEM_ATTR_FIELD_BASE_ADDRESS
Definition uct.h:1617
@ UCT_MD_MEM_ATTR_FIELD_SYS_DEV
Definition uct.h:1614
@ UCT_MD_MEM_ATTR_FIELD_DMABUF_OFFSET
Definition uct.h:1633
@ UCT_MD_MEM_ATTR_FIELD_ALLOC_LENGTH
Definition uct.h:1620
@ UCT_MD_MEM_ATTR_FIELD_MEM_TYPE
Definition uct.h:1608
@ UCT_SOCKADDR_ACC_LOCAL
Definition uct.h:705
@ UCT_SOCKADDR_ACC_REMOTE
Definition uct.h:708
Describes a memory allocated by UCT.
Definition uct.h:1730
Memory domain attributes.
Definition uct.h:1578
Memory domain attributes.
Definition uct.h:1645
Parameters for allocating memory using uct_mem_alloc.
Definition uct.h:2538
Remote key with its type.
Definition uct.h:1748
uint32_t err_handler_flags
Definition uct.h:1268
void * user_data
Definition uct.h:1344
size_t am_align_offset
Definition uct.h:1313
uint32_t sockaddr_cb_flags
Definition uct.h:1377
size_t device_addr_len
Definition uct.h:1167
char dev_name[UCT_DEVICE_NAME_MAX]
Definition uct.h:330
ucs_sys_device_t sys_device
Definition uct.h:333
uct_iface_h iface
Definition uct.h:1339
const uct_device_addr_t * dev_addr
Definition uct.h:1351
size_t private_data_length
Definition uct.h:1450
uct_completion_callback_t func
Definition uct.h:1774
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition uct.h:1791
uct_cm_ep_client_connect_callback_t sockaddr_cb_client
Definition uct.h:1410
struct sockaddr_storage listen_sockaddr
Definition uct.h:1173
uct_tag_unexp_eager_cb_t eager_cb
Definition uct.h:1273
const ucs_sock_addr_t * sockaddr
Definition uct.h:1367
char md_name[UCT_MD_NAME_MAX]
Definition uct.h:219
const void * private_data
Definition uct.h:1444
unsigned md_resource_count
Definition uct.h:258
char name[UCT_COMPONENT_NAME_MAX]
Definition uct.h:255
size_t max_conn_priv
Definition uct.h:1170
size_t am_alignment
Definition uct.h:1295
uct_pending_callback_t func
Definition uct.h:1790
void * async_event_arg
Definition uct.h:1278
uct_ppn_bandwidth_t bandwidth
Definition uct.h:1181
struct uct_iface_attr::@7 cap
ucs_stats_node_t * stats_root
Definition uct.h:1258
ucs_cpu_set_t cpu_mask
Definition uct.h:1214
size_t ep_addr_len
Definition uct.h:1169
uct_md_resource_desc_t * md_resources
Definition uct.h:273
void * eager_arg
Definition uct.h:1271
uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb
Definition uct.h:1389
uint64_t open_mode
Definition uct.h:1216
uct_device_type_t dev_type
Definition uct.h:331
uct_cm_ep_resolve_callback_t cm_resolve_cb
Definition uct.h:1436
ucs_sys_device_t ctl_device
Definition uct.h:1196
uint64_t features
Definition uct.h:1319
uint8_t priority
Definition uct.h:1184
char tl_name[UCT_TL_NAME_MAX]
Definition uct.h:329
uint64_t field_mask
Definition uct.h:1333
uint64_t field_mask
Definition uct.h:1212
uct_cm_ep_server_conn_notify_callback_t sockaddr_cb_server
Definition uct.h:1416
ucs_status_t status
Definition uct.h:1776
uct_cm_h cm
Definition uct.h:1395
union uct_iface_params::@16 mode
uct_async_event_cb_t async_event_cb
Definition uct.h:1283
double overhead
Definition uct.h:1180
void * err_handler_arg
Definition uct.h:1263
uct_ep_disconnect_cb_t disconnect_cb
Definition uct.h:1421
int count
Definition uct.h:1775
unsigned dev_num_paths
Definition uct.h:1186
const ucs_sock_addr_t * local_sockaddr
Definition uct.h:1458
size_t dev_addr_length
Definition uct.h:1464
ucs_linear_func_t latency
Definition uct.h:1182
uint64_t flags
Definition uct.h:278
uct_conn_request_h conn_request
Definition uct.h:1404
uint64_t field_mask
Definition uct.h:252
size_t iface_addr_len
Definition uct.h:1168
size_t iface_addr_length
Definition uct.h:1470
const uct_iface_addr_t * iface_addr
Definition uct.h:1358
size_t rx_headroom
Definition uct.h:1260
uct_tag_unexp_rndv_cb_t rndv_cb
Definition uct.h:1276
unsigned path_index
Definition uct.h:1427
size_t max_num_eps
Definition uct.h:1185
ucs_time_t keepalive_interval
Definition uct.h:1286
void * rndv_arg
Definition uct.h:1274
uct_error_handler_t err_handler
Definition uct.h:1265
ucs_status_t uct_iface_open(uct_md_h md, uct_worker_h worker, const uct_iface_params_t *params, const uct_iface_config_t *config, uct_iface_h *iface_p)
Open a communication interface.
uct_iface_feature
UCT interface configuration features.
Definition uct.h:1025
struct uct_component_attr uct_component_attr_t
UCT component attributes.
ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p)
Create new endpoint.
void uct_ep_pending_purge(uct_ep_h ep, uct_pending_purge_callback_t cb, void *arg)
Remove all pending requests from an endpoint.
Definition uct.h:3263
ucs_status_t(* uct_error_handler_t)(void *arg, uct_ep_h ep, ucs_status_t status)
Callback to process peer failure.
Definition uct_def.h:579
uint64_t uct_tag_t
Definition uct_def.h:110
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
void uct_release_tl_resource_list(uct_tl_resource_desc_t *resources)
Release the list of resources returned from uct_md_query_tl_resources.
ucs_status_t uct_ep_get_address(uct_ep_h ep, uct_ep_addr_t *addr)
Get endpoint address.
uct_component_attr_field
UCT component attributes field mask.
Definition uct.h:230
ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags, uct_completion_t *comp)
Flush outstanding communication operations on an endpoint.
Definition uct.h:3299
void * uct_mem_h
Definition uct_def.h:84
struct uct_worker * uct_worker_h
Definition uct_def.h:95
uintptr_t uct_rkey_t
Definition uct_def.h:85
ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
Ensures ordering of outstanding communications on the endpoint. Operations issued on the endpoint pri...
Definition uct.h:3318
void(* uct_pending_purge_callback_t)(uct_pending_req_t *self, void *arg)
Callback to purge pending requests.
Definition uct_def.h:591
ucs_status_t uct_ep_connect_to_ep(uct_ep_h ep, const uct_device_addr_t *dev_addr, const uct_ep_addr_t *ep_addr)
Connect endpoint to a remote endpoint.
ucs_status_t uct_ep_pending_add(uct_ep_h ep, uct_pending_req_t *req, unsigned flags)
Add a pending request to an endpoint.
Definition uct.h:3244
ucs_status_t uct_component_query(uct_component_h component, uct_component_attr_t *component_attr)
Get component attributes.
ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags, uct_completion_t *comp)
check if the destination endpoint is alive in respect to UCT library
unsigned uct_iface_progress(uct_iface_h iface)
Perform a progress on an interface.
Definition uct.h:3660
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition uct_def.h:616
ucs_status_t uct_md_open(uct_component_h component, const char *md_name, const uct_md_config_t *config, uct_md_h *md_p)
Open a memory domain.
ucs_status_t uct_iface_get_device_address(uct_iface_h iface, uct_device_addr_t *addr)
Get address of the device the interface is using.
ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags, uct_completion_t *comp)
Flush outstanding communication operations on an interface.
Definition uct.h:2877
static UCS_F_ALWAYS_INLINE void uct_completion_update_status(uct_completion_t *comp, ucs_status_t status)
Update status of UCT completion handle.
Definition uct.h:3826
uct_progress_types
UCT progress types.
Definition uct.h:554
void * uct_conn_request_h
Definition uct_def.h:112
void uct_iface_close(uct_iface_h iface)
Close and destroy an interface.
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition uct_def.h:603
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition uct.h:3650
ucs_status_t uct_iface_get_address(uct_iface_h iface, uct_iface_addr_t *addr)
Get interface address.
struct uct_ep_addr uct_ep_addr_t
Definition uct_def.h:100
struct uct_md * uct_md_h
Memory domain handler.
Definition uct_def.h:86
uct_flush_flags
Flush modifiers.
Definition uct.h:518
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition uct.h:639
uct_iface_open_mode
Mode in which to open the interface.
Definition uct.h:614
uct_ep_params_field
UCT endpoint created by uct_ep_create parameters field mask.
Definition uct.h:941
void uct_config_release(void *config)
Release configuration memory returned from uct_md_iface_config_read(), uct_md_config_read(),...
struct uct_iface_addr uct_iface_addr_t
Definition uct_def.h:99
struct uct_component * uct_component_h
Definition uct_def.h:78
struct uct_iface_config uct_iface_config_t
Definition uct_def.h:80
struct uct_cm_config uct_cm_config_t
Definition uct_def.h:82
int uct_worker_cb_id_t
Definition uct_def.h:111
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition uct.h:3625
ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags, const char *name, uct_allocated_memory_t *mem)
Allocate memory which can be used for zero-copy communications.
ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
Ensures ordering of outstanding communications on the interface. Operations issued on the interface p...
Definition uct.h:2895
struct uct_tl_resource_desc uct_tl_resource_desc_t
Communication resource descriptor.
struct uct_iface * uct_iface_h
Definition uct_def.h:79
uct_cm_t * uct_cm_h
Definition uct_def.h:105
struct uct_md_config uct_md_config_t
Definition uct_def.h:81
ucs_status_t uct_query_components(uct_component_h **components_p, unsigned *num_components_p)
Query for list of components.
ucs_status_t uct_iface_query(uct_iface_h iface, uct_iface_attr_t *iface_attr)
Get interface attributes.
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
struct uct_device_addr uct_device_addr_t
Definition uct_def.h:98
void uct_md_close(uct_md_h md)
Close a memory domain.
uct_cb_flags
Callback flags.
Definition uct.h:590
ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name, const char *env_prefix, const char *filename, uct_iface_config_t **config_p)
Read transport-specific interface configuration.
ucs_status_t(* uct_pending_callback_t)(uct_pending_req_t *self)
Callback to process pending requests.
Definition uct_def.h:558
void uct_release_component_list(uct_component_h *components)
Release the list of components returned from uct_query_components.
int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr, const uct_iface_addr_t *iface_addr)
Check if remote iface address is reachable.
uct_device_type_t
List of UCX device types.
Definition uct.h:308
ucs_status_t uct_iface_event_fd_get(uct_iface_h iface, int *fd_p)
Obtain a notification file descriptor for polling.
ucs_status_t uct_md_query_tl_resources(uct_md_h md, uct_tl_resource_desc_t **resources_p, unsigned *num_resources_p)
Query for transport resources.
struct uct_ep * uct_ep_h
Definition uct_def.h:83
uct_iface_event_types
Asynchronous event types.
Definition uct.h:505
struct uct_md_resource_desc uct_md_resource_desc_t
Memory domain resource descriptor.
ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events)
Turn on event notification for the next event.
struct uct_listener * uct_listener_h
Definition uct_def.h:107
void(* uct_async_event_cb_t)(void *arg, unsigned flags)
Callback to process asynchronous events.
Definition uct_def.h:902
void(* uct_completion_callback_t)(uct_completion_t *self)
Callback to process send completion.
Definition uct_def.h:541
@ UCT_IFACE_FEATURE_AMO32
Definition uct.h:1036
@ UCT_IFACE_FEATURE_TAG
Definition uct.h:1042
@ UCT_IFACE_FEATURE_AM
Definition uct.h:1027
@ UCT_IFACE_FEATURE_PUT
Definition uct.h:1030
@ UCT_IFACE_FEATURE_LAST
Definition uct.h:1048
@ UCT_IFACE_FEATURE_FLUSH_REMOTE
Definition uct.h:1045
@ UCT_IFACE_FEATURE_GET
Definition uct.h:1033
@ UCT_IFACE_FEATURE_AMO64
Definition uct.h:1039
@ UCT_COMPONENT_ATTR_FIELD_MD_RESOURCE_COUNT
Definition uct.h:232
@ UCT_COMPONENT_ATTR_FIELD_NAME
Definition uct.h:231
@ UCT_COMPONENT_ATTR_FIELD_MD_RESOURCES
Definition uct.h:233
@ UCT_COMPONENT_ATTR_FIELD_FLAGS
Definition uct.h:234
@ UCT_PROGRESS_RECV
Definition uct.h:556
@ UCT_PROGRESS_SEND
Definition uct.h:555
@ UCT_PROGRESS_THREAD_SAFE
Definition uct.h:557
@ UCT_TAG_RECV_CB_INLINE_DATA
Definition uct.h:1859
@ UCT_FLUSH_FLAG_REMOTE
Definition uct.h:538
@ UCT_FLUSH_FLAG_CANCEL
Definition uct.h:523
@ UCT_FLUSH_FLAG_LOCAL
Definition uct.h:519
@ UCT_IFACE_PARAM_FIELD_DEVICE
Definition uct.h:648
@ UCT_IFACE_PARAM_FIELD_AM_ALIGN_OFFSET
Definition uct.h:694
@ UCT_IFACE_PARAM_FIELD_HW_TM_RNDV_CB
Definition uct.h:679
@ UCT_IFACE_PARAM_FIELD_ERR_HANDLER_FLAGS
Definition uct.h:667
@ UCT_IFACE_PARAM_FIELD_KEEPALIVE_INTERVAL
Definition uct.h:688
@ UCT_IFACE_PARAM_FIELD_OPEN_MODE
Definition uct.h:644
@ UCT_IFACE_PARAM_FIELD_ERR_HANDLER
Definition uct.h:664
@ UCT_IFACE_PARAM_FIELD_HW_TM_RNDV_ARG
Definition uct.h:676
@ UCT_IFACE_PARAM_FIELD_STATS_ROOT
Definition uct.h:655
@ UCT_IFACE_PARAM_FIELD_CPU_MASK
Definition uct.h:641
@ UCT_IFACE_PARAM_FIELD_ASYNC_EVENT_CB
Definition uct.h:685
@ UCT_IFACE_PARAM_FIELD_ASYNC_EVENT_ARG
Definition uct.h:682
@ UCT_IFACE_PARAM_FIELD_AM_ALIGNMENT
Definition uct.h:691
@ UCT_IFACE_PARAM_FIELD_HW_TM_EAGER_CB
Definition uct.h:673
@ UCT_IFACE_PARAM_FIELD_RX_HEADROOM
Definition uct.h:658
@ UCT_IFACE_PARAM_FIELD_ERR_HANDLER_ARG
Definition uct.h:661
@ UCT_IFACE_PARAM_FIELD_HW_TM_EAGER_ARG
Definition uct.h:670
@ UCT_IFACE_PARAM_FIELD_FEATURES
Definition uct.h:697
@ UCT_IFACE_PARAM_FIELD_SOCKADDR
Definition uct.h:652
@ UCT_IFACE_OPEN_MODE_DEVICE
Definition uct.h:616
@ UCT_IFACE_OPEN_MODE_SOCKADDR_SERVER
Definition uct.h:620
@ UCT_IFACE_OPEN_MODE_SOCKADDR_CLIENT
Definition uct.h:624
@ UCT_IFACE_OPEN_MODE_STUB
Definition uct.h:628
@ UCT_EP_PARAM_FIELD_IFACE
Definition uct.h:943
@ UCT_EP_PARAM_FIELD_SOCKADDR_DISCONNECT_CB
Definition uct.h:976
@ UCT_EP_PARAM_FIELD_DEV_ADDR
Definition uct.h:949
@ UCT_EP_PARAM_FIELD_CONN_REQUEST
Definition uct.h:967
@ UCT_EP_PARAM_FIELD_PRIV_DATA
Definition uct.h:985
@ UCT_EP_PARAM_FIELD_SOCKADDR_PACK_CB
Definition uct.h:961
@ UCT_EP_PARAM_FIELD_SOCKADDR_CB_FLAGS
Definition uct.h:958
@ UCT_EP_PARAM_FIELD_IFACE_ADDR_LENGTH
Definition uct.h:997
@ UCT_EP_PARAM_FIELD_CM
Definition uct.h:964
@ UCT_EP_PARAM_FIELD_DEV_ADDR_LENGTH
Definition uct.h:994
@ UCT_EP_PARAM_FIELD_CM_RESOLVE_CB
Definition uct.h:982
@ UCT_EP_PARAM_FIELD_USER_DATA
Definition uct.h:946
@ UCT_EP_PARAM_FIELD_PRIV_DATA_LENGTH
Definition uct.h:988
@ UCT_EP_PARAM_FIELD_SOCKADDR_CONNECT_CB_CLIENT
Definition uct.h:970
@ UCT_EP_PARAM_FIELD_SOCKADDR_NOTIFY_CB_SERVER
Definition uct.h:973
@ UCT_EP_PARAM_FIELD_SOCKADDR
Definition uct.h:955
@ UCT_EP_PARAM_FIELD_IFACE_ADDR
Definition uct.h:952
@ UCT_EP_PARAM_FIELD_PATH_INDEX
Definition uct.h:979
@ UCT_EP_PARAM_FIELD_LOCAL_SOCKADDR
Definition uct.h:991
@ UCT_CB_FLAG_ASYNC
Definition uct.h:592
@ UCT_CB_FLAG_RESERVED
Definition uct.h:591
@ UCT_COMPONENT_FLAG_RKEY_PTR
Definition uct.h:300
@ UCT_COMPONENT_FLAG_CM
Definition uct.h:294
@ UCT_DEVICE_TYPE_SHM
Definition uct.h:310
@ UCT_DEVICE_TYPE_ACC
Definition uct.h:311
@ UCT_DEVICE_TYPE_NET
Definition uct.h:309
@ UCT_DEVICE_TYPE_SELF
Definition uct.h:312
@ UCT_DEVICE_TYPE_LAST
Definition uct.h:313
@ UCT_EVENT_RECV
Definition uct.h:507
@ UCT_EVENT_RECV_SIG
Definition uct.h:508
@ UCT_EVENT_SEND_COMP
Definition uct.h:506
@ UCT_EVENT_SPEED_CHANGE
Definition uct.h:510
Completion handle.
Definition uct.h:1773
UCT component attributes.
Definition uct.h:245
Parameters for creating a UCT endpoint by uct_ep_create.
Definition uct.h:1327
Interface attributes: capabilities and limitations.
Definition uct.h:1069
Parameters used for interface creation.
Definition uct.h:1208
Structure for scatter-gather I/O.
Definition uct_def.h:152
Memory domain resource descriptor.
Definition uct.h:218
Pending request.
Definition uct.h:1789
Communication resource descriptor.
Definition uct.h:328
ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length, uint64_t remote_addr, uct_rkey_t rkey)
Definition uct.h:2920
ucs_status_t uct_ep_get_zcopy(uct_ep_h ep, const uct_iov_t *iov, size_t iovcnt, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Read data from remote memory while avoiding local memory copy.
Definition uct.h:3031
ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb, void *arg, size_t length, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Definition uct.h:2992
ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb, void *arg, uint64_t remote_addr, uct_rkey_t rkey)
Definition uct.h:2931
ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length, uint64_t remote_addr, uct_rkey_t rkey)
Definition uct.h:2981
ucs_status_t uct_ep_put_zcopy(uct_ep_h ep, const uct_iov_t *iov, size_t iovcnt, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Write data to remote memory while avoiding local memory copy.
Definition uct.h:2968
ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag, uint64_t imm, uct_pack_callback_t pack_cb, void *arg, unsigned flags)
Bcopy eager tagged-send operation.
Definition uct.h:3376
ucs_status_t uct_ep_tag_rndv_request(uct_ep_h ep, uct_tag_t tag, const void *header, unsigned header_length, unsigned flags)
Send software rendezvous request.
Definition uct.h:3526
ucs_status_t(* uct_tag_unexp_eager_cb_t)(void *arg, void *data, size_t length, unsigned flags, uct_tag_t stag, uint64_t imm, void **context)
Callback to process unexpected eager tagged message.
Definition uct_def.h:850
ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag, const void *data, size_t length)
Short eager tagged-send operation.
Definition uct.h:3346
ucs_status_t(* uct_tag_unexp_rndv_cb_t)(void *arg, unsigned flags, uint64_t stag, const void *header, unsigned header_length, uint64_t remote_addr, size_t length, const void *rkey_buf)
Callback to process unexpected rendezvous tagged message.
Definition uct_def.h:887
ucs_status_ptr_t uct_ep_tag_rndv_zcopy(uct_ep_h ep, uct_tag_t tag, const void *header, unsigned header_length, const uct_iov_t *iov, size_t iovcnt, unsigned flags, uct_completion_t *comp)
Rendezvous tagged-send operation.
Definition uct.h:3470
ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag, uint64_t imm, const uct_iov_t *iov, size_t iovcnt, unsigned flags, uct_completion_t *comp)
Zcopy eager tagged-send operation.
Definition uct.h:3422
ucs_status_t uct_iface_tag_recv_zcopy(uct_iface_h iface, uct_tag_t tag, uct_tag_t tag_mask, const uct_iov_t *iov, size_t iovcnt, uct_tag_context_t *ctx)
Post a tag to a transport interface.
Definition uct.h:3566
ucs_status_t uct_iface_tag_recv_cancel(uct_iface_h iface, uct_tag_context_t *ctx, int force)
Cancel a posted tag.
Definition uct.h:3599
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition uct.h:3501
double dedicated
Definition uct.h:1060
double shared
Definition uct.h:1061
Definition uct.h:1059
Posted tag context.
Definition uct.h:1802
char priv[UCT_TAG_PRIV_LEN]
Definition uct.h:1849
void(* rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header, unsigned header_length, ucs_status_t status, unsigned flags)
Definition uct.h:1845
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition uct.h:1809
void(* completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm, size_t length, void *inline_data, ucs_status_t status)
Definition uct.h:1830