UCX  1.14
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/linear_func.h>
19 #include <ucs/memory/memory_type.h>
20 #include <ucs/type/status.h>
21 #include <ucs/type/thread_mode.h>
22 #include <ucs/type/cpu_set.h>
23 #include <ucs/stats/stats_fwd.h>
24 #include <ucs/sys/compiler_def.h>
25 #include <ucs/sys/topo/base/topo.h>
26 
27 #include <sys/socket.h>
28 #include <stdio.h>
29 #include <sched.h>
30 
31 BEGIN_C_DECLS
32 
217 typedef struct uct_md_resource_desc {
218  char md_name[UCT_MD_NAME_MAX];
220 
221 
234 };
235 
236 
244 typedef struct uct_component_attr {
251  uint64_t field_mask;
252 
254  char name[UCT_COMPONENT_NAME_MAX];
255 
258 
273 
277  uint64_t flags;
279 
280 
288 enum {
293  UCT_COMPONENT_FLAG_CM = UCS_BIT(0),
294 
300 };
301 
302 
307 typedef enum {
314 
315 
327 typedef struct uct_tl_resource_desc {
328  char tl_name[UCT_TL_NAME_MAX];
329  char dev_name[UCT_DEVICE_NAME_MAX];
332  ucs_sys_device_t sys_device;
335 
336 #define UCT_TL_RESOURCE_DESC_FMT "%s/%s"
337 #define UCT_TL_RESOURCE_DESC_ARG(_resource) (_resource)->tl_name, (_resource)->dev_name
338 
339 
347 typedef enum uct_atomic_op {
348  UCT_ATOMIC_OP_ADD,
349  UCT_ATOMIC_OP_AND,
350  UCT_ATOMIC_OP_OR,
351  UCT_ATOMIC_OP_XOR,
352  UCT_ATOMIC_OP_SWAP,
353  UCT_ATOMIC_OP_CSWAP,
354  UCT_ATOMIC_OP_LAST
355 } uct_atomic_op_t;
356 
357 
368  /* Active message capabilities */
369 #define UCT_IFACE_FLAG_AM_SHORT UCS_BIT(0)
370 #define UCT_IFACE_FLAG_AM_BCOPY UCS_BIT(1)
371 #define UCT_IFACE_FLAG_AM_ZCOPY UCS_BIT(2)
373 #define UCT_IFACE_FLAG_PENDING UCS_BIT(3)
375  /* PUT capabilities */
376 #define UCT_IFACE_FLAG_PUT_SHORT UCS_BIT(4)
377 #define UCT_IFACE_FLAG_PUT_BCOPY UCS_BIT(5)
378 #define UCT_IFACE_FLAG_PUT_ZCOPY UCS_BIT(6)
380  /* GET capabilities */
381 #define UCT_IFACE_FLAG_GET_SHORT UCS_BIT(8)
382 #define UCT_IFACE_FLAG_GET_BCOPY UCS_BIT(9)
383 #define UCT_IFACE_FLAG_GET_ZCOPY UCS_BIT(10)
385  /* Atomic operations domain */
386 #define UCT_IFACE_FLAG_ATOMIC_CPU UCS_BIT(30)
388 #define UCT_IFACE_FLAG_ATOMIC_DEVICE UCS_BIT(31)
392  /* Error handling capabilities */
393 #define UCT_IFACE_FLAG_ERRHANDLE_SHORT_BUF UCS_BIT(32)
394 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_BUF UCS_BIT(33)
395 #define UCT_IFACE_FLAG_ERRHANDLE_ZCOPY_BUF UCS_BIT(34)
396 #define UCT_IFACE_FLAG_ERRHANDLE_AM_ID UCS_BIT(35)
397 #define UCT_IFACE_FLAG_ERRHANDLE_REMOTE_MEM UCS_BIT(36)
398 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_LEN UCS_BIT(37)
399 #define UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE UCS_BIT(38)
401 #define UCT_IFACE_FLAG_EP_CHECK UCS_BIT(39)
403  /* Connection establishment */
404 #define UCT_IFACE_FLAG_CONNECT_TO_IFACE UCS_BIT(40)
405 #define UCT_IFACE_FLAG_CONNECT_TO_EP UCS_BIT(41)
406 #define UCT_IFACE_FLAG_CONNECT_TO_SOCKADDR UCS_BIT(42)
408  /* Special transport flags */
409 #define UCT_IFACE_FLAG_AM_DUP UCS_BIT(43)
413  /* Callback invocation */
414 #define UCT_IFACE_FLAG_CB_SYNC UCS_BIT(44)
417 #define UCT_IFACE_FLAG_CB_ASYNC UCS_BIT(45)
424  /* Keepalive */
425 #define UCT_IFACE_FLAG_EP_KEEPALIVE UCS_BIT(46)
431  /* Tag matching operations */
432 #define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
433 #define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
434 #define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
435 #define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
451  /* Event types */
452 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(0)
454 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(1)
456 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(2)
458  /* Event notification mechanisms */
459 #define UCT_IFACE_FLAG_EVENT_FD UCS_BIT(3)
461 #define UCT_IFACE_FLAG_EVENT_ASYNC_CB UCS_BIT(4)
472 typedef enum {
482 
483 
496  UCT_EVENT_SEND_COMP = UCS_BIT(0),
497  UCT_EVENT_RECV = UCS_BIT(1),
498  UCT_EVENT_RECV_SIG = UCS_BIT(2)
500 };
502 
507 enum uct_flush_flags {
512  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0),
527  UCT_FLUSH_FLAG_REMOTE = UCS_BIT(1)
536 };
537 
538 
543 enum uct_progress_types {
544  UCT_PROGRESS_SEND = UCS_BIT(0),
545  UCT_PROGRESS_RECV = UCS_BIT(1),
546  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
549 };
550 
551 
556 enum uct_msg_flags {
557  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0),
563  UCT_SEND_FLAG_PEER_CHECK = UCS_BIT(1)
570 };
571 
572 
579 enum uct_cb_flags {
580  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
581  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
596 };
597 
598 
603 enum uct_iface_open_mode {
605  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
606 
610 
614 };
615 
616 
627 
629  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
633  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
637  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
638 
641 
644 
653 
656 
659 
662 
665 
668 
671 
674 
677 
680 
683 };
684 
689 typedef enum {
698 
703 enum {
707  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
708 
712  UCT_MD_FLAG_REG = UCS_BIT(1),
713 
717  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
718 
723  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
724 
728  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
729 
733  UCT_MD_FLAG_FIXED = UCS_BIT(5),
734 
741  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
742 
746  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7),
747 
751  UCT_MD_FLAG_INVALIDATE = UCS_BIT(8),
752 
757  UCT_MD_FLAG_EXPORTED_MKEY = UCS_BIT(9),
758 
763 };
764 
769 enum uct_md_mem_flags {
774  UCT_MD_MEM_FLAG_NONBLOCK = UCS_BIT(0),
775 
779  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
780 
785  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
786 
791  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
792 
793  /* Memory access flags */
797  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
798 
802  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
803 
807  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
808 
813 
817  UCT_MD_MEM_ACCESS_LOCAL_WRITE = UCS_BIT(9),
827 
835 };
836 
837 
842 typedef enum {
849 
850 
858 enum uct_cm_attr_field {
861 };
862 
874 };
875 
876 
887 
890 
893 };
895 
903 enum uct_ep_params_field {
906 
908  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
909 
911  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
912 
914  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
915 
917  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
918 
921 
926  UCT_EP_PARAM_FIELD_CM = UCS_BIT(7),
927 
930 
933 
936 
939 
942 
945 
948 
951 
954 };
955 
967 
970 };
972 
981 enum uct_iface_feature {
983  UCT_IFACE_FEATURE_AM = UCS_BIT(0),
984 
986  UCT_IFACE_FEATURE_PUT = UCS_BIT(1),
989  UCT_IFACE_FEATURE_GET = UCS_BIT(2),
992  UCT_IFACE_FEATURE_AMO32 = UCS_BIT(3),
993 
995  UCT_IFACE_FEATURE_AMO64 = UCS_BIT(4),
996 
998  UCT_IFACE_FEATURE_TAG = UCS_BIT(5),
999 
1001  UCT_IFACE_FEATURE_FLUSH_REMOTE = UCS_BIT(6),
1005 };
1006 
1007 /*
1008  * @ingroup UCT_RESOURCE
1009  * @brief Process Per Node (PPN) bandwidth specification: f(ppn) = dedicated + shared / ppn
1010  *
1011  * This structure specifies a function which is used as basis for bandwidth
1012  * estimation of various UCT operations. This information can be used to select
1013  * the best performing combination of UCT operations.
1014  */
1015 typedef struct uct_ppn_bandwidth {
1016  double dedicated;
1017  double shared;
1020 
1026  struct {
1027  struct {
1028  size_t max_short;
1029  size_t max_bcopy;
1030  size_t min_zcopy;
1033  size_t max_zcopy;
1036  size_t opt_zcopy_align;
1038  size_t align_mtu;
1039  size_t max_iov;
1042  } put;
1044  struct {
1045  size_t max_short;
1046  size_t max_bcopy;
1047  size_t min_zcopy;
1050  size_t max_zcopy;
1053  size_t opt_zcopy_align;
1055  size_t align_mtu;
1056  size_t max_iov;
1059  } get;
1061  struct {
1062  size_t max_short;
1064  size_t max_bcopy;
1065  size_t min_zcopy;
1068  size_t max_zcopy;
1071  size_t opt_zcopy_align;
1073  size_t align_mtu;
1074  size_t max_hdr;
1075  size_t max_iov;
1078  } am;
1080  struct {
1081  struct {
1082  size_t min_recv;
1083  size_t max_zcopy;
1085  size_t max_iov;
1088  size_t max_outstanding;
1090  } recv;
1091 
1092  struct {
1093  size_t max_short;
1095  size_t max_bcopy;
1097  size_t max_zcopy;
1099  size_t max_iov;
1101  } eager;
1103  struct {
1104  size_t max_zcopy;
1106  size_t max_hdr;
1109  size_t max_iov;
1111  } rndv;
1112  } tag;
1114  struct {
1115  uint64_t op_flags;
1116  uint64_t fop_flags;
1117  } atomic32, atomic64;
1119  uint64_t flags;
1120  uint64_t event_flags;
1121  } cap;
1123  size_t device_addr_len;
1124  size_t iface_addr_len;
1125  size_t ep_addr_len;
1126  size_t max_conn_priv;
1129  struct sockaddr_storage listen_sockaddr;
1131  /*
1132  * The following fields define expected performance of the communication
1133  * interface, this would usually be a combination of device and system
1134  * characteristics and determined at run time.
1135  */
1136  double overhead;
1137  uct_ppn_bandwidth_t bandwidth;
1138  ucs_linear_func_t latency;
1140  uint8_t priority;
1141  size_t max_num_eps;
1142  unsigned dev_num_paths;
1151 };
1152 
1153 
1165  uint64_t field_mask;
1167  ucs_cpu_set_t cpu_mask;
1169  uint64_t open_mode;
1171  union {
1178  struct {
1179  const char *tl_name;
1180  const char *dev_name;
1181  } device;
1189  struct {
1190  ucs_sock_addr_t listen_sockaddr;
1192  void *conn_request_arg;
1194  uct_sockaddr_conn_request_callback_t conn_request_cb;
1197  uint32_t cb_flags;
1198  } sockaddr;
1199  } mode;
1200 
1203  ucs_stats_node_t *stats_root;
1205  size_t rx_headroom;
1206 
1208  void *err_handler_arg;
1210  uct_error_handler_t err_handler;
1213  uint32_t err_handler_flags;
1214 
1216  void *eager_arg;
1218  uct_tag_unexp_eager_cb_t eager_cb;
1219  void *rndv_arg;
1221  uct_tag_unexp_rndv_cb_t rndv_cb;
1222 
1223  void *async_event_arg;
1228  uct_async_event_cb_t async_event_cb;
1230  /* Time period between keepalive rounds */
1231  ucs_time_t keepalive_interval;
1232 
1240  size_t am_alignment;
1241 
1258  size_t am_align_offset;
1259 
1264  uint64_t features;
1265 };
1266 
1267 
1272 struct uct_ep_params {
1278  uint64_t field_mask;
1284  uct_iface_h iface;
1289  void *user_data;
1290 
1296  const uct_device_addr_t *dev_addr;
1297 
1303  const uct_iface_addr_t *iface_addr;
1304 
1312  const ucs_sock_addr_t *sockaddr;
1313 
1322  uint32_t sockaddr_cb_flags;
1323 
1334  uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb;
1335 
1340  uct_cm_h cm;
1341 
1349  uct_conn_request_h conn_request;
1350 
1356 
1362 
1366  uct_ep_disconnect_cb_t disconnect_cb;
1367 
1372  unsigned path_index;
1373 
1381  uct_cm_ep_resolve_callback_t cm_resolve_cb;
1389  const void *private_data;
1390 
1395  size_t private_data_length;
1396 
1403  const ucs_sock_addr_t *local_sockaddr;
1404 };
1405 
1406 
1411 struct uct_ep_connect_params {
1417  uint64_t field_mask;
1418 
1422  const void *private_data;
1423 
1428  size_t private_data_length;
1429 };
1430 
1435 struct uct_cm_attr {
1441  uint64_t field_mask;
1442 
1447  size_t max_conn_priv;
1448 };
1450 
1455 struct uct_listener_attr {
1461  uint64_t field_mask;
1466  struct sockaddr_storage sockaddr;
1467 };
1469 
1475 struct uct_listener_params {
1481  uint64_t field_mask;
1488  int backlog;
1489 
1494 
1498  void *user_data;
1499 };
1500 
1501 
1511 struct uct_md_attr {
1512  struct {
1513  uint64_t max_alloc;
1514  size_t max_reg;
1515  uint64_t flags;
1516  uint64_t reg_mem_types;
1517  uint64_t detect_mem_types;
1518  uint64_t alloc_mem_types;
1519  uint64_t access_mem_types;
1520  } cap;
1521 
1522  ucs_linear_func_t reg_cost;
1526  char component_name[UCT_COMPONENT_NAME_MAX];
1527  size_t rkey_packed_size;
1528  ucs_cpu_set_t local_cpus;
1529 };
1530 
1531 
1539 typedef enum uct_md_mem_attr_field {
1541  UCT_MD_MEM_ATTR_FIELD_MEM_TYPE = UCS_BIT(0),
1542 
1551 
1554 
1561 
1569 
1578 typedef struct uct_md_mem_attr {
1583  uint64_t field_mask;
1584 
1590  ucs_memory_type_t mem_type;
1591 
1597  ucs_sys_device_t sys_dev;
1598 
1604  void *base_address;
1605 
1611  size_t alloc_length;
1612 
1621  int dmabuf_fd;
1622 
1627  size_t dmabuf_offset;
1629 
1630 
1651 ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, size_t length,
1652  uct_md_mem_attr_t *mem_attr);
1653 
1654 
1663 typedef struct uct_allocated_memory {
1664  void *address;
1665  size_t length;
1666  uct_alloc_method_t method;
1667  ucs_memory_type_t mem_type;
1668  uct_md_h md;
1669  uct_mem_h memh;
1671 
1672 
1680 typedef struct uct_rkey_bundle {
1681  uct_rkey_t rkey;
1682  void *handle;
1683  void *type;
1705 struct uct_completion {
1707  int count;
1708  ucs_status_t status;
1711 };
1712 
1713 
1721 struct uct_pending_req {
1722  uct_pending_callback_t func;
1723  char priv[UCT_PENDING_REQ_PRIV_LEN];
1724 };
1725 
1734 struct uct_tag_context {
1741  void (*tag_consumed_cb)(uct_tag_context_t *self);
1762  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1763  size_t length, void *inline_data, ucs_status_t status);
1764 
1777  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1778  unsigned header_length, ucs_status_t status, unsigned flags);
1779 
1781  char priv[UCT_TAG_PRIV_LEN];
1782 };
1784 
1789 enum {
1790  /* If set, header points to inline data, otherwise it is user buffer. */
1791  UCT_TAG_RECV_CB_INLINE_DATA = UCS_BIT(0)
1792 };
1793 
1794 
1795 extern const char *uct_alloc_method_names[];
1796 extern const char *uct_device_type_names[];
1797 
1813  unsigned *num_components_p);
1814 
1825 
1826 
1840  uct_component_attr_t *component_attr);
1841 
1842 
1862 ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1863  const uct_md_config_t *config, uct_md_h *md_p);
1864 
1871 void uct_md_close(uct_md_h md);
1872 
1873 
1889  uct_tl_resource_desc_t **resources_p,
1890  unsigned *num_resources_p);
1891 
1892 
1903 
1904 
1919 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1920  ucs_thread_mode_t thread_mode,
1921  uct_worker_h *worker_p);
1922 
1923 
1930 void uct_worker_destroy(uct_worker_h worker);
1931 
1932 
1956 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
1957  void *arg, unsigned flags,
1958  uct_worker_cb_id_t *id_p);
1959 
1960 
1982  uct_worker_cb_id_t *id_p);
1983 
1984 
2012 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
2013  const char *env_prefix, const char *filename,
2014  uct_iface_config_t **config_p);
2015 
2016 
2024 void uct_config_release(void *config);
2025 
2026 
2042 ucs_status_t uct_config_get(void *config, const char *name, char *value,
2043  size_t max);
2044 
2045 
2058 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
2059 
2060 
2077  const uct_iface_params_t *params,
2078  const uct_iface_config_t *config,
2079  uct_iface_h *iface_p);
2080 
2081 
2088 void uct_iface_close(uct_iface_h iface);
2089 
2090 
2099 
2100 
2113 
2114 
2126 
2127 
2146 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
2147  const uct_iface_addr_t *iface_addr);
2148 
2149 
2167 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
2168  uct_completion_t *comp);
2169 
2170 
2184 
2185 
2205 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
2206 
2207 
2223 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
2224  const char *name, uct_allocated_memory_t *mem);
2225 
2226 
2234 
2235 
2254  uct_am_callback_t cb, void *arg, uint32_t flags);
2255 
2256 
2271  void *arg);
2272 
2273 
2286  uct_conn_request_h conn_request);
2287 
2288 
2302  uct_conn_request_h conn_request);
2303 
2304 
2339 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
2340 
2341 
2357 
2358 
2391 ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags);
2392 
2393 
2400 void uct_ep_destroy(uct_ep_h ep);
2401 
2402 
2412 
2413 
2425  const uct_ep_addr_t *ep_addr);
2426 
2427 
2436 
2437 
2445 typedef enum {
2447  UCT_MEM_ALLOC_PARAM_FIELD_FLAGS = UCS_BIT(0),
2448 
2450  UCT_MEM_ALLOC_PARAM_FIELD_ADDRESS = UCS_BIT(1),
2451 
2454 
2456  UCT_MEM_ALLOC_PARAM_FIELD_MDS = UCS_BIT(3),
2457 
2459  UCT_MEM_ALLOC_PARAM_FIELD_NAME = UCS_BIT(4)
2461 
2462 
2467 typedef struct {
2473  uint64_t field_mask;
2481  unsigned flags;
2482 
2493  void *address;
2498  ucs_memory_type_t mem_type;
2499 
2500  struct {
2505  const uct_md_h *mds;
2506 
2512  unsigned count;
2513  } mds;
2521  const char *name;
2523 
2524 
2543  size_t length, uct_mem_advice_t advice);
2544 
2545 
2559 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2560  unsigned flags, uct_mem_h *memh_p);
2561 
2562 
2571 
2572 
2585 ucs_status_t uct_md_detect_memory_type(uct_md_h md, const void *addr,
2586  size_t length,
2587  ucs_memory_type_t *mem_type_p);
2588 
2589 
2614 ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods,
2615  unsigned num_methods,
2616  const uct_mem_alloc_params_t *params,
2617  uct_allocated_memory_t *mem);
2618 
2619 
2630 
2646  const char *env_prefix, const char *filename,
2647  uct_md_config_t **config_p);
2648 
2649 
2672 
2673 
2685 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
2686 
2687 
2707 ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2708  uct_rkey_bundle_t *rkey_ob);
2709 
2710 
2737  uint64_t remote_addr, void **addr_p);
2738 
2739 
2749  const uct_rkey_bundle_t *rkey_ob);
2750 
2751 
2766 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2767 {
2768  return ucs_callbackq_dispatch(&worker->progress_q);
2769 }
2770 
2771 
2800 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2801  uct_completion_t *comp)
2802 {
2803  return iface->ops.iface_flush(iface, flags, comp);
2804 }
2805 
2819 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2820 {
2821  return iface->ops.iface_fence(iface, flags);
2822 }
2823 
2833 UCT_INLINE_API void uct_iface_release_desc(void *desc)
2834 {
2835  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2836  release_desc->cb(release_desc, desc);
2837 }
2838 
2839 
2844 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2845  uint64_t remote_addr, uct_rkey_t rkey)
2846 {
2847  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2848 }
2849 
2850 
2855 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2856  void *arg, uint64_t remote_addr,
2857  uct_rkey_t rkey)
2858 {
2859  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2860 }
2861 
2862 
2892 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
2893  const uct_iov_t *iov, size_t iovcnt,
2894  uint64_t remote_addr, uct_rkey_t rkey,
2895  uct_completion_t *comp)
2896 {
2897  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2898 }
2899 
2900 
2905 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2906  uint64_t remote_addr, uct_rkey_t rkey)
2907 {
2908  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2909 }
2910 
2911 
2916 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
2917  void *arg, size_t length,
2918  uint64_t remote_addr, uct_rkey_t rkey,
2919  uct_completion_t *comp)
2920 {
2921  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2922  rkey, comp);
2923 }
2924 
2925 
2955 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
2956  const uct_iov_t *iov, size_t iovcnt,
2957  uint64_t remote_addr, uct_rkey_t rkey,
2958  uct_completion_t *comp)
2959 {
2960  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2961 }
2962 
2963 
2968 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
2969  const void *payload, unsigned length)
2970 {
2971  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
2972 }
2973 
2974 
3005 UCT_INLINE_API ucs_status_t uct_ep_am_short_iov(uct_ep_h ep, uint8_t id,
3006  const uct_iov_t *iov, size_t iovcnt)
3007 {
3008  return ep->iface->ops.ep_am_short_iov(ep, id, iov, iovcnt);
3009 }
3010 
3011 
3016 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
3017  uct_pack_callback_t pack_cb, void *arg,
3018  unsigned flags)
3019 {
3020  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
3021 }
3022 
3023 
3061 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
3062  const void *header,
3063  unsigned header_length,
3064  const uct_iov_t *iov, size_t iovcnt,
3065  unsigned flags,
3066  uct_completion_t *comp)
3067 {
3068  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
3069  flags, comp);
3070 }
3071 
3076 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
3077  uint64_t remote_addr, uct_rkey_t rkey,
3078  uint64_t *result, uct_completion_t *comp)
3079 {
3080  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
3081 }
3083 
3088 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
3089  uint64_t remote_addr, uct_rkey_t rkey,
3090  uint32_t *result, uct_completion_t *comp)
3091 {
3092  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
3093 }
3094 
3095 
3100 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
3101  uint32_t value, uint64_t remote_addr,
3102  uct_rkey_t rkey)
3103 {
3104  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
3105 }
3106 
3107 
3112 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
3113  uint64_t value, uint64_t remote_addr,
3114  uct_rkey_t rkey)
3115 {
3116  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
3117 }
3118 
3119 
3124 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3125  uint32_t value, uint32_t *result,
3126  uint64_t remote_addr, uct_rkey_t rkey,
3127  uct_completion_t *comp)
3128 {
3129  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
3130  remote_addr, rkey, comp);
3131 }
3132 
3138 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
3139  uint64_t value, uint64_t *result,
3140  uint64_t remote_addr, uct_rkey_t rkey,
3141  uct_completion_t *comp)
3142 {
3143  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
3144  remote_addr, rkey, comp);
3146 
3147 
3168 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
3169  uct_pending_req_t *req,
3170  unsigned flags)
3171 {
3172  return ep->iface->ops.ep_pending_add(ep, req, flags);
3173 }
3174 
3175 
3187 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
3189  void *arg)
3190 {
3191  ep->iface->ops.ep_pending_purge(ep, cb, arg);
3192 }
3193 
3194 
3223 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
3224  uct_completion_t *comp)
3225 {
3226  return ep->iface->ops.ep_flush(ep, flags, comp);
3227 }
3228 
3229 
3242 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
3243 {
3244  return ep->iface->ops.ep_fence(ep, flags);
3245 }
3246 
3247 
3270 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
3271  const void *data, size_t length)
3272 {
3273  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
3274 }
3275 
3276 
3300 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
3301  uint64_t imm,
3302  uct_pack_callback_t pack_cb,
3303  void *arg, unsigned flags)
3304 {
3305  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
3306 }
3307 
3308 
3346 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
3347  uint64_t imm,
3348  const uct_iov_t *iov,
3349  size_t iovcnt,
3350  unsigned flags,
3351  uct_completion_t *comp)
3352 {
3353  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
3354  comp);
3355 }
3356 
3357 
3395  const void *header,
3396  unsigned header_length,
3397  const uct_iov_t *iov,
3398  size_t iovcnt,
3399  unsigned flags,
3400  uct_completion_t *comp)
3401 {
3402  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
3403  iov, iovcnt, flags, comp);
3404 }
3405 
3406 
3425 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
3426 {
3427  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
3428 }
3429 
3430 
3451  const void* header,
3452  unsigned header_length,
3453  unsigned flags)
3454 {
3455  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
3456  flags);
3457 }
3458 
3459 
3491  uct_tag_t tag,
3492  uct_tag_t tag_mask,
3493  const uct_iov_t *iov,
3494  size_t iovcnt,
3495  uct_tag_context_t *ctx)
3496 {
3497  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3498 }
3499 
3500 
3524  uct_tag_context_t *ctx,
3525  int force)
3526 {
3527  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3528 }
3529 
3530 
3549 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3550 {
3551  iface->ops.iface_progress_enable(iface, flags);
3552 }
3553 
3554 
3574 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3575 {
3576  iface->ops.iface_progress_disable(iface, flags);
3577 }
3578 
3579 
3584 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3585 {
3586  return iface->ops.iface_progress(iface);
3587 }
3588 
3589 
3613  const uct_cm_config_t *config, uct_cm_h *cm_p);
3614 
3615 
3622 void uct_cm_close(uct_cm_h cm);
3623 
3624 
3636 
3637 
3655  const char *env_prefix, const char *filename,
3656  uct_cm_config_t **config_p);
3657 
3658 
3672 
3673 
3692 ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3693  socklen_t socklen,
3694  const uct_listener_params_t *params,
3695  uct_listener_h *listener_p);
3696 
3697 
3704 void uct_listener_destroy(uct_listener_h listener);
3705 
3706 
3723  uct_conn_request_h conn_request);
3724 
3725 
3739  uct_listener_attr_t *listener_attr);
3740 
3741 
3749 static UCS_F_ALWAYS_INLINE
3751 {
3752  if (ucs_unlikely(status != UCS_OK) && (comp->status == UCS_OK)) {
3753  /* store first failure status */
3754  comp->status = status;
3755  }
3756 }
3757 
3758 
3764 END_C_DECLS
3765 
3766 #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:879
Definition: uct.h:843
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:3367
Definition: uct.h:838
uct_progress_types
UCT progress types.
Definition: uct.h:564
Definition: uct.h:517
Definition: uct.h:864
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:828
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:3771
Definition: uct.h:935
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:307
Definition: uct.h:762
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:800
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:3415
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:3121
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:642
Structure for scatter-gather I/O.
Definition: uct_def.h:147
uct_component_attr_field
UCT component attributes field mask.
Definition: uct.h:229
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
Definition: uct.h:968
Definition: uct.h:703
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:577
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:3208
Definition: uct.h:754
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:497
Definition: uct.h:654
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:3321
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:3244
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
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:2471
Definition: uct.h:310
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:3544
Definition: uct.h:962
Definition: uct.h:293
Definition: uct.h:650
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:863
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
Parameters used for interface creation.
Definition: uct.h:1182
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:2913
Memory domain resource descriptor.
Definition: uct.h:217
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:2466
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:905
UCT component attributes.
Definition: uct.h:244
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:1812
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
Definition: uct.h:309
uct_cb_flags
Callback flags.
Definition: uct.h:600
Definition: uct.h:2468
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:892
Definition: uct.h:744
Definition: uct.h:711
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:2854
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:1476
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:3097
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:3133
Interface attributes: capabilities and limitations.
Definition: uct.h:1046
Definition: uct.h:812
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:2865
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:3026
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:2926
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:567
Definition: uct.h:947
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:2821
Definition: uct.h:529
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:2976
Definition: uct.h:1562
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:3595
Definition: uct.h:749
struct uct_iface_addr uct_iface_addr_t
Definition: uct_def.h:99
uint64_t field_mask
Definition: uct.h:251
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:519
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:929
Definition: uct.h:311
Definition: uct.h:308
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:924
Definition: uct.h:783
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:3291
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:2989
Remote key with its type.
Definition: uct.h:1701
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:3446
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:330
Memory domain attributes.
Definition: uct.h:1599
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:299
Definition: uct.h:658
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:218
Definition: uct.h:772
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:3082
Definition: uct.h:806
ucs_status_t
Status codes.
Definition: status.h:45
Definition: uct.h:601
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:833
Definition: uct.h:533
Definition: uct.h:312
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:626
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:790
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition: uct.h:1496
Definition: uct.h:714
Definition: uct.h:496
Definition: uct.h:938
Definition: uct.h:2480
Definition: uct.h:1007
uint64_t flags
Definition: uct.h:277
Definition: uct.h:565
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:1456
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:647
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
Definition: uct.h:738
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:501
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:3570
Definition: uct.h:233
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:3159
uct_iface_feature
UCT interface configuration features.
Definition: uct.h:1002
Definition: uct.h:728
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:3037
uct_flush_flags
Flush modifiers.
Definition: uct.h:528
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:1560
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:493
Definition: uct.h:1022
Definition: status.h:47
uint64_t uct_tag_t
Definition: uct_def.h:110
Definition: uct.h:767
Definition: uct.h:494
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:1432
Parameters for allocating memory using uct_mem_alloc.
Definition: uct.h:2488
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:778
Definition: uct.h:602
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:2840
ucs_status_t status
Definition: uct.h:1729
uct_ep_connect_params_field
UCT endpoint connected by uct_ep_connect parameters field mask.
Definition: uct.h:985
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
Definition: uct.h:1010
unsigned md_resource_count
Definition: uct.h:257
Definition: uct.h:1568
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:3471
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:624
Definition: uct.h:926
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:3189
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:566
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:1293
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:710
Definition: uct.h:950
Definition: uct.h:1581
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:1013
Definition: uct.h:1016
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:1532
Definition: uct.h:578
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:645
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:1004
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:818
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
Definition: uct.h:2477
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:499
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:3263
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:865
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
Definition: uct.h:498
Communication resource descriptor.
Definition: uct.h:327
Pending request.
Definition: uct.h:1742
uct_md_resource_desc_t * md_resources
Definition: uct.h:272
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:1036
unsigned uct_worker_progress(uct_worker_h worker)
Explicit progress for UCT worker.
Definition: uct.h:2787
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
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:881
Definition: uct.h:230
Definition: uct.h:1025
Definition: types.h:137
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:548
Definition: uct.h:852
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:1755
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
Completion handle.
Definition: uct.h:1726
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:2876
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:2937
Definition: uct.h:823
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:98
Definition: uct.h:584
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:3605
ucs_sys_device_t sys_device
Definition: uct.h:332
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:3511
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:518
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:500
Definition: uct.h:795
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:3145
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:3109
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:516
Definition: uct.h:1019
Definition: uct.h:733
Describes a memory allocated by UCT.
Definition: uct.h:1684
Definition: uct.h:932