UCX  1.20
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)
440 #define UCT_IFACE_FLAG_DEVICE_EP UCS_BIT(55)
456  /* Event types */
457 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(0)
459 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(1)
461 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(2)
463  /* Event notification mechanisms */
464 #define UCT_IFACE_FLAG_EVENT_FD UCS_BIT(3)
466 #define UCT_IFACE_FLAG_EVENT_ASYNC_CB UCS_BIT(4)
477 typedef enum {
487 
488 
501  UCT_EVENT_SEND_COMP = UCS_BIT(0),
502  UCT_EVENT_RECV = UCS_BIT(1),
503  UCT_EVENT_RECV_SIG = UCS_BIT(2)
505 };
507 
512 enum uct_flush_flags {
517  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0),
532  UCT_FLUSH_FLAG_REMOTE = UCS_BIT(1)
541 };
542 
543 
548 enum uct_progress_types {
549  UCT_PROGRESS_SEND = UCS_BIT(0),
550  UCT_PROGRESS_RECV = UCS_BIT(1),
551  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
554 };
555 
556 
561 enum uct_msg_flags {
562  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0),
568  UCT_SEND_FLAG_PEER_CHECK = UCS_BIT(1)
575 };
576 
577 
584 enum uct_cb_flags {
585  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
586  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
601 };
602 
603 
608 enum uct_iface_open_mode {
610  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
611 
615 
619 };
620 
621 
632 
634  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
638  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
642  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
643 
646 
649 
658 
661 
664 
667 
670 
673 
676 
679 
682 
685 
688 };
689 
694 typedef enum {
703 
708 enum {
712  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
713 
717  UCT_MD_FLAG_REG = UCS_BIT(1),
718 
722  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
723 
728  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
729 
733  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
734 
738  UCT_MD_FLAG_FIXED = UCS_BIT(5),
739 
746  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
747 
751  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7),
752 
760 
765  UCT_MD_FLAG_EXPORTED_MKEY = UCS_BIT(9),
766 
770  UCT_MD_FLAG_REG_DMABUF = UCS_BIT(10),
771 
776  UCT_MD_FLAG_LAST = UCS_BIT(11)
777 };
778 
783 enum uct_md_mem_flags {
788  UCT_MD_MEM_FLAG_NONBLOCK = UCS_BIT(0),
789 
793  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
794 
799  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
800 
805  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
806 
807  /* Memory access flags */
811  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
812 
816  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
817 
821  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
822 
827 
831  UCT_MD_MEM_ACCESS_LOCAL_WRITE = UCS_BIT(9),
840  UCT_MD_MEM_SYMMETRIC_RKEY = UCS_BIT(10),
841 
845  UCT_MD_MEM_GVA = UCS_BIT(11),
846 
855 
863 };
864 
865 
870 typedef enum {
877 
878 
886 enum uct_cm_attr_field {
889 };
890 
902 };
903 
904 
915 
918 
921 };
923 
931 enum uct_ep_params_field {
934 
936  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
937 
939  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
940 
942  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
943 
945  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
946 
949 
954  UCT_EP_PARAM_FIELD_CM = UCS_BIT(7),
955 
958 
961 
964 
967 
970 
973 
976 
979 
982 
985 
988 };
989 
1001 
1004 };
1006 
1015 enum uct_iface_feature {
1017  UCT_IFACE_FEATURE_AM = UCS_BIT(0),
1018 
1020  UCT_IFACE_FEATURE_PUT = UCS_BIT(1),
1023  UCT_IFACE_FEATURE_GET = UCS_BIT(2),
1026  UCT_IFACE_FEATURE_AMO32 = UCS_BIT(3),
1027 
1029  UCT_IFACE_FEATURE_AMO64 = UCS_BIT(4),
1030 
1032  UCT_IFACE_FEATURE_TAG = UCS_BIT(5),
1033 
1035  UCT_IFACE_FEATURE_FLUSH_REMOTE = UCS_BIT(6),
1039 };
1040 
1041 /*
1042  * @ingroup UCT_RESOURCE
1043  * @brief Process Per Node (PPN) bandwidth specification: f(ppn) = dedicated + shared / ppn
1044  *
1045  * This structure specifies a function which is used as basis for bandwidth
1046  * estimation of various UCT operations. This information can be used to select
1047  * the best performing combination of UCT operations.
1048  */
1049 typedef struct uct_ppn_bandwidth {
1050  double dedicated;
1051  double shared;
1054 
1060  struct {
1061  struct {
1062  size_t max_short;
1063  size_t max_bcopy;
1064  size_t min_zcopy;
1067  size_t max_zcopy;
1070  size_t opt_zcopy_align;
1072  size_t align_mtu;
1073  size_t max_iov;
1076  } put;
1078  struct {
1079  size_t max_short;
1080  size_t max_bcopy;
1081  size_t min_zcopy;
1084  size_t max_zcopy;
1087  size_t opt_zcopy_align;
1089  size_t align_mtu;
1090  size_t max_iov;
1093  } get;
1095  struct {
1096  size_t max_short;
1098  size_t max_bcopy;
1099  size_t min_zcopy;
1102  size_t max_zcopy;
1105  size_t opt_zcopy_align;
1107  size_t align_mtu;
1108  size_t max_hdr;
1109  size_t max_iov;
1112  } am;
1114  struct {
1115  struct {
1116  size_t min_recv;
1117  size_t max_zcopy;
1119  size_t max_iov;
1122  size_t max_outstanding;
1124  } recv;
1125 
1126  struct {
1127  size_t max_short;
1129  size_t max_bcopy;
1131  size_t max_zcopy;
1133  size_t max_iov;
1135  } eager;
1137  struct {
1138  size_t max_zcopy;
1140  size_t max_hdr;
1143  size_t max_iov;
1145  } rndv;
1146  } tag;
1148  struct {
1149  uint64_t op_flags;
1150  uint64_t fop_flags;
1151  } atomic32, atomic64;
1153  uint64_t flags;
1154  uint64_t event_flags;
1155  } cap;
1157  size_t device_addr_len;
1158  size_t iface_addr_len;
1159  size_t ep_addr_len;
1160  size_t max_conn_priv;
1163  struct sockaddr_storage listen_sockaddr;
1165  /*
1166  * The following fields define expected performance of the communication
1167  * interface, this would usually be a combination of device and system
1168  * characteristics and determined at run time.
1169  */
1170  double overhead;
1171  uct_ppn_bandwidth_t bandwidth;
1172  ucs_linear_func_t latency;
1174  uint8_t priority;
1175  size_t max_num_eps;
1176  unsigned dev_num_paths;
1185 };
1186 
1187 
1199  uint64_t field_mask;
1201  ucs_cpu_set_t cpu_mask;
1203  uint64_t open_mode;
1205  union {
1212  struct {
1213  const char *tl_name;
1214  const char *dev_name;
1215  } device;
1223  struct {
1224  ucs_sock_addr_t listen_sockaddr;
1226  void *conn_request_arg;
1228  uct_sockaddr_conn_request_callback_t conn_request_cb;
1231  uint32_t cb_flags;
1232  } sockaddr;
1233  } mode;
1234 
1237  ucs_stats_node_t *stats_root;
1239  size_t rx_headroom;
1240 
1242  void *err_handler_arg;
1244  uct_error_handler_t err_handler;
1247  uint32_t err_handler_flags;
1248 
1250  void *eager_arg;
1252  uct_tag_unexp_eager_cb_t eager_cb;
1253  void *rndv_arg;
1255  uct_tag_unexp_rndv_cb_t rndv_cb;
1256 
1257  void *async_event_arg;
1262  uct_async_event_cb_t async_event_cb;
1264  /* Time period between keepalive rounds */
1265  ucs_time_t keepalive_interval;
1266 
1274  size_t am_alignment;
1275 
1292  size_t am_align_offset;
1293 
1298  uint64_t features;
1299 };
1300 
1301 
1306 struct uct_ep_params {
1312  uint64_t field_mask;
1318  uct_iface_h iface;
1323  void *user_data;
1324 
1330  const uct_device_addr_t *dev_addr;
1331 
1337  const uct_iface_addr_t *iface_addr;
1338 
1346  const ucs_sock_addr_t *sockaddr;
1347 
1356  uint32_t sockaddr_cb_flags;
1357 
1368  uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb;
1369 
1374  uct_cm_h cm;
1375 
1383  uct_conn_request_h conn_request;
1384 
1390 
1396 
1400  uct_ep_disconnect_cb_t disconnect_cb;
1401 
1406  unsigned path_index;
1407 
1415  uct_cm_ep_resolve_callback_t cm_resolve_cb;
1423  const void *private_data;
1424 
1429  size_t private_data_length;
1430 
1437  const ucs_sock_addr_t *local_sockaddr;
1438 
1443  size_t dev_addr_length;
1449  size_t iface_addr_length;
1450 };
1451 
1452 
1457 struct uct_ep_connect_params {
1463  uint64_t field_mask;
1468  const void *private_data;
1469 
1474  size_t private_data_length;
1475 };
1476 
1481 struct uct_cm_attr {
1487  uint64_t field_mask;
1488 
1493  size_t max_conn_priv;
1494 };
1496 
1501 struct uct_listener_attr {
1507  uint64_t field_mask;
1512  struct sockaddr_storage sockaddr;
1513 };
1515 
1521 struct uct_listener_params {
1527  uint64_t field_mask;
1534  int backlog;
1535 
1540 
1544  void *user_data;
1545 };
1546 
1547 
1557 struct uct_md_attr {
1558  struct {
1559  uint64_t max_alloc;
1560  size_t max_reg;
1561  uint64_t flags;
1562  uint64_t reg_mem_types;
1563  uint64_t detect_mem_types;
1564  uint64_t alloc_mem_types;
1565  uint64_t access_mem_types;
1566  } cap;
1567 
1568  ucs_linear_func_t reg_cost;
1572  char component_name[UCT_COMPONENT_NAME_MAX];
1573  size_t rkey_packed_size;
1574  ucs_cpu_set_t local_cpus;
1575 };
1576 
1577 
1585 typedef enum uct_md_mem_attr_field {
1587  UCT_MD_MEM_ATTR_FIELD_MEM_TYPE = UCS_BIT(0),
1588 
1597 
1600 
1607 
1615 
1624 typedef struct uct_md_mem_attr {
1629  uint64_t field_mask;
1630 
1636  ucs_memory_type_t mem_type;
1637 
1643  ucs_sys_device_t sys_dev;
1644 
1650  void *base_address;
1651 
1657  size_t alloc_length;
1658 
1667  int dmabuf_fd;
1668 
1673  size_t dmabuf_offset;
1675 
1676 
1697 ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, size_t length,
1698  uct_md_mem_attr_t *mem_attr);
1699 
1700 
1709 typedef struct uct_allocated_memory {
1710  void *address;
1711  size_t length;
1712  uct_alloc_method_t method;
1713  ucs_memory_type_t mem_type;
1714  uct_md_h md;
1715  uct_mem_h memh;
1716  ucs_sys_device_t sys_device;
1718 
1719 
1727 typedef struct uct_rkey_bundle {
1728  uct_rkey_t rkey;
1729  void *handle;
1730  void *type;
1752 struct uct_completion {
1754  int count;
1755  ucs_status_t status;
1758 };
1759 
1760 
1768 struct uct_pending_req {
1769  uct_pending_callback_t func;
1770  char priv[UCT_PENDING_REQ_PRIV_LEN];
1771 };
1772 
1781 struct uct_tag_context {
1788  void (*tag_consumed_cb)(uct_tag_context_t *self);
1809  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1810  size_t length, void *inline_data, ucs_status_t status);
1811 
1824  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1825  unsigned header_length, ucs_status_t status, unsigned flags);
1826 
1828  char priv[UCT_TAG_PRIV_LEN];
1829 };
1831 
1836 enum {
1837  /* If set, header points to inline data, otherwise it is user buffer. */
1838  UCT_TAG_RECV_CB_INLINE_DATA = UCS_BIT(0)
1839 };
1840 
1841 
1842 extern const char *uct_alloc_method_names[];
1843 extern const char *uct_device_type_names[];
1844 
1860  unsigned *num_components_p);
1861 
1872 
1873 
1887  uct_component_attr_t *component_attr);
1888 
1889 
1909 ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1910  const uct_md_config_t *config, uct_md_h *md_p);
1911 
1918 void uct_md_close(uct_md_h md);
1919 
1920 
1936  uct_tl_resource_desc_t **resources_p,
1937  unsigned *num_resources_p);
1938 
1939 
1950 
1951 
1966 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1967  ucs_thread_mode_t thread_mode,
1968  uct_worker_h *worker_p);
1969 
1970 
1977 void uct_worker_destroy(uct_worker_h worker);
1978 
1979 
2003 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
2004  void *arg, unsigned flags,
2005  uct_worker_cb_id_t *id_p);
2006 
2007 
2029  uct_worker_cb_id_t *id_p);
2030 
2031 
2059 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
2060  const char *env_prefix, const char *filename,
2061  uct_iface_config_t **config_p);
2062 
2063 
2071 void uct_config_release(void *config);
2072 
2073 
2089 ucs_status_t uct_config_get(void *config, const char *name, char *value,
2090  size_t max);
2091 
2092 
2105 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
2106 
2107 
2124  const uct_iface_params_t *params,
2125  const uct_iface_config_t *config,
2126  uct_iface_h *iface_p);
2127 
2128 
2135 void uct_iface_close(uct_iface_h iface);
2136 
2137 
2146 
2147 
2160 
2161 
2173 
2174 
2193 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
2194  const uct_iface_addr_t *iface_addr);
2195 
2196 
2214 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
2215  uct_completion_t *comp);
2216 
2217 
2231 
2232 
2252 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
2253 
2254 
2270 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
2271  const char *name, uct_allocated_memory_t *mem);
2272 
2273 
2281 
2282 
2301  uct_am_callback_t cb, void *arg, uint32_t flags);
2302 
2303 
2318  void *arg);
2319 
2320 
2333  uct_conn_request_h conn_request);
2334 
2335 
2349  uct_conn_request_h conn_request);
2350 
2351 
2386 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
2387 
2388 
2404 
2405 
2438 ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags);
2439 
2440 
2447 void uct_ep_destroy(uct_ep_h ep);
2448 
2449 
2459 
2460 
2472  const uct_ep_addr_t *ep_addr);
2473 
2474 
2483 
2484 
2492 typedef enum {
2494  UCT_MEM_ALLOC_PARAM_FIELD_FLAGS = UCS_BIT(0),
2495 
2497  UCT_MEM_ALLOC_PARAM_FIELD_ADDRESS = UCS_BIT(1),
2498 
2501 
2503  UCT_MEM_ALLOC_PARAM_FIELD_MDS = UCS_BIT(3),
2504 
2506  UCT_MEM_ALLOC_PARAM_FIELD_NAME = UCS_BIT(4),
2507 
2511 
2512 
2517 typedef struct {
2523  uint64_t field_mask;
2531  unsigned flags;
2532 
2543  void *address;
2548  ucs_memory_type_t mem_type;
2549 
2550  struct {
2555  const uct_md_h *mds;
2556 
2562  unsigned count;
2563  } mds;
2571  const char *name;
2572 
2577  ucs_sys_device_t sys_device;
2579 
2580 
2599  size_t length, uct_mem_advice_t advice);
2600 
2601 
2615 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2616  unsigned flags, uct_mem_h *memh_p);
2617 
2618 
2627 
2628 
2641 ucs_status_t uct_md_detect_memory_type(uct_md_h md, const void *addr,
2642  size_t length,
2643  ucs_memory_type_t *mem_type_p);
2644 
2645 
2670 ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods,
2671  unsigned num_methods,
2672  const uct_mem_alloc_params_t *params,
2673  uct_allocated_memory_t *mem);
2674 
2675 
2686 
2702  const char *env_prefix, const char *filename,
2703  uct_md_config_t **config_p);
2704 
2705 
2728 
2729 
2741 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
2742 
2743 
2763 ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2764  uct_rkey_bundle_t *rkey_ob);
2765 
2766 
2793  uint64_t remote_addr, void **addr_p);
2794 
2795 
2805  const uct_rkey_bundle_t *rkey_ob);
2806 
2807 
2822 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2823 {
2824  return ucs_callbackq_dispatch(&worker->progress_q);
2825 }
2826 
2827 
2856 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2857  uct_completion_t *comp)
2858 {
2859  return iface->ops.iface_flush(iface, flags, comp);
2860 }
2861 
2874 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2875 {
2876  return iface->ops.iface_fence(iface, flags);
2878 
2888 UCT_INLINE_API void uct_iface_release_desc(void *desc)
2889 {
2890  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2891  release_desc->cb(release_desc, desc);
2892 }
2893 
2894 
2899 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2900  uint64_t remote_addr, uct_rkey_t rkey)
2901 {
2902  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2903 }
2904 
2905 
2910 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2911  void *arg, uint64_t remote_addr,
2912  uct_rkey_t rkey)
2913 {
2914  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2915 }
2916 
2917 
2947 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
2948  const uct_iov_t *iov, size_t iovcnt,
2949  uint64_t remote_addr, uct_rkey_t rkey,
2950  uct_completion_t *comp)
2951 {
2952  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2953 }
2954 
2955 
2960 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2961  uint64_t remote_addr, uct_rkey_t rkey)
2962 {
2963  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2964 }
2965 
2966 
2971 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
2972  void *arg, size_t length,
2973  uint64_t remote_addr, uct_rkey_t rkey,
2974  uct_completion_t *comp)
2975 {
2976  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2977  rkey, comp);
2978 }
2979 
2980 
3010 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
3011  const uct_iov_t *iov, size_t iovcnt,
3012  uint64_t remote_addr, uct_rkey_t rkey,
3013  uct_completion_t *comp)
3014 {
3015  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
3016 }
3017 
3018 
3023 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
3024  const void *payload, unsigned length)
3025 {
3026  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
3027 }
3028 
3029 
3060 UCT_INLINE_API ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id,
3061  const uct_iov_t *iov, size_t iovcnt)
3062 {
3063  return ep->iface->ops.ep_am_short_iov(ep, id, iov, iovcnt);
3064 }
3065 
3066 
3071 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
3072  uct_pack_callback_t pack_cb, void *arg,
3073  unsigned flags)
3074 {
3075  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
3076 }
3077 
3078 
3116 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
3117  const void *header,
3118  unsigned header_length,
3119  const uct_iov_t *iov, size_t iovcnt,
3120  unsigned flags,
3121  uct_completion_t *comp)
3122 {
3123  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
3124  flags, comp);
3125 }
3126 
3131 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
3132  uint64_t remote_addr, uct_rkey_t rkey,
3133  uint64_t *result, uct_completion_t *comp)
3134 {
3135  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
3136 }
3138 
3143 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
3144  uint64_t remote_addr, uct_rkey_t rkey,
3145  uint32_t *result, uct_completion_t *comp)
3146 {
3147  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
3148 }
3149 
3150 
3155 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
3156  uint32_t value, uint64_t remote_addr,
3157  uct_rkey_t rkey)
3158 {
3159  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
3160 }
3161 
3162 
3167 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
3168  uint64_t value, uint64_t remote_addr,
3169  uct_rkey_t rkey)
3170 {
3171  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
3172 }
3173 
3174 
3179 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3180  uint32_t value, uint32_t *result,
3181  uint64_t remote_addr, uct_rkey_t rkey,
3182  uct_completion_t *comp)
3183 {
3184  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
3185  remote_addr, rkey, comp);
3186 }
3187 
3193 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3194  uint64_t value, uint64_t *result,
3195  uint64_t remote_addr, uct_rkey_t rkey,
3196  uct_completion_t *comp)
3197 {
3198  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
3199  remote_addr, rkey, comp);
3201 
3202 
3223 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
3224  uct_pending_req_t *req,
3225  unsigned flags)
3226 {
3227  return ep->iface->ops.ep_pending_add(ep, req, flags);
3228 }
3229 
3230 
3242 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
3244  void *arg)
3245 {
3246  ep->iface->ops.ep_pending_purge(ep, cb, arg);
3247 }
3248 
3249 
3278 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
3279  uct_completion_t *comp)
3280 {
3281  return ep->iface->ops.ep_flush(ep, flags, comp);
3282 }
3283 
3284 
3297 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
3298 {
3299  return ep->iface->ops.ep_fence(ep, flags);
3300 }
3301 
3302 
3325 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
3326  const void *data, size_t length)
3327 {
3328  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
3329 }
3330 
3331 
3355 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
3356  uint64_t imm,
3357  uct_pack_callback_t pack_cb,
3358  void *arg, unsigned flags)
3359 {
3360  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
3361 }
3362 
3363 
3401 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
3402  uint64_t imm,
3403  const uct_iov_t *iov,
3404  size_t iovcnt,
3405  unsigned flags,
3406  uct_completion_t *comp)
3407 {
3408  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
3409  comp);
3410 }
3411 
3412 
3450  const void *header,
3451  unsigned header_length,
3452  const uct_iov_t *iov,
3453  size_t iovcnt,
3454  unsigned flags,
3455  uct_completion_t *comp)
3456 {
3457  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
3458  iov, iovcnt, flags, comp);
3459 }
3460 
3461 
3480 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
3481 {
3482  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
3483 }
3484 
3485 
3506  const void* header,
3507  unsigned header_length,
3508  unsigned flags)
3509 {
3510  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
3511  flags);
3512 }
3513 
3514 
3546  uct_tag_t tag,
3547  uct_tag_t tag_mask,
3548  const uct_iov_t *iov,
3549  size_t iovcnt,
3550  uct_tag_context_t *ctx)
3551 {
3552  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3553 }
3554 
3555 
3579  uct_tag_context_t *ctx,
3580  int force)
3581 {
3582  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3583 }
3584 
3585 
3604 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3605 {
3606  iface->ops.iface_progress_enable(iface, flags);
3607 }
3608 
3609 
3629 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3630 {
3631  iface->ops.iface_progress_disable(iface, flags);
3632 }
3633 
3634 
3639 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3640 {
3641  return iface->ops.iface_progress(iface);
3642 }
3643 
3644 
3668  const uct_cm_config_t *config, uct_cm_h *cm_p);
3669 
3670 
3677 void uct_cm_close(uct_cm_h cm);
3678 
3679 
3691 
3692 
3710  const char *env_prefix, const char *filename,
3711  uct_cm_config_t **config_p);
3712 
3713 
3727 
3728 
3747 ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3748  socklen_t socklen,
3749  const uct_listener_params_t *params,
3750  uct_listener_h *listener_p);
3751 
3752 
3759 void uct_listener_destroy(uct_listener_h listener);
3760 
3761 
3778  uct_conn_request_h conn_request);
3779 
3780 
3794  uct_listener_attr_t *listener_attr);
3795 
3796 
3804 static UCS_F_ALWAYS_INLINE
3806 {
3807  if (ucs_unlikely(status != UCS_OK) && (comp->status == UCS_OK)) {
3808  /* store first failure status */
3809  comp->status = status;
3810  }
3811 }
3812 
3813 
3819 END_C_DECLS
3820 
3821 #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:907
Definition: uct.h:871
ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag, uint64_t imm, const uct_iov_t *iov, size_t iovcnt, unsigned flags, uct_completion_t *comp)
Zcopy eager tagged-send operation.
Definition: uct.h:3422
Definition: uct.h:852
uct_progress_types
UCT progress types.
Definition: uct.h:569
Definition: uct.h:522
Definition: uct.h:892
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:842
static UCS_F_ALWAYS_INLINE void uct_completion_update_status(uct_completion_t *comp, ucs_status_t status)
Update status of UCT completion handle.
Definition: uct.h:3826
Definition: uct.h:963
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:899
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:767
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:814
ucs_status_ptr_t uct_ep_tag_rndv_zcopy(uct_ep_h ep, uct_tag_t tag, const void *header, unsigned header_length, const uct_iov_t *iov, size_t iovcnt, unsigned flags, uct_completion_t *comp)
Rendezvous tagged-send operation.
Definition: uct.h:3470
Definition: uct.h:861
ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode, uint32_t value, uint64_t remote_addr, uct_rkey_t rkey)
Definition: uct.h:3176
ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events)
Turn on event notification for the next event.
void * uct_mem_h
Definition: uct_def.h:84
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:644
Structure for scatter-gather I/O.
Definition: uct_def.h:149
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:996
Definition: uct.h:708
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:582
void uct_ep_pending_purge(uct_ep_h ep, uct_pending_purge_callback_t cb, void *arg)
Remove all pending requests from an endpoint.
Definition: uct.h:3263
Definition: uct.h:759
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:502
Definition: uct.h:659
ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag, uint64_t imm, uct_pack_callback_t pack_cb, void *arg, unsigned flags)
Bcopy eager tagged-send operation.
Definition: uct.h:3376
ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags, uct_completion_t *comp)
Flush outstanding communication operations on an endpoint.
Definition: uct.h:3299
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:745
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:2518
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:3599
Definition: uct.h:990
Definition: uct.h:294
Definition: uct.h:655
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:891
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
Parameters used for interface creation.
Definition: uct.h:1216
struct uct_md_config uct_md_config_t
Definition: uct_def.h:81
ucs_status_t uct_ep_put_zcopy(uct_ep_h ep, const uct_iov_t *iov, size_t iovcnt, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Write data to remote memory while avoiding local memory copy.
Definition: uct.h:2968
Memory domain resource descriptor.
Definition: uct.h:218
Definition: uct.h:866
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:588
uct_mem_alloc_params_field_t
UCT allocation parameters specification field mask.
Definition: uct.h:2513
ucs_status_t uct_iface_get_address(uct_iface_h iface, uct_iface_addr_t *addr)
Get interface address.
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:933
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:797
Definition: uct.h:1859
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
Definition: uct.h:310
uct_cb_flags
Callback flags.
Definition: uct.h:605
Definition: uct.h:2515
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:669
uct_listener_attr_field
UCT listener attributes field mask.
Definition: uct.h:920
Definition: uct.h:749
Definition: uct.h:716
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:699
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:2909
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:1522
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:3152
ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode, uint64_t value, uint64_t remote_addr, uct_rkey_t rkey)
Definition: uct.h:3188
Interface attributes: capabilities and limitations.
Definition: uct.h:1080
Definition: uct.h:826
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:2920
ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id, const uct_iov_t *iov, size_t iovcnt)
Short io-vector send operation.
Definition: uct.h:3081
ucs_status_t(* uct_error_handler_t)(void *arg, uct_ep_h ep, ucs_status_t status)
Callback to process peer failure.
Definition: uct_def.h:576
ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length, uint64_t remote_addr, uct_rkey_t rkey)
Definition: uct.h:2981
ucs_status_t uct_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.
Definition: uct.h:572
Definition: uct.h:975
ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags, uct_completion_t *comp)
Flush outstanding communication operations on an interface.
Definition: uct.h:2877
Definition: uct.h:534
ucs_status_t uct_ep_get_zcopy(uct_ep_h ep, const uct_iov_t *iov, size_t iovcnt, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Read data from remote memory while avoiding local memory copy.
Definition: uct.h:3031
Definition: uct.h:1608
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:3650
Definition: uct.h:754
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:538
Definition: uct.h:524
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:957
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:952
Definition: uct.h:791
ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag, const void *data, size_t length)
Short eager tagged-send operation.
Definition: uct.h:3346
ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header, const void *payload, unsigned length)
Definition: uct.h:3044
Remote key with its type.
Definition: uct.h:1748
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:884
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition: uct.h:3501
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:1645
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:600
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:300
Definition: uct.h:663
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:219
Definition: uct.h:780
ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id, const void *header, unsigned header_length, const uct_iov_t *iov, size_t iovcnt, unsigned flags, uct_completion_t *comp)
Send active message while avoiding local memory copy.
Definition: uct.h:3137
Definition: uct.h:820
ucs_status_t
Status codes.
Definition: status.h:45
Definition: uct.h:606
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:847
Definition: uct.h:538
Definition: uct.h:313
enum uct_md_mem_attr_field uct_md_mem_attr_field_t
UCT MD memory attributes field mask.
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.
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:631
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:804
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition: uct.h:1542
Definition: uct.h:719
Definition: uct.h:501
Definition: uct.h:966
Definition: uct.h:2527
Definition: uct.h:1041
uint64_t flags
Definition: uct.h:278
Definition: uct.h:570
ucs_status_t uct_cm_client_ep_conn_notify(uct_ep_h ep)
Notify the server about client-side connection establishment.
Connection manager attributes, capabilities and limitations.
Definition: uct.h:1502
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:652
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
Definition: uct.h:743
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition: uct_def.h:613
Definition: uct.h:506
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:3625
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:3214
uct_iface_feature
UCT interface configuration features.
Definition: uct.h:1036
Definition: uct.h:733
ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id, uct_pack_callback_t pack_cb, void *arg, unsigned flags)
Definition: uct.h:3092
uct_flush_flags
Flush modifiers.
Definition: uct.h:533
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:1606
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:498
Definition: uct.h:1056
Definition: status.h:47
uint64_t uct_tag_t
Definition: uct_def.h:110
Definition: uct.h:772
Definition: uct.h:499
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.
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:1478
Parameters for allocating memory using uct_mem_alloc.
Definition: uct.h:2538
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:786
Definition: uct.h:607
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:2895
ucs_status_t status
Definition: uct.h:1776
uct_ep_connect_params_field
UCT endpoint connected by uct_ep_connect parameters field mask.
Definition: uct.h:1019
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:773
Definition: uct.h:1044
unsigned md_resource_count
Definition: uct.h:258
Definition: uct.h:1614
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:3526
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:629
Definition: uct.h:954
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:3244
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:571
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:1327
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:715
Definition: uct.h:978
Definition: uct.h:1627
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:1047
Definition: uct.h:1050
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:1578
Definition: uct.h:583
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:650
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.
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:1038
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:832
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
Definition: uct.h:2524
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:504
ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
Ensures ordering of outstanding communications on the endpoint. Operations issued on the endpoint pri...
Definition: uct.h:3318
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:893
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:526
ucs_status_t(* uct_pending_callback_t)(uct_pending_req_t *self)
Callback to process pending requests.
Definition: uct_def.h:555
Definition: uct.h:503
Definition: uct.h:1002
Communication resource descriptor.
Definition: uct.h:328
Pending request.
Definition: uct.h:1789
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:1070
unsigned uct_worker_progress(uct_worker_h worker)
Explicit progress for UCT worker.
Definition: uct.h:2843
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:723
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:909
Definition: uct.h:231
Definition: uct.h:1059
Definition: types.h:151
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.
struct uct_ep * uct_ep_h
Definition: uct_def.h:83
Definition: uct.h:553
Definition: uct.h:880
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:1802
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:847
Completion handle.
Definition: uct.h:1773
ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb, void *arg, uint64_t remote_addr, uct_rkey_t rkey)
Definition: uct.h:2931
ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb, void *arg, size_t length, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Definition: uct.h:2992
Definition: uct.h:837
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:98
Definition: uct.h:589
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:3660
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:508
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:3566
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.
Definition: uct.h:523
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:505
Definition: uct.h:809
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_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode, uint32_t value, uint32_t *result, uint64_t remote_addr, uct_rkey_t rkey, uct_completion_t *comp)
Definition: uct.h:3200
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:3164
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:521
Definition: uct.h:1053
Definition: uct.h:738
Describes a memory allocated by UCT.
Definition: uct.h:1730
Definition: uct.h:797
Definition: uct.h:960