UCX 1.19
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
308typedef enum {
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 /* Tag matching operations */
433#define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
434#define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
435#define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
436#define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
438 /* Interface capability */
439#define UCT_IFACE_FLAG_INTER_NODE UCS_BIT(54)
455 /* Event types */
456#define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(0)
458#define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(1)
460#define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(2)
462 /* Event notification mechanisms */
463#define UCT_IFACE_FLAG_EVENT_FD UCS_BIT(3)
465#define UCT_IFACE_FLAG_EVENT_ASYNC_CB UCS_BIT(4)
476typedef enum {
486
487
500 UCT_EVENT_SEND_COMP = UCS_BIT(0),
501 UCT_EVENT_RECV = UCS_BIT(1),
502 UCT_EVENT_RECV_SIG = UCS_BIT(2)
505
506
516 UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0),
531 UCT_FLUSH_FLAG_REMOTE = UCS_BIT(1)
541
542
548 UCT_PROGRESS_SEND = UCS_BIT(0),
549 UCT_PROGRESS_RECV = UCS_BIT(1),
550 UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
554
555
561 UCT_SEND_FLAG_SIGNALED = UCS_BIT(0),
567 UCT_SEND_FLAG_PEER_CHECK = UCS_BIT(1)
575
576
584 UCT_CB_FLAG_RESERVED = UCS_BIT(1),
585 UCT_CB_FLAG_ASYNC = UCS_BIT(2)
601
602
610
614
619
620
631
634
638
642
645
648
651
654
657
660
663
666
669
672
675
678
681
684
688
693typedef enum {
701
702
707enum {
711 UCT_MD_FLAG_ALLOC = UCS_BIT(0),
712
716 UCT_MD_FLAG_REG = UCS_BIT(1),
717
722
728
732 UCT_MD_FLAG_ADVISE = UCS_BIT(4),
733
737 UCT_MD_FLAG_FIXED = UCS_BIT(5),
738
746
751
759
765
770
775 UCT_MD_FLAG_LAST = UCS_BIT(11)
777
788
793
799
805
806 /* Memory access flags */
811
816
821
826
831
840
844 UCT_MD_MEM_GVA = UCS_BIT(11),
845
854
863
864
869typedef enum {
876
877
889
890
902
903
914
917
921
922
933
936
939
942
945
948
951
954
957
960
963
966
969
972
975
978
981
984
988
989
1000
1004
1005
1017
1020
1023
1026
1029
1032
1035
1037 UCT_IFACE_FEATURE_LAST = UCS_BIT(7)
1039
1040/*
1041 * @ingroup UCT_RESOURCE
1042 * @brief Process Per Node (PPN) bandwidth specification: f(ppn) = dedicated + shared / ppn
1043 *
1044 * This structure specifies a function which is used as basis for bandwidth
1045 * estimation of various UCT operations. This information can be used to select
1046 * the best performing combination of UCT operations.
1047 */
1048typedef struct uct_ppn_bandwidth {
1049 double dedicated;
1050 double shared;
1052
1053
1059 struct {
1060 struct {
1061 size_t max_short;
1062 size_t max_bcopy;
1063 size_t min_zcopy;
1066 size_t max_zcopy;
1069 size_t opt_zcopy_align;
1071 size_t align_mtu;
1072 size_t max_iov;
1075 } put;
1077 struct {
1078 size_t max_short;
1079 size_t max_bcopy;
1080 size_t min_zcopy;
1083 size_t max_zcopy;
1086 size_t opt_zcopy_align;
1088 size_t align_mtu;
1089 size_t max_iov;
1092 } get;
1094 struct {
1095 size_t max_short;
1097 size_t max_bcopy;
1098 size_t min_zcopy;
1101 size_t max_zcopy;
1104 size_t opt_zcopy_align;
1106 size_t align_mtu;
1107 size_t max_hdr;
1108 size_t max_iov;
1111 } am;
1113 struct {
1114 struct {
1115 size_t min_recv;
1116 size_t max_zcopy;
1118 size_t max_iov;
1121 size_t max_outstanding;
1123 } recv;
1124
1125 struct {
1126 size_t max_short;
1128 size_t max_bcopy;
1130 size_t max_zcopy;
1132 size_t max_iov;
1134 } eager;
1136 struct {
1137 size_t max_zcopy;
1139 size_t max_hdr;
1142 size_t max_iov;
1144 } rndv;
1145 } tag;
1147 struct {
1148 uint64_t op_flags;
1149 uint64_t fop_flags;
1150 } atomic32, atomic64;
1152 uint64_t flags;
1153 uint64_t event_flags;
1162 struct sockaddr_storage listen_sockaddr;
1164 /*
1165 * The following fields define expected performance of the communication
1166 * interface, this would usually be a combination of device and system
1167 * characteristics and determined at run time.
1168 */
1169 double overhead;
1171 ucs_linear_func_t latency;
1173 uint8_t priority;
1184};
1185
1186
1198 uint64_t field_mask;
1200 ucs_cpu_set_t cpu_mask;
1202 uint64_t open_mode;
1204 union {
1211 struct {
1212 const char *tl_name;
1213 const char *dev_name;
1214 } device;
1222 struct {
1223 ucs_sock_addr_t listen_sockaddr;
1225 void *conn_request_arg;
1230 uint32_t cb_flags;
1231 } sockaddr;
1233
1236 ucs_stats_node_t *stats_root;
1239
1247
1255
1262
1263 /* Time period between keepalive rounds */
1265
1274
1292
1297 uint64_t features;
1298};
1299
1300
1311 uint64_t field_mask;
1312
1318
1323
1330
1337
1346
1356
1368
1374
1383
1389
1395
1400
1405 unsigned path_index;
1406
1415
1422 const void *private_data;
1423
1429
1437
1443
1449};
1450
1451
1462 uint64_t field_mask;
1463
1467 const void *private_data;
1468
1474};
1475
1486 uint64_t field_mask;
1487
1493};
1494
1495
1506 uint64_t field_mask;
1507
1511 struct sockaddr_storage sockaddr;
1512};
1513
1514
1526 uint64_t field_mask;
1527
1534
1539
1544};
1545
1546
1557 struct {
1558 uint64_t max_alloc;
1559 size_t max_reg;
1560 uint64_t flags;
1561 uint64_t reg_mem_types;
1562 uint64_t detect_mem_types;
1563 uint64_t alloc_mem_types;
1564 uint64_t access_mem_types;
1566
1567 ucs_linear_func_t reg_cost;
1571 char component_name[UCT_COMPONENT_NAME_MAX];
1573 ucs_cpu_set_t local_cpus;
1574};
1575
1576
1587
1593
1596
1599
1606
1613
1614
1623typedef struct uct_md_mem_attr {
1628 uint64_t field_mask;
1629
1636
1642 ucs_sys_device_t sys_dev;
1643
1650
1657
1667
1674
1675
1696ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, size_t length,
1697 uct_md_mem_attr_t *mem_attr);
1698
1699
1708typedef struct uct_allocated_memory {
1709 void *address;
1710 size_t length;
1715 ucs_sys_device_t sys_device;
1717
1718
1726typedef struct uct_rkey_bundle {
1728 void *handle;
1729 void *type;
1731
1732
1753 int count;
1757};
1758
1759
1769 char priv[UCT_PENDING_REQ_PRIV_LEN];
1770};
1771
1772
1788
1808 void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1809 size_t length, void *inline_data, ucs_status_t status);
1810
1823 void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1824 unsigned header_length, ucs_status_t status, unsigned flags);
1825
1827 char priv[UCT_TAG_PRIV_LEN];
1828};
1829
1830
1835enum {
1836 /* If set, header points to inline data, otherwise it is user buffer. */
1837 UCT_TAG_RECV_CB_INLINE_DATA = UCS_BIT(0)
1839
1840
1841extern const char *uct_alloc_method_names[];
1842extern const char *uct_device_type_names[];
1843
1844
1859 unsigned *num_components_p);
1860
1871
1872
1886 uct_component_attr_t *component_attr);
1887
1888
1908ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1909 const uct_md_config_t *config, uct_md_h *md_p);
1910
1918
1919
1935 uct_tl_resource_desc_t **resources_p,
1936 unsigned *num_resources_p);
1937
1938
1949
1950
1965ucs_status_t uct_worker_create(ucs_async_context_t *async,
1966 ucs_thread_mode_t thread_mode,
1967 uct_worker_h *worker_p);
1968
1969
1977
1978
2002void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
2003 void *arg, unsigned flags,
2004 uct_worker_cb_id_t *id_p);
2005
2006
2028 uct_worker_cb_id_t *id_p);
2029
2030
2059 const char *env_prefix, const char *filename,
2060 uct_iface_config_t **config_p);
2061
2062
2070void uct_config_release(void *config);
2071
2072
2088ucs_status_t uct_config_get(void *config, const char *name, char *value,
2089 size_t max);
2090
2091
2104ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
2105
2106
2123 const uct_iface_params_t *params,
2124 const uct_iface_config_t *config,
2125 uct_iface_h *iface_p);
2126
2127
2135
2136
2145
2146
2159
2160
2172
2173
2193 const uct_iface_addr_t *iface_addr);
2194
2195
2213ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
2214 uct_completion_t *comp);
2215
2216
2230
2231
2252
2253
2269ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
2270 const char *name, uct_allocated_memory_t *mem);
2271
2272
2280
2281
2300 uct_am_callback_t cb, void *arg, uint32_t flags);
2301
2302
2317 void *arg);
2318
2319
2332 uct_conn_request_h conn_request);
2333
2334
2348 uct_conn_request_h conn_request);
2349
2350
2386
2387
2403
2404
2438
2439
2447
2448
2458
2459
2471 const uct_ep_addr_t *ep_addr);
2472
2473
2482
2483
2491typedef enum {
2494
2497
2500
2503
2506
2510
2511
2516typedef struct {
2522 uint64_t field_mask;
2523
2530 unsigned flags;
2531
2542 void *address;
2543
2548
2549 struct {
2554 const uct_md_h *mds;
2555
2561 unsigned count;
2562 } mds;
2563
2570 const char *name;
2571
2576 ucs_sys_device_t sys_device;
2578
2579
2598 size_t length, uct_mem_advice_t advice);
2599
2600
2614ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2615 unsigned flags, uct_mem_h *memh_p);
2616
2617
2626
2627
2641 size_t length,
2642 ucs_memory_type_t *mem_type_p);
2643
2644
2669ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods,
2670 unsigned num_methods,
2671 const uct_mem_alloc_params_t *params,
2673
2674
2685
2701 const char *env_prefix, const char *filename,
2702 uct_md_config_t **config_p);
2703
2704
2727
2728
2741
2742
2762ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2763 uct_rkey_bundle_t *rkey_ob);
2764
2765
2792 uint64_t remote_addr, void **addr_p);
2793
2794
2804 const uct_rkey_bundle_t *rkey_ob);
2805
2806
2821UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2822{
2823 return ucs_callbackq_dispatch(&worker->progress_q);
2824}
2825
2826
2855UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2856 uct_completion_t *comp)
2857{
2858 return iface->ops.iface_flush(iface, flags, comp);
2859}
2860
2873UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2874{
2875 return iface->ops.iface_fence(iface, flags);
2876}
2877
2887UCT_INLINE_API void uct_iface_release_desc(void *desc)
2888{
2889 uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2890 release_desc->cb(release_desc, desc);
2891}
2892
2893
2898UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2899 uint64_t remote_addr, uct_rkey_t rkey)
2900{
2901 return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2902}
2903
2904
2909UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2910 void *arg, uint64_t remote_addr,
2911 uct_rkey_t rkey)
2912{
2913 return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2914}
2915
2916
2947 const uct_iov_t *iov, size_t iovcnt,
2948 uint64_t remote_addr, uct_rkey_t rkey,
2949 uct_completion_t *comp)
2950{
2951 return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2952}
2953
2954
2959UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2960 uint64_t remote_addr, uct_rkey_t rkey)
2961{
2962 return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2963}
2964
2965
2971 void *arg, size_t length,
2972 uint64_t remote_addr, uct_rkey_t rkey,
2973 uct_completion_t *comp)
2974{
2975 return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2976 rkey, comp);
2977}
2978
2979
3010 const uct_iov_t *iov, size_t iovcnt,
3011 uint64_t remote_addr, uct_rkey_t rkey,
3012 uct_completion_t *comp)
3013{
3014 return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
3015}
3016
3017
3022UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
3023 const void *payload, unsigned length)
3024{
3025 return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
3026}
3027
3028
3059UCT_INLINE_API ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id,
3060 const uct_iov_t *iov, size_t iovcnt)
3061{
3062 return ep->iface->ops.ep_am_short_iov(ep, id, iov, iovcnt);
3063}
3064
3065
3070UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
3071 uct_pack_callback_t pack_cb, void *arg,
3072 unsigned flags)
3073{
3074 return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
3075}
3076
3077
3115UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
3116 const void *header,
3117 unsigned header_length,
3118 const uct_iov_t *iov, size_t iovcnt,
3119 unsigned flags,
3120 uct_completion_t *comp)
3121{
3122 return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
3123 flags, comp);
3124}
3125
3130UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
3131 uint64_t remote_addr, uct_rkey_t rkey,
3132 uint64_t *result, uct_completion_t *comp)
3133{
3134 return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
3135}
3136
3137
3142UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
3143 uint64_t remote_addr, uct_rkey_t rkey,
3144 uint32_t *result, uct_completion_t *comp)
3145{
3146 return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
3147}
3148
3149
3154UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
3155 uint32_t value, uint64_t remote_addr,
3156 uct_rkey_t rkey)
3157{
3158 return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
3159}
3160
3161
3166UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
3167 uint64_t value, uint64_t remote_addr,
3168 uct_rkey_t rkey)
3169{
3170 return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
3171}
3172
3173
3178UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3179 uint32_t value, uint32_t *result,
3180 uint64_t remote_addr, uct_rkey_t rkey,
3181 uct_completion_t *comp)
3182{
3183 return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
3184 remote_addr, rkey, comp);
3185}
3186
3187
3192UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3193 uint64_t value, uint64_t *result,
3194 uint64_t remote_addr, uct_rkey_t rkey,
3195 uct_completion_t *comp)
3196{
3197 return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
3198 remote_addr, rkey, comp);
3199}
3200
3201
3223 uct_pending_req_t *req,
3224 unsigned flags)
3225{
3226 return ep->iface->ops.ep_pending_add(ep, req, flags);
3227}
3228
3229
3241UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
3243 void *arg)
3244{
3245 ep->iface->ops.ep_pending_purge(ep, cb, arg);
3246}
3247
3248
3277UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
3278 uct_completion_t *comp)
3279{
3280 return ep->iface->ops.ep_flush(ep, flags, comp);
3281}
3282
3283
3296UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
3297{
3298 return ep->iface->ops.ep_fence(ep, flags);
3299}
3300
3301
3325 const void *data, size_t length)
3326{
3327 return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
3328}
3329
3330
3354UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
3355 uint64_t imm,
3356 uct_pack_callback_t pack_cb,
3357 void *arg, unsigned flags)
3358{
3359 return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
3360}
3361
3362
3401 uint64_t imm,
3402 const uct_iov_t *iov,
3403 size_t iovcnt,
3404 unsigned flags,
3405 uct_completion_t *comp)
3406{
3407 return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
3408 comp);
3409}
3410
3411
3449 const void *header,
3450 unsigned header_length,
3451 const uct_iov_t *iov,
3452 size_t iovcnt,
3453 unsigned flags,
3454 uct_completion_t *comp)
3455{
3456 return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
3457 iov, iovcnt, flags, comp);
3458}
3459
3460
3480{
3481 return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
3482}
3483
3484
3505 const void* header,
3506 unsigned header_length,
3507 unsigned flags)
3508{
3509 return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
3510 flags);
3511}
3512
3513
3545 uct_tag_t tag,
3546 uct_tag_t tag_mask,
3547 const uct_iov_t *iov,
3548 size_t iovcnt,
3549 uct_tag_context_t *ctx)
3550{
3551 return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3552}
3553
3554
3578 uct_tag_context_t *ctx,
3579 int force)
3580{
3581 return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3582}
3583
3584
3603UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3604{
3605 iface->ops.iface_progress_enable(iface, flags);
3606}
3607
3608
3628UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3629{
3630 iface->ops.iface_progress_disable(iface, flags);
3631}
3632
3633
3638UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3639{
3640 return iface->ops.iface_progress(iface);
3641}
3642
3643
3667 const uct_cm_config_t *config, uct_cm_h *cm_p);
3668
3669
3677
3678
3690
3691
3709 const char *env_prefix, const char *filename,
3710 uct_cm_config_t **config_p);
3711
3712
3726
3727
3746ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3747 socklen_t socklen,
3748 const uct_listener_params_t *params,
3749 uct_listener_h *listener_p);
3750
3751
3759
3760
3777 uct_conn_request_h conn_request);
3778
3779
3793 uct_listener_attr_t *listener_attr);
3794
3795
3803static UCS_F_ALWAYS_INLINE
3805{
3806 if (ucs_unlikely(status != UCS_OK) && (comp->status == UCS_OK)) {
3807 /* store first failure status */
3808 comp->status = status;
3809 }
3810}
3811
3812
3818END_C_DECLS
3819
3820#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:3022
uct_msg_flags
Flags for active message send operation.
Definition uct.h:560
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:3059
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:2887
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:524
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:3070
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:3115
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:506
@ UCT_SEND_FLAG_PEER_CHECK
Definition uct.h:567
@ UCT_SEND_FLAG_SIGNALED
Definition uct.h:561
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:3166
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:3178
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:3154
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:3130
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:3142
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:3192
uint64_t field_mask
Definition uct.h:1526
int backlog
Definition uct.h:1533
uint64_t field_mask
Definition uct.h:1462
uint64_t field_mask
Definition uct.h:1486
size_t private_data_length
Definition uct.h:1473
uct_cm_listener_conn_request_callback_t conn_request_cb
Definition uct.h:1538
void * user_data
Definition uct.h:1543
struct sockaddr_storage sockaddr
Definition uct.h:1511
uint64_t field_mask
Definition uct.h:1506
size_t max_conn_priv
Definition uct.h:1492
const void * private_data
Definition uct.h:1467
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:642
uct_cm_attr_field
UCT connection manager attributes field mask.
Definition uct.h:885
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:771
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:667
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:997
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:697
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:721
uct_listener_attr_field
UCT listener attributes field mask.
Definition uct.h:898
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:795
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:743
uct_listener_params_field
UCT listener created by uct_listener_create parameters field mask.
Definition uct.h:911
@ UCT_CM_ATTR_FIELD_MAX_CONN_PRIV
Definition uct.h:887
@ UCT_EP_CONNECT_PARAM_FIELD_PRIVATE_DATA
Definition uct.h:999
@ UCT_EP_CONNECT_PARAM_FIELD_PRIVATE_DATA_LENGTH
Definition uct.h:1002
@ UCT_LISTENER_ATTR_FIELD_SOCKADDR
Definition uct.h:900
@ UCT_LISTENER_PARAM_FIELD_CONN_REQUEST_CB
Definition uct.h:916
@ UCT_LISTENER_PARAM_FIELD_BACKLOG
Definition uct.h:913
@ UCT_LISTENER_PARAM_FIELD_USER_DATA
Definition uct.h:919
Connection manager attributes, capabilities and limitations.
Definition uct.h:1480
Parameters for connecting a UCT endpoint by uct_ep_connect.
Definition uct.h:1456
UCT listener attributes, capabilities and limitations.
Definition uct.h:1500
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition uct.h:1520
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:476
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:2821
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:479
@ UCT_ALLOC_METHOD_LAST
Definition uct.h:483
@ UCT_ALLOC_METHOD_MMAP
Definition uct.h:481
@ UCT_ALLOC_METHOD_HEAP
Definition uct.h:480
@ UCT_ALLOC_METHOD_HUGE
Definition uct.h:482
@ UCT_ALLOC_METHOD_THP
Definition uct.h:477
@ UCT_ALLOC_METHOD_DEFAULT
Definition uct.h:484
void * base_address
Definition uct.h:1649
char component_name[UCT_COMPONENT_NAME_MAX]
Definition uct.h:1571
ucs_sys_device_t sys_device
Definition uct.h:2576
uct_mem_h memh
Definition uct.h:1714
void * address
Definition uct.h:2542
uct_rkey_t rkey
Definition uct.h:1727
unsigned flags
Definition uct.h:2530
int dmabuf_fd
Definition uct.h:1666
uint64_t field_mask
Definition uct.h:1628
size_t rkey_packed_size
Definition uct.h:1572
ucs_memory_type_t mem_type
Definition uct.h:1635
ucs_linear_func_t reg_cost
Definition uct.h:1567
size_t dmabuf_offset
Definition uct.h:1672
ucs_sys_device_t sys_dev
Definition uct.h:1642
ucs_cpu_set_t local_cpus
Definition uct.h:1573
ucs_sys_device_t sys_device
Definition uct.h:1715
uint64_t field_mask
Definition uct.h:2522
void * handle
Definition uct.h:1728
void * address
Definition uct.h:1709
uct_alloc_method_t method
Definition uct.h:1711
ucs_memory_type_t mem_type
Definition uct.h:2547
const char * name
Definition uct.h:2570
ucs_memory_type_t mem_type
Definition uct.h:1712
size_t length
Definition uct.h:1710
void * type
Definition uct.h:1729
size_t alloc_length
Definition uct.h:1656
struct uct_md_attr::@19 cap
uct_md_h md
Definition uct.h:1713
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:2491
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:782
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:869
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:1584
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:693
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:2499
@ UCT_MEM_ALLOC_PARAM_FIELD_MDS
Definition uct.h:2502
@ UCT_MEM_ALLOC_PARAM_FIELD_SYS_DEVICE
Definition uct.h:2508
@ UCT_MEM_ALLOC_PARAM_FIELD_NAME
Definition uct.h:2505
@ UCT_MEM_ALLOC_PARAM_FIELD_ADDRESS
Definition uct.h:2496
@ UCT_MEM_ALLOC_PARAM_FIELD_FLAGS
Definition uct.h:2493
@ UCT_MD_MEM_ACCESS_REMOTE_PUT
Definition uct.h:810
@ UCT_MD_MEM_FLAG_NONBLOCK
Definition uct.h:787
@ UCT_MD_MEM_FLAG_LOCK
Definition uct.h:798
@ UCT_MD_MEM_SYMMETRIC_RKEY
Definition uct.h:839
@ UCT_MD_MEM_ACCESS_LOCAL_WRITE
Definition uct.h:830
@ UCT_MD_MEM_ACCESS_REMOTE_ATOMIC
Definition uct.h:820
@ UCT_MD_MEM_ACCESS_REMOTE_GET
Definition uct.h:815
@ UCT_MD_MEM_ACCESS_RMA
Definition uct.h:858
@ UCT_MD_MEM_GVA
Definition uct.h:844
@ UCT_MD_MEM_ACCESS_ALL
Definition uct.h:849
@ UCT_MD_MEM_FLAG_FIXED
Definition uct.h:792
@ UCT_MD_MEM_FLAG_HIDE_ERRORS
Definition uct.h:804
@ UCT_MD_MEM_ACCESS_LOCAL_READ
Definition uct.h:825
@ UCT_MD_FLAG_SOCKADDR
Definition uct.h:750
@ UCT_MD_FLAG_INVALIDATE
Definition uct.h:758
@ UCT_MD_FLAG_ADVISE
Definition uct.h:732
@ UCT_MD_FLAG_REG_DMABUF
Definition uct.h:769
@ UCT_MD_FLAG_EXPORTED_MKEY
Definition uct.h:764
@ UCT_MD_FLAG_NEED_MEMH
Definition uct.h:721
@ UCT_MD_FLAG_RKEY_PTR
Definition uct.h:745
@ UCT_MD_FLAG_REG
Definition uct.h:716
@ UCT_MD_FLAG_LAST
Definition uct.h:775
@ UCT_MD_FLAG_ALLOC
Definition uct.h:711
@ UCT_MD_FLAG_FIXED
Definition uct.h:737
@ UCT_MD_FLAG_NEED_RKEY
Definition uct.h:727
@ UCT_MADV_NORMAL
Definition uct.h:870
@ UCT_MADV_WILLNEED
Definition uct.h:871
@ UCT_MD_MEM_ATTR_FIELD_DMABUF_FD
Definition uct.h:1605
@ UCT_MD_MEM_ATTR_FIELD_BASE_ADDRESS
Definition uct.h:1595
@ UCT_MD_MEM_ATTR_FIELD_SYS_DEV
Definition uct.h:1592
@ UCT_MD_MEM_ATTR_FIELD_DMABUF_OFFSET
Definition uct.h:1611
@ UCT_MD_MEM_ATTR_FIELD_ALLOC_LENGTH
Definition uct.h:1598
@ UCT_MD_MEM_ATTR_FIELD_MEM_TYPE
Definition uct.h:1586
@ UCT_SOCKADDR_ACC_LOCAL
Definition uct.h:694
@ UCT_SOCKADDR_ACC_REMOTE
Definition uct.h:697
Describes a memory allocated by UCT.
Definition uct.h:1708
Memory domain attributes.
Definition uct.h:1556
Memory domain attributes.
Definition uct.h:1623
Parameters for allocating memory using uct_mem_alloc.
Definition uct.h:2516
Remote key with its type.
Definition uct.h:1726
uint32_t err_handler_flags
Definition uct.h:1246
void * user_data
Definition uct.h:1322
size_t am_align_offset
Definition uct.h:1291
uint32_t sockaddr_cb_flags
Definition uct.h:1355
size_t device_addr_len
Definition uct.h:1156
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:1317
const uct_device_addr_t * dev_addr
Definition uct.h:1329
size_t private_data_length
Definition uct.h:1428
uct_completion_callback_t func
Definition uct.h:1752
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition uct.h:1769
uct_cm_ep_client_connect_callback_t sockaddr_cb_client
Definition uct.h:1388
struct sockaddr_storage listen_sockaddr
Definition uct.h:1162
uct_tag_unexp_eager_cb_t eager_cb
Definition uct.h:1251
const ucs_sock_addr_t * sockaddr
Definition uct.h:1345
char md_name[UCT_MD_NAME_MAX]
Definition uct.h:219
const void * private_data
Definition uct.h:1422
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:1159
size_t am_alignment
Definition uct.h:1273
uct_pending_callback_t func
Definition uct.h:1768
void * async_event_arg
Definition uct.h:1256
uct_ppn_bandwidth_t bandwidth
Definition uct.h:1170
struct uct_iface_attr::@7 cap
ucs_stats_node_t * stats_root
Definition uct.h:1236
ucs_cpu_set_t cpu_mask
Definition uct.h:1200
size_t ep_addr_len
Definition uct.h:1158
uct_md_resource_desc_t * md_resources
Definition uct.h:273
void * eager_arg
Definition uct.h:1249
uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb
Definition uct.h:1367
uint64_t open_mode
Definition uct.h:1202
uct_device_type_t dev_type
Definition uct.h:331
uct_cm_ep_resolve_callback_t cm_resolve_cb
Definition uct.h:1414
uint64_t features
Definition uct.h:1297
uint8_t priority
Definition uct.h:1173
char tl_name[UCT_TL_NAME_MAX]
Definition uct.h:329
uint64_t field_mask
Definition uct.h:1311
uint64_t field_mask
Definition uct.h:1198
uct_cm_ep_server_conn_notify_callback_t sockaddr_cb_server
Definition uct.h:1394
ucs_status_t status
Definition uct.h:1754
uct_cm_h cm
Definition uct.h:1373
union uct_iface_params::@16 mode
uct_async_event_cb_t async_event_cb
Definition uct.h:1261
double overhead
Definition uct.h:1169
void * err_handler_arg
Definition uct.h:1241
uct_ep_disconnect_cb_t disconnect_cb
Definition uct.h:1399
int count
Definition uct.h:1753
unsigned dev_num_paths
Definition uct.h:1175
const ucs_sock_addr_t * local_sockaddr
Definition uct.h:1436
size_t dev_addr_length
Definition uct.h:1442
ucs_linear_func_t latency
Definition uct.h:1171
uint64_t flags
Definition uct.h:278
uct_conn_request_h conn_request
Definition uct.h:1382
uint64_t field_mask
Definition uct.h:252
size_t iface_addr_len
Definition uct.h:1157
size_t iface_addr_length
Definition uct.h:1448
const uct_iface_addr_t * iface_addr
Definition uct.h:1336
size_t rx_headroom
Definition uct.h:1238
uct_tag_unexp_rndv_cb_t rndv_cb
Definition uct.h:1254
unsigned path_index
Definition uct.h:1405
size_t max_num_eps
Definition uct.h:1174
ucs_time_t keepalive_interval
Definition uct.h:1264
void * rndv_arg
Definition uct.h:1252
uct_error_handler_t err_handler
Definition uct.h:1243
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:1014
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:3241
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:574
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:3277
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:3296
void(* uct_pending_purge_callback_t)(uct_pending_req_t *self, void *arg)
Callback to purge pending requests.
Definition uct_def.h:586
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:3222
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:3638
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition uct_def.h:611
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:2855
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:3804
uct_progress_types
UCT progress types.
Definition uct.h:547
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:598
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition uct.h:3628
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:511
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition uct.h:628
uct_iface_open_mode
Mode in which to open the interface.
Definition uct.h:607
uct_ep_params_field
UCT endpoint created by uct_ep_create parameters field mask.
Definition uct.h:930
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:3603
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:2873
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:583
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:553
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:499
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:897
void(* uct_completion_callback_t)(uct_completion_t *self)
Callback to process send completion.
Definition uct_def.h:536
@ UCT_IFACE_FEATURE_AMO32
Definition uct.h:1025
@ UCT_IFACE_FEATURE_TAG
Definition uct.h:1031
@ UCT_IFACE_FEATURE_AM
Definition uct.h:1016
@ UCT_IFACE_FEATURE_PUT
Definition uct.h:1019
@ UCT_IFACE_FEATURE_LAST
Definition uct.h:1037
@ UCT_IFACE_FEATURE_FLUSH_REMOTE
Definition uct.h:1034
@ UCT_IFACE_FEATURE_GET
Definition uct.h:1022
@ UCT_IFACE_FEATURE_AMO64
Definition uct.h:1028
@ 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:549
@ UCT_PROGRESS_SEND
Definition uct.h:548
@ UCT_PROGRESS_THREAD_SAFE
Definition uct.h:550
@ UCT_TAG_RECV_CB_INLINE_DATA
Definition uct.h:1837
@ UCT_FLUSH_FLAG_REMOTE
Definition uct.h:531
@ UCT_FLUSH_FLAG_CANCEL
Definition uct.h:516
@ UCT_FLUSH_FLAG_LOCAL
Definition uct.h:512
@ UCT_IFACE_PARAM_FIELD_DEVICE
Definition uct.h:637
@ UCT_IFACE_PARAM_FIELD_AM_ALIGN_OFFSET
Definition uct.h:683
@ UCT_IFACE_PARAM_FIELD_HW_TM_RNDV_CB
Definition uct.h:668
@ UCT_IFACE_PARAM_FIELD_ERR_HANDLER_FLAGS
Definition uct.h:656
@ UCT_IFACE_PARAM_FIELD_KEEPALIVE_INTERVAL
Definition uct.h:677
@ UCT_IFACE_PARAM_FIELD_OPEN_MODE
Definition uct.h:633
@ UCT_IFACE_PARAM_FIELD_ERR_HANDLER
Definition uct.h:653
@ UCT_IFACE_PARAM_FIELD_HW_TM_RNDV_ARG
Definition uct.h:665
@ UCT_IFACE_PARAM_FIELD_STATS_ROOT
Definition uct.h:644
@ UCT_IFACE_PARAM_FIELD_CPU_MASK
Definition uct.h:630
@ UCT_IFACE_PARAM_FIELD_ASYNC_EVENT_CB
Definition uct.h:674
@ UCT_IFACE_PARAM_FIELD_ASYNC_EVENT_ARG
Definition uct.h:671
@ UCT_IFACE_PARAM_FIELD_AM_ALIGNMENT
Definition uct.h:680
@ UCT_IFACE_PARAM_FIELD_HW_TM_EAGER_CB
Definition uct.h:662
@ UCT_IFACE_PARAM_FIELD_RX_HEADROOM
Definition uct.h:647
@ UCT_IFACE_PARAM_FIELD_ERR_HANDLER_ARG
Definition uct.h:650
@ UCT_IFACE_PARAM_FIELD_HW_TM_EAGER_ARG
Definition uct.h:659
@ UCT_IFACE_PARAM_FIELD_FEATURES
Definition uct.h:686
@ UCT_IFACE_PARAM_FIELD_SOCKADDR
Definition uct.h:641
@ UCT_IFACE_OPEN_MODE_DEVICE
Definition uct.h:609
@ UCT_IFACE_OPEN_MODE_SOCKADDR_SERVER
Definition uct.h:613
@ UCT_IFACE_OPEN_MODE_SOCKADDR_CLIENT
Definition uct.h:617
@ UCT_EP_PARAM_FIELD_IFACE
Definition uct.h:932
@ UCT_EP_PARAM_FIELD_SOCKADDR_DISCONNECT_CB
Definition uct.h:965
@ UCT_EP_PARAM_FIELD_DEV_ADDR
Definition uct.h:938
@ UCT_EP_PARAM_FIELD_CONN_REQUEST
Definition uct.h:956
@ UCT_EP_PARAM_FIELD_PRIV_DATA
Definition uct.h:974
@ UCT_EP_PARAM_FIELD_SOCKADDR_PACK_CB
Definition uct.h:950
@ UCT_EP_PARAM_FIELD_SOCKADDR_CB_FLAGS
Definition uct.h:947
@ UCT_EP_PARAM_FIELD_IFACE_ADDR_LENGTH
Definition uct.h:986
@ UCT_EP_PARAM_FIELD_CM
Definition uct.h:953
@ UCT_EP_PARAM_FIELD_DEV_ADDR_LENGTH
Definition uct.h:983
@ UCT_EP_PARAM_FIELD_CM_RESOLVE_CB
Definition uct.h:971
@ UCT_EP_PARAM_FIELD_USER_DATA
Definition uct.h:935
@ UCT_EP_PARAM_FIELD_PRIV_DATA_LENGTH
Definition uct.h:977
@ UCT_EP_PARAM_FIELD_SOCKADDR_CONNECT_CB_CLIENT
Definition uct.h:959
@ UCT_EP_PARAM_FIELD_SOCKADDR_NOTIFY_CB_SERVER
Definition uct.h:962
@ UCT_EP_PARAM_FIELD_SOCKADDR
Definition uct.h:944
@ UCT_EP_PARAM_FIELD_IFACE_ADDR
Definition uct.h:941
@ UCT_EP_PARAM_FIELD_PATH_INDEX
Definition uct.h:968
@ UCT_EP_PARAM_FIELD_LOCAL_SOCKADDR
Definition uct.h:980
@ UCT_CB_FLAG_ASYNC
Definition uct.h:585
@ UCT_CB_FLAG_RESERVED
Definition uct.h:584
@ 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:501
@ UCT_EVENT_RECV_SIG
Definition uct.h:502
@ UCT_EVENT_SEND_COMP
Definition uct.h:500
Completion handle.
Definition uct.h:1751
UCT component attributes.
Definition uct.h:245
Parameters for creating a UCT endpoint by uct_ep_create.
Definition uct.h:1305
Interface attributes: capabilities and limitations.
Definition uct.h:1058
Parameters used for interface creation.
Definition uct.h:1194
Structure for scatter-gather I/O.
Definition uct_def.h:147
Memory domain resource descriptor.
Definition uct.h:218
Pending request.
Definition uct.h:1767
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:2898
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:3009
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:2970
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:2909
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:2959
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:2946
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:3354
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:3504
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:845
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:3324
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:882
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:3448
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:3400
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:3544
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:3577
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition uct.h:3479
double dedicated
Definition uct.h:1049
double shared
Definition uct.h:1050
Definition uct.h:1048
Posted tag context.
Definition uct.h:1780
char priv[UCT_TAG_PRIV_LEN]
Definition uct.h:1827
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:1823
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition uct.h:1787
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:1808