UCX  1.18
Unified Communication X
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 
32 BEGIN_C_DECLS
33 
218 typedef struct uct_md_resource_desc {
219  char md_name[UCT_MD_NAME_MAX];
221 
222 
235 };
236 
237 
245 typedef 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 
289 enum {
294  UCT_COMPONENT_FLAG_CM = UCS_BIT(0),
295 
301 };
302 
303 
308 typedef enum {
315 
316 
328 typedef 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 
348 typedef 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)
476 typedef 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)
504 };
506 
511 enum uct_flush_flags {
516  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0),
531  UCT_FLUSH_FLAG_REMOTE = UCS_BIT(1)
540 };
541 
542 
547 enum uct_progress_types {
548  UCT_PROGRESS_SEND = UCS_BIT(0),
549  UCT_PROGRESS_RECV = UCS_BIT(1),
550  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
553 };
554 
555 
560 enum uct_msg_flags {
561  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0),
567  UCT_SEND_FLAG_PEER_CHECK = UCS_BIT(1)
574 };
575 
576 
583 enum uct_cb_flags {
584  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
585  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
600 };
601 
602 
607 enum uct_iface_open_mode {
609  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
610 
614 
618 };
619 
620 
631 
633  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
637  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
641  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
642 
645 
648 
657 
660 
663 
666 
669 
672 
675 
678 
681 
684 
687 };
688 
693 typedef enum {
702 
707 enum {
711  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
712 
716  UCT_MD_FLAG_REG = UCS_BIT(1),
717 
721  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
722 
727  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
728 
732  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
733 
737  UCT_MD_FLAG_FIXED = UCS_BIT(5),
738 
745  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
746 
750  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7),
751 
759 
764  UCT_MD_FLAG_EXPORTED_MKEY = UCS_BIT(9),
765 
769  UCT_MD_FLAG_REG_DMABUF = UCS_BIT(10),
770 
775  UCT_MD_FLAG_LAST = UCS_BIT(11)
776 };
777 
782 enum uct_md_mem_flags {
787  UCT_MD_MEM_FLAG_NONBLOCK = UCS_BIT(0),
788 
792  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
793 
798  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
799 
804  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
805 
806  /* Memory access flags */
810  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
811 
815  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
816 
820  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
821 
826 
830  UCT_MD_MEM_ACCESS_LOCAL_WRITE = UCS_BIT(9),
839  UCT_MD_MEM_SYMMETRIC_RKEY = UCS_BIT(10),
840 
844  UCT_MD_MEM_GVA = UCS_BIT(11),
845 
854 
862 };
863 
864 
869 typedef enum {
876 
877 
885 enum uct_cm_attr_field {
888 };
889 
901 };
902 
903 
914 
917 
920 };
922 
930 enum uct_ep_params_field {
933 
935  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
936 
938  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
939 
941  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
942 
944  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
945 
948 
953  UCT_EP_PARAM_FIELD_CM = UCS_BIT(7),
954 
957 
960 
963 
966 
969 
972 
975 
978 
981 
984 
987 };
988 
1000 
1003 };
1005 
1014 enum uct_iface_feature {
1016  UCT_IFACE_FEATURE_AM = UCS_BIT(0),
1017 
1019  UCT_IFACE_FEATURE_PUT = UCS_BIT(1),
1022  UCT_IFACE_FEATURE_GET = UCS_BIT(2),
1025  UCT_IFACE_FEATURE_AMO32 = UCS_BIT(3),
1026 
1028  UCT_IFACE_FEATURE_AMO64 = UCS_BIT(4),
1029 
1031  UCT_IFACE_FEATURE_TAG = UCS_BIT(5),
1032 
1034  UCT_IFACE_FEATURE_FLUSH_REMOTE = UCS_BIT(6),
1038 };
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  */
1048 typedef struct uct_ppn_bandwidth {
1049  double dedicated;
1050  double shared;
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;
1154  } cap;
1156  size_t device_addr_len;
1158  size_t ep_addr_len;
1159  size_t max_conn_priv;
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;
1174  size_t max_num_eps;
1175  unsigned dev_num_paths;
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;
1227  uct_sockaddr_conn_request_callback_t conn_request_cb;
1230  uint32_t cb_flags;
1231  } sockaddr;
1232  } mode;
1233 
1236  ucs_stats_node_t *stats_root;
1238  size_t rx_headroom;
1239 
1241  void *err_handler_arg;
1246  uint32_t err_handler_flags;
1247 
1249  void *eager_arg;
1252  void *rndv_arg;
1255 
1256  void *async_event_arg;
1263  /* Time period between keepalive rounds */
1265 
1274 
1291  size_t am_align_offset;
1292 
1297  uint64_t features;
1298 };
1299 
1300 
1305 struct uct_ep_params {
1311  uint64_t field_mask;
1322  void *user_data;
1323 
1329  const uct_device_addr_t *dev_addr;
1330 
1337 
1345  const ucs_sock_addr_t *sockaddr;
1346 
1355  uint32_t sockaddr_cb_flags;
1356 
1368 
1373  uct_cm_h cm;
1374 
1383 
1389 
1395 
1400 
1405  unsigned path_index;
1406 
1422  const void *private_data;
1423 
1428  size_t private_data_length;
1429 
1437 
1442  size_t dev_addr_length;
1448  size_t iface_addr_length;
1449 };
1450 
1451 
1456 struct uct_ep_connect_params {
1462  uint64_t field_mask;
1467  const void *private_data;
1468 
1473  size_t private_data_length;
1474 };
1475 
1480 struct uct_cm_attr {
1486  uint64_t field_mask;
1487 
1492  size_t max_conn_priv;
1493 };
1495 
1500 struct uct_listener_attr {
1506  uint64_t field_mask;
1511  struct sockaddr_storage sockaddr;
1512 };
1514 
1520 struct uct_listener_params {
1526  uint64_t field_mask;
1533  int backlog;
1534 
1539 
1543  void *user_data;
1544 };
1545 
1546 
1556 struct uct_md_attr {
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;
1565  } cap;
1566 
1567  ucs_linear_func_t reg_cost;
1571  char component_name[UCT_COMPONENT_NAME_MAX];
1572  size_t rkey_packed_size;
1573  ucs_cpu_set_t local_cpus;
1574 };
1575 
1576 
1584 typedef enum uct_md_mem_attr_field {
1586  UCT_MD_MEM_ATTR_FIELD_MEM_TYPE = UCS_BIT(0),
1587 
1596 
1599 
1606 
1614 
1623 typedef struct uct_md_mem_attr {
1628  uint64_t field_mask;
1629 
1636 
1642  ucs_sys_device_t sys_dev;
1643 
1650 
1657 
1666  int dmabuf_fd;
1667 
1672  size_t dmabuf_offset;
1674 
1675 
1696 ucs_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 
1708 typedef struct uct_allocated_memory {
1709  void *address;
1710  size_t length;
1713  uct_md_h md;
1714  uct_mem_h memh;
1716 
1717 
1725 typedef struct uct_rkey_bundle {
1726  uct_rkey_t rkey;
1727  void *handle;
1728  void *type;
1750 struct uct_completion {
1752  int count;
1756 };
1757 
1758 
1766 struct uct_pending_req {
1768  char priv[UCT_PENDING_REQ_PRIV_LEN];
1769 };
1770 
1779 struct uct_tag_context {
1786  void (*tag_consumed_cb)(uct_tag_context_t *self);
1807  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1808  size_t length, void *inline_data, ucs_status_t status);
1809 
1822  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1823  unsigned header_length, ucs_status_t status, unsigned flags);
1824 
1826  char priv[UCT_TAG_PRIV_LEN];
1827 };
1829 
1834 enum {
1835  /* If set, header points to inline data, otherwise it is user buffer. */
1836  UCT_TAG_RECV_CB_INLINE_DATA = UCS_BIT(0)
1837 };
1838 
1839 
1840 extern const char *uct_alloc_method_names[];
1841 extern const char *uct_device_type_names[];
1842 
1858  unsigned *num_components_p);
1859 
1870 
1871 
1885  uct_component_attr_t *component_attr);
1886 
1887 
1907 ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1908  const uct_md_config_t *config, uct_md_h *md_p);
1909 
1916 void uct_md_close(uct_md_h md);
1917 
1918 
1934  uct_tl_resource_desc_t **resources_p,
1935  unsigned *num_resources_p);
1936 
1937 
1948 
1949 
1964 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1965  ucs_thread_mode_t thread_mode,
1966  uct_worker_h *worker_p);
1967 
1968 
1975 void uct_worker_destroy(uct_worker_h worker);
1976 
1977 
2001 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
2002  void *arg, unsigned flags,
2003  uct_worker_cb_id_t *id_p);
2004 
2005 
2027  uct_worker_cb_id_t *id_p);
2028 
2029 
2057 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
2058  const char *env_prefix, const char *filename,
2059  uct_iface_config_t **config_p);
2060 
2061 
2069 void uct_config_release(void *config);
2070 
2071 
2087 ucs_status_t uct_config_get(void *config, const char *name, char *value,
2088  size_t max);
2089 
2090 
2103 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
2104 
2105 
2122  const uct_iface_params_t *params,
2123  const uct_iface_config_t *config,
2124  uct_iface_h *iface_p);
2125 
2126 
2133 void uct_iface_close(uct_iface_h iface);
2134 
2135 
2144 
2145 
2158 
2159 
2171 
2172 
2191 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
2192  const uct_iface_addr_t *iface_addr);
2193 
2194 
2212 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
2213  uct_completion_t *comp);
2214 
2215 
2229 
2230 
2250 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
2251 
2252 
2268 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
2269  const char *name, uct_allocated_memory_t *mem);
2270 
2271 
2279 
2280 
2299  uct_am_callback_t cb, void *arg, uint32_t flags);
2300 
2301 
2316  void *arg);
2317 
2318 
2331  uct_conn_request_h conn_request);
2332 
2333 
2347  uct_conn_request_h conn_request);
2348 
2349 
2384 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
2385 
2386 
2402 
2403 
2436 ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags);
2437 
2438 
2445 void uct_ep_destroy(uct_ep_h ep);
2446 
2447 
2457 
2458 
2470  const uct_ep_addr_t *ep_addr);
2471 
2472 
2481 
2482 
2490 typedef enum {
2492  UCT_MEM_ALLOC_PARAM_FIELD_FLAGS = UCS_BIT(0),
2493 
2495  UCT_MEM_ALLOC_PARAM_FIELD_ADDRESS = UCS_BIT(1),
2496 
2499 
2501  UCT_MEM_ALLOC_PARAM_FIELD_MDS = UCS_BIT(3),
2502 
2504  UCT_MEM_ALLOC_PARAM_FIELD_NAME = UCS_BIT(4)
2506 
2507 
2512 typedef struct {
2518  uint64_t field_mask;
2526  unsigned flags;
2527 
2538  void *address;
2543  ucs_memory_type_t mem_type;
2544 
2545  struct {
2550  const uct_md_h *mds;
2551 
2557  unsigned count;
2558  } mds;
2566  const char *name;
2568 
2569 
2588  size_t length, uct_mem_advice_t advice);
2589 
2590 
2604 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2605  unsigned flags, uct_mem_h *memh_p);
2606 
2607 
2616 
2617 
2630 ucs_status_t uct_md_detect_memory_type(uct_md_h md, const void *addr,
2631  size_t length,
2632  ucs_memory_type_t *mem_type_p);
2633 
2634 
2659 ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods,
2660  unsigned num_methods,
2661  const uct_mem_alloc_params_t *params,
2662  uct_allocated_memory_t *mem);
2663 
2664 
2675 
2691  const char *env_prefix, const char *filename,
2692  uct_md_config_t **config_p);
2693 
2694 
2717 
2718 
2730 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
2731 
2732 
2752 ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2753  uct_rkey_bundle_t *rkey_ob);
2754 
2755 
2782  uint64_t remote_addr, void **addr_p);
2783 
2784 
2794  const uct_rkey_bundle_t *rkey_ob);
2795 
2796 
2811 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2812 {
2813  return ucs_callbackq_dispatch(&worker->progress_q);
2814 }
2815 
2816 
2845 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2846  uct_completion_t *comp)
2847 {
2848  return iface->ops.iface_flush(iface, flags, comp);
2849 }
2850 
2863 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2864 {
2865  return iface->ops.iface_fence(iface, flags);
2867 
2877 UCT_INLINE_API void uct_iface_release_desc(void *desc)
2878 {
2879  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2880  release_desc->cb(release_desc, desc);
2881 }
2882 
2883 
2888 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2889  uint64_t remote_addr, uct_rkey_t rkey)
2890 {
2891  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2892 }
2893 
2894 
2899 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2900  void *arg, uint64_t remote_addr,
2901  uct_rkey_t rkey)
2902 {
2903  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2904 }
2905 
2906 
2936 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
2937  const uct_iov_t *iov, size_t iovcnt,
2938  uint64_t remote_addr, uct_rkey_t rkey,
2939  uct_completion_t *comp)
2940 {
2941  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2942 }
2943 
2944 
2949 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2950  uint64_t remote_addr, uct_rkey_t rkey)
2951 {
2952  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2953 }
2954 
2955 
2960 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
2961  void *arg, size_t length,
2962  uint64_t remote_addr, uct_rkey_t rkey,
2963  uct_completion_t *comp)
2964 {
2965  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2966  rkey, comp);
2967 }
2968 
2969 
2999 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
3000  const uct_iov_t *iov, size_t iovcnt,
3001  uint64_t remote_addr, uct_rkey_t rkey,
3002  uct_completion_t *comp)
3003 {
3004  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
3005 }
3006 
3007 
3012 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
3013  const void *payload, unsigned length)
3014 {
3015  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
3016 }
3017 
3018 
3049 UCT_INLINE_API ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id,
3050  const uct_iov_t *iov, size_t iovcnt)
3051 {
3052  return ep->iface->ops.ep_am_short_iov(ep, id, iov, iovcnt);
3053 }
3054 
3055 
3060 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
3061  uct_pack_callback_t pack_cb, void *arg,
3062  unsigned flags)
3063 {
3064  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
3065 }
3066 
3067 
3105 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
3106  const void *header,
3107  unsigned header_length,
3108  const uct_iov_t *iov, size_t iovcnt,
3109  unsigned flags,
3110  uct_completion_t *comp)
3111 {
3112  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
3113  flags, comp);
3114 }
3115 
3120 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
3121  uint64_t remote_addr, uct_rkey_t rkey,
3122  uint64_t *result, uct_completion_t *comp)
3123 {
3124  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
3125 }
3127 
3132 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
3133  uint64_t remote_addr, uct_rkey_t rkey,
3134  uint32_t *result, uct_completion_t *comp)
3135 {
3136  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
3137 }
3138 
3139 
3144 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
3145  uint32_t value, uint64_t remote_addr,
3146  uct_rkey_t rkey)
3147 {
3148  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
3149 }
3150 
3151 
3156 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
3157  uint64_t value, uint64_t remote_addr,
3158  uct_rkey_t rkey)
3159 {
3160  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
3161 }
3162 
3163 
3168 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3169  uint32_t value, uint32_t *result,
3170  uint64_t remote_addr, uct_rkey_t rkey,
3171  uct_completion_t *comp)
3172 {
3173  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
3174  remote_addr, rkey, comp);
3175 }
3176 
3182 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3183  uint64_t value, uint64_t *result,
3184  uint64_t remote_addr, uct_rkey_t rkey,
3185  uct_completion_t *comp)
3186 {
3187  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
3188  remote_addr, rkey, comp);
3190 
3191 
3212 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
3213  uct_pending_req_t *req,
3214  unsigned flags)
3215 {
3216  return ep->iface->ops.ep_pending_add(ep, req, flags);
3217 }
3218 
3219 
3231 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
3233  void *arg)
3234 {
3235  ep->iface->ops.ep_pending_purge(ep, cb, arg);
3236 }
3237 
3238 
3267 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
3268  uct_completion_t *comp)
3269 {
3270  return ep->iface->ops.ep_flush(ep, flags, comp);
3271 }
3272 
3273 
3286 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
3287 {
3288  return ep->iface->ops.ep_fence(ep, flags);
3289 }
3290 
3291 
3314 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
3315  const void *data, size_t length)
3316 {
3317  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
3318 }
3319 
3320 
3344 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
3345  uint64_t imm,
3346  uct_pack_callback_t pack_cb,
3347  void *arg, unsigned flags)
3348 {
3349  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
3350 }
3351 
3352 
3390 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
3391  uint64_t imm,
3392  const uct_iov_t *iov,
3393  size_t iovcnt,
3394  unsigned flags,
3395  uct_completion_t *comp)
3396 {
3397  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
3398  comp);
3399 }
3400 
3401 
3439  const void *header,
3440  unsigned header_length,
3441  const uct_iov_t *iov,
3442  size_t iovcnt,
3443  unsigned flags,
3444  uct_completion_t *comp)
3445 {
3446  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
3447  iov, iovcnt, flags, comp);
3448 }
3449 
3450 
3469 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
3470 {
3471  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
3472 }
3473 
3474 
3495  const void* header,
3496  unsigned header_length,
3497  unsigned flags)
3498 {
3499  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
3500  flags);
3501 }
3502 
3503 
3535  uct_tag_t tag,
3536  uct_tag_t tag_mask,
3537  const uct_iov_t *iov,
3538  size_t iovcnt,
3539  uct_tag_context_t *ctx)
3540 {
3541  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3542 }
3543 
3544 
3568  uct_tag_context_t *ctx,
3569  int force)
3570 {
3571  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3572 }
3573 
3574 
3593 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3594 {
3595  iface->ops.iface_progress_enable(iface, flags);
3596 }
3597 
3598 
3618 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3619 {
3620  iface->ops.iface_progress_disable(iface, flags);
3621 }
3622 
3623 
3628 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3629 {
3630  return iface->ops.iface_progress(iface);
3631 }
3632 
3633 
3657  const uct_cm_config_t *config, uct_cm_h *cm_p);
3658 
3659 
3666 void uct_cm_close(uct_cm_h cm);
3667 
3668 
3680 
3681 
3699  const char *env_prefix, const char *filename,
3700  uct_cm_config_t **config_p);
3701 
3702 
3716 
3717 
3736 ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3737  socklen_t socklen,
3738  const uct_listener_params_t *params,
3739  uct_listener_h *listener_p);
3740 
3741 
3748 void uct_listener_destroy(uct_listener_h listener);
3749 
3750 
3767  uct_conn_request_h conn_request);
3768 
3769 
3783  uct_listener_attr_t *listener_attr);
3784 
3785 
3793 static UCS_F_ALWAYS_INLINE
3795 {
3796  if (ucs_unlikely(status != UCS_OK) && (comp->status == UCS_OK)) {
3797  /* store first failure status */
3798  comp->status = status;
3799  }
3800 }
3801 
3802 
3808 END_C_DECLS
3809 
3810 #endif
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_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.
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_cm_attr_field
UCT connection manager attributes field mask.
Definition: uct.h:906
uct_tag_unexp_rndv_cb_t rndv_cb
Definition: uct.h:1275
Definition: uct.h:870
size_t max_conn_priv
Definition: uct.h:1513
size_t private_data_length
Definition: uct.h:1449
void * async_event_arg
Definition: uct.h:1277
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:3411
Definition: uct.h:851
uct_progress_types
UCT progress types.
Definition: uct.h:568
Definition: uct.h:521
Definition: uct.h:891
uct_error_handler_t err_handler
Definition: uct.h:1264
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.
Definition: uct.h:841
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:3815
uct_async_event_cb_t async_event_cb
Definition: uct.h:1282
Definition: uct.h:962
struct uct_tl_resource_desc uct_tl_resource_desc_t
Communication resource descriptor.
void(* uct_async_event_cb_t)(void *arg, unsigned flags)
Callback to process asynchronous events.
Definition: uct_def.h:897
void uct_config_release(void *config)
Release configuration memory returned from uct_md_iface_config_read(), uct_md_config_read(), or from uct_cm_config_read().
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.
uct_device_type_t
List of UCX device types.
Definition: uct.h:308
Definition: uct.h:766
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.
ucs_status_t uct_iface_event_fd_get(uct_iface_h iface, int *fd_p)
Obtain a notification file descriptor for polling.
Definition: uct.h:813
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:3459
Definition: uct.h:860
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:3165
ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events)
Turn on event notification for the next event.
ucs_cpu_set_t local_cpus
Definition: uct.h:1594
void * uct_mem_h
Definition: uct_def.h:84
int count
Definition: uct.h:1773
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
Structure for scatter-gather I/O.
Definition: uct_def.h:147
uct_component_attr_field
UCT component attributes field mask.
Definition: uct.h:230
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
Definition: uct.h:995
void * type
Definition: uct.h:1749
size_t private_data_length
Definition: uct.h:1494
Definition: uct.h:707
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:581
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:3252
Definition: uct.h:758
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:1843
ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer, uct_rkey_bundle_t *rkey_ob)
Unpack a remote key.
Definition: uct.h:501
Definition: uct.h:658
union uct_iface_params::@16 mode
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:3365
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:3288
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_cm_ep_client_connect_callback_t sockaddr_cb_client
Definition: uct.h:1409
ucs_status_t uct_listener_query(uct_listener_h listener, uct_listener_attr_t *listener_attr)
Get attributes specific to a particular listener.
Definition: uct.h:2516
Definition: uct.h:311
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:3588
struct uct_md_attr::@19 cap
Definition: uct.h:989
Definition: uct.h:294
int backlog
Definition: uct.h:1554
Definition: uct.h:654
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.
uct_mem_advice_t
list of UCT memory use advice
Definition: uct.h:890
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
Parameters used for interface creation.
Definition: uct.h:1215
struct uct_md_config uct_md_config_t
Definition: uct_def.h:81
size_t dmabuf_offset
Definition: uct.h:1693
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:2957
uint64_t field_mask
Definition: uct.h:1332
Memory domain resource descriptor.
Definition: uct.h:218
Definition: uct.h:865
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.
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.
void(* uct_pending_purge_callback_t)(uct_pending_req_t *self, void *arg)
Callback to purge pending requests.
Definition: uct_def.h:586
uct_mem_alloc_params_field_t
UCT allocation parameters specification field mask.
Definition: uct.h:2511
size_t iface_addr_len
Definition: uct.h:1178
ucs_status_t uct_iface_get_address(uct_iface_h iface, uct_iface_addr_t *addr)
Get interface address.
size_t iface_addr_length
Definition: uct.h:1469
uct_cm_t * uct_cm_h
Definition: uct_def.h:105
uct_listener_params_field
UCT listener created by uct_listener_create parameters field mask.
Definition: uct.h:932
uint64_t field_mask
Definition: uct.h:1649
void * address
Definition: uct.h:1730
const uct_device_addr_t * dev_addr
Definition: uct.h:1350
UCT component attributes.
Definition: uct.h:245
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
Definition: uct.h:1857
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
double dedicated
Definition: uct.h:1070
Definition: uct.h:310
uct_cb_flags
Callback flags.
Definition: uct.h:604
Definition: uct.h:2513
const void * private_data
Definition: uct.h:1443
uint64_t field_mask
Definition: uct.h:1527
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
uct_listener_attr_field
UCT listener attributes field mask.
Definition: uct.h:919
Definition: uct.h:748
Definition: uct.h:715
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_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:2898
uct_alloc_method_t method
Definition: uct.h:1732
ucs_linear_func_t reg_cost
Definition: uct.h:1588
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
UCT listener attributes, capabilities and limitations.
Definition: uct.h:1521
size_t dev_addr_length
Definition: uct.h:1463
struct uct_worker * uct_worker_h
Definition: uct_def.h:95
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:3141
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:3177
Interface attributes: capabilities and limitations.
Definition: uct.h:1079
Definition: uct.h:825
int uct_worker_cb_id_t
Definition: uct_def.h:111
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:2909
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:3070
uint64_t field_mask
Definition: uct.h:1483
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
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:2970
void * base_address
Definition: uct.h:1670
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_ep_get_address(uct_ep_h ep, uct_ep_addr_t *addr)
Get endpoint address.
double overhead
Definition: uct.h:1190
Definition: uct.h:571
ucs_linear_func_t latency
Definition: uct.h:1192
ucs_cpu_set_t cpu_mask
Definition: uct.h:1221
Definition: uct.h:974
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:2866
Definition: uct.h:533
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:3020
Definition: uct.h:1607
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:3639
Definition: uct.h:753
char name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:255
struct uct_iface_addr uct_iface_addr_t
Definition: uct_def.h:99
uint64_t field_mask
Definition: uct.h:252
ucs_thread_mode_t
Thread sharing mode.
Definition: thread_mode.h:19
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_completion_callback_t)(uct_completion_t *self)
Callback to process send completion.
Definition: uct_def.h:536
Definition: uct.h:523
void uct_md_close(uct_md_h md)
Close a memory domain.
ucs_status_t uct_query_components(uct_component_h **components_p, unsigned *num_components_p)
Query for list of components.
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.
struct uct_cm_config uct_cm_config_t
Definition: uct_def.h:82
struct uct_ep_addr uct_ep_addr_t
Definition: uct_def.h:100
Definition: uct.h:956
Definition: uct.h:312
Definition: uct.h:309
struct uct_md * uct_md_h
Memory domain handler.
Definition: uct_def.h:86
uct_ep_params_field
UCT endpoint created by uct_ep_create parameters field mask.
Definition: uct.h:951
Definition: uct.h:790
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:3335
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:3033
uct_cm_ep_server_conn_notify_callback_t sockaddr_cb_server
Definition: uct.h:1415
Remote key with its type.
Definition: uct.h:1746
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_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition: uct.h:3490
ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p)
Create new endpoint.
uct_device_type_t dev_type
Definition: uct.h:331
Memory domain attributes.
Definition: uct.h:1644
uint8_t priority
Definition: uct.h:1194
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:598
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:300
Definition: uct.h:662
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:219
Definition: uct.h:779
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:3126
char tl_name[UCT_TL_NAME_MAX]
Definition: uct.h:329
Definition: uct.h:819
uct_iface_h iface
Definition: uct.h:1338
ucs_status_t
Status codes.
Definition: status.h:45
char component_name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:1592
Definition: uct.h:605
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&#39;s progress.
Definition: uct.h:846
Definition: uct.h:537
Definition: uct.h:313
enum uct_md_mem_attr_field uct_md_mem_attr_field_t
UCT MD memory attributes field mask.
void * user_data
Definition: uct.h:1343
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.
size_t length
Definition: uct.h:1731
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.
Definition: uct.h:630
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:803
double shared
Definition: uct.h:1071
void * err_handler_arg
Definition: uct.h:1262
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition: uct.h:1541
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition: uct.h:1789
Definition: uct.h:718
Definition: uct.h:500
Definition: uct.h:965
Definition: uct.h:2525
Definition: uct.h:1040
uint64_t flags
Definition: uct.h:278
Definition: uct.h:569
ucs_status_t uct_cm_client_ep_conn_notify(uct_ep_h ep)
Notify the server about client-side connection establishment.
uct_cm_h cm
Definition: uct.h:1394
Connection manager attributes, capabilities and limitations.
Definition: uct.h:1501
struct uct_listener * uct_listener_h
Definition: uct_def.h:107
ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer)
Pack a remote key.
Definition: uct.h:651
ucs_memory_type_t mem_type
Definition: uct.h:1656
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
Definition: uct.h:742
size_t am_align_offset
Definition: uct.h:1312
void * user_data
Definition: uct.h:1564
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition: uct_def.h:611
Definition: uct.h:505
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:3614
struct sockaddr_storage listen_sockaddr
Definition: uct.h:1183
uct_ppn_bandwidth_t bandwidth
Definition: uct.h:1191
Definition: uct.h:234
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:3203
uct_iface_feature
UCT interface configuration features.
Definition: uct.h:1035
ucs_memory_type_t mem_type
Definition: uct.h:1733
Definition: uct.h:732
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:3081
uct_flush_flags
Flush modifiers.
Definition: uct.h:532
struct uct_component * uct_component_h
Definition: uct_def.h:78
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...
uct_md_mem_attr_field
UCT MD memory attributes field mask.
Definition: uct.h:1605
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:497
Definition: uct.h:1055
Definition: status.h:47
uint64_t uct_tag_t
Definition: uct_def.h:110
Definition: uct.h:771
Definition: uct.h:498
const ucs_sock_addr_t * local_sockaddr
Definition: uct.h:1457
struct uct_iface_config uct_iface_config_t
Definition: uct_def.h:80
ucs_status_t uct_rkey_release(uct_component_h component, const uct_rkey_bundle_t *rkey_ob)
Release a remote key.
const ucs_sock_addr_t * sockaddr
Definition: uct.h:1366
unsigned dev_num_paths
Definition: uct.h:1196
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...
Parameters for connecting a UCT endpoint by uct_ep_connect.
Definition: uct.h:1477
uct_pending_callback_t func
Definition: uct.h:1788
uint64_t open_mode
Definition: uct.h:1223
Parameters for allocating memory using uct_mem_alloc.
Definition: uct.h:2533
ucs_sys_device_t sys_dev
Definition: uct.h:1663
uint64_t field_mask
Definition: uct.h:1507
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:785
Definition: uct.h:606
enum ucs_memory_type ucs_memory_type_t
Memory types.
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:2884
ucs_status_t status
Definition: uct.h:1774
uct_ep_connect_params_field
UCT endpoint connected by uct_ep_connect parameters field mask.
Definition: uct.h:1018
struct uct_md_resource_desc uct_md_resource_desc_t
Memory domain resource descriptor.
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&#39;s private data in a client-server flow.
Definition: uct_def.h:771
uint32_t sockaddr_cb_flags
Definition: uct.h:1376
uct_cm_ep_resolve_callback_t cm_resolve_cb
Definition: uct.h:1435
Definition: uct.h:1043
unsigned md_resource_count
Definition: uct.h:258
Definition: uct.h:1613
unsigned long ucs_time_t
Definition: time_def.h:23
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:3515
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:628
Definition: uct.h:953
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.
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:3233
size_t device_addr_len
Definition: uct.h:1177
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.
Definition: uct.h:570
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:1326
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
uct_ep_disconnect_cb_t disconnect_cb
Definition: uct.h:1420
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:714
Definition: uct.h:977
Definition: uct.h:1626
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.
ucs_status_t uct_component_query(uct_component_h component, uct_component_attr_t *component_attr)
Get component attributes.
Definition: uct.h:1046
size_t am_alignment
Definition: uct.h:1294
uint64_t features
Definition: uct.h:1318
ucs_stats_node_t * stats_root
Definition: uct.h:1257
Definition: uct.h:1049
struct uct_iface_attr::@7 cap
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.
Memory domain attributes.
Definition: uct.h:1577
Definition: uct.h:582
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:649
uct_completion_callback_t func
Definition: uct.h:1772
ucs_status_t uct_listener_reject(uct_listener_h listener, uct_conn_request_h conn_request)
Reject a connection request.
struct uct_component_attr uct_component_attr_t
UCT component attributes.
int dmabuf_fd
Definition: uct.h:1687
ucs_status_t uct_cm_query(uct_cm_h cm, uct_cm_attr_t *cm_attr)
Get connection manager attributes.
void * uct_conn_request_h
Definition: uct_def.h:112
Definition: uct.h:1037
size_t ep_addr_len
Definition: uct.h:1179
void uct_release_tl_resource_list(uct_tl_resource_desc_t *resources)
Release the list of resources returned from uct_md_query_tl_resources.
Definition: uct.h:831
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
Definition: uct.h:2522
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.
Definition: uct.h:503
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:3307
uct_mem_h memh
Definition: uct.h:1735
size_t rx_headroom
Definition: uct.h:1259
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition: uct.h:1807
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:892
void uct_worker_destroy(uct_worker_h worker)
Destroy a worker object.
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
ucs_status_t(* uct_pending_callback_t)(uct_pending_req_t *self)
Callback to process pending requests.
Definition: uct_def.h:553
uct_cm_listener_conn_request_callback_t conn_request_cb
Definition: uct.h:1559
Definition: uct.h:502
Definition: uct.h:1001
size_t rkey_packed_size
Definition: uct.h:1593
Communication resource descriptor.
Definition: uct.h:328
Pending request.
Definition: uct.h:1787
uct_md_resource_desc_t * md_resources
Definition: uct.h:273
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.
Definition: uct.h:1069
unsigned uct_worker_progress(uct_worker_h worker)
Explicit progress for UCT worker.
Definition: uct.h:2832
uct_conn_request_h conn_request
Definition: uct.h:1403
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
const uct_iface_addr_t * iface_addr
Definition: uct.h:1357
uct_md_h md
Definition: uct.h:1734
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.
struct uct_iface * uct_iface_h
Definition: uct_def.h:79
Definition: uct.h:908
Definition: uct.h:231
struct sockaddr_storage sockaddr
Definition: uct.h:1532
Definition: uct.h:1058
Definition: types.h:151
size_t max_num_eps
Definition: uct.h:1195
void * eager_arg
Definition: uct.h:1270
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.
uint64_t field_mask
Definition: uct.h:1219
struct uct_ep * uct_ep_h
Definition: uct_def.h:83
Definition: uct.h:552
uct_tag_unexp_eager_cb_t eager_cb
Definition: uct.h:1272
Definition: uct.h:879
ucs_status_t uct_md_mem_dereg(uct_md_h md, uct_mem_h memh)
Undo the operation of uct_md_mem_reg().
void uct_release_component_list(uct_component_h *components)
Release the list of components returned from uct_query_components.
Posted tag context.
Definition: uct.h:1800
ucs_status_t uct_iface_query(uct_iface_h iface, uct_iface_attr_t *iface_attr)
Get interface attributes.
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
uint64_t field_mask
Definition: uct.h:1547
Completion handle.
Definition: uct.h:1771
uct_rkey_t rkey
Definition: uct.h:1747
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:2920
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:2981
size_t alloc_length
Definition: uct.h:1677
uint32_t err_handler_flags
Definition: uct.h:1267
uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb
Definition: uct.h:1388
unsigned path_index
Definition: uct.h:1426
Definition: uct.h:836
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:98
Definition: uct.h:588
void uct_iface_close(uct_iface_h iface)
Close and destroy an interface.
unsigned uct_iface_progress(uct_iface_h iface)
Perform a progress on an interface.
Definition: uct.h:3649
ucs_sys_device_t sys_device
Definition: uct.h:333
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
uintptr_t uct_rkey_t
Definition: uct_def.h:85
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:3555
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.
struct uct_md_mem_attr uct_md_mem_attr_t
Memory domain attributes.
const void * private_data
Definition: uct.h:1488
char priv[UCT_TAG_PRIV_LEN]
Definition: uct.h:1847
Definition: uct.h:522
size_t max_conn_priv
Definition: uct.h:1180
void * handle
Definition: uct.h:1748
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.
Definition: uct.h:504
Definition: uct.h:808
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:1828
void * rndv_arg
Definition: uct.h:1273
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_time_t keepalive_interval
Definition: uct.h:1285
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:3189
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.
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:3153
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:520
char dev_name[UCT_DEVICE_NAME_MAX]
Definition: uct.h:330
Definition: uct.h:1052
Definition: uct.h:737
Describes a memory allocated by UCT.
Definition: uct.h:1729
Definition: uct.h:796
Definition: uct.h:959