UCX  1.10
Unified Communication X
uct.h
1 
11 #ifndef UCT_H_
12 #define UCT_H_
13 
14 #include <uct/api/uct_def.h>
15 #include <uct/api/tl.h>
16 #include <uct/api/version.h>
17 #include <ucs/async/async_fwd.h>
18 #include <ucs/datastruct/callbackq.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.h>
27 
28 #include <sys/socket.h>
29 #include <stdio.h>
30 #include <sched.h>
31 
32 BEGIN_C_DECLS
33 
214 typedef struct uct_md_resource_desc {
215  char md_name[UCT_MD_NAME_MAX];
217 
218 
231 };
232 
233 
241 typedef struct uct_component_attr {
248  uint64_t field_mask;
249 
251  char name[UCT_COMPONENT_NAME_MAX];
252 
255 
270 
274  uint64_t flags;
276 
277 
285 enum {
291 };
292 
293 
298 typedef enum {
305 
306 
318 typedef struct uct_tl_resource_desc {
319  char tl_name[UCT_TL_NAME_MAX];
320  char dev_name[UCT_DEVICE_NAME_MAX];
323  ucs_sys_device_t sys_device;
326 
327 #define UCT_TL_RESOURCE_DESC_FMT "%s/%s"
328 #define UCT_TL_RESOURCE_DESC_ARG(_resource) (_resource)->tl_name, (_resource)->dev_name
329 
330 
338 typedef enum uct_atomic_op {
339  UCT_ATOMIC_OP_ADD,
340  UCT_ATOMIC_OP_AND,
341  UCT_ATOMIC_OP_OR,
342  UCT_ATOMIC_OP_XOR,
343  UCT_ATOMIC_OP_SWAP,
344  UCT_ATOMIC_OP_CSWAP,
345  UCT_ATOMIC_OP_LAST
346 } uct_atomic_op_t;
347 
348 
359  /* Active message capabilities */
360 #define UCT_IFACE_FLAG_AM_SHORT UCS_BIT(0)
361 #define UCT_IFACE_FLAG_AM_BCOPY UCS_BIT(1)
362 #define UCT_IFACE_FLAG_AM_ZCOPY UCS_BIT(2)
364 #define UCT_IFACE_FLAG_PENDING UCS_BIT(3)
366  /* PUT capabilities */
367 #define UCT_IFACE_FLAG_PUT_SHORT UCS_BIT(4)
368 #define UCT_IFACE_FLAG_PUT_BCOPY UCS_BIT(5)
369 #define UCT_IFACE_FLAG_PUT_ZCOPY UCS_BIT(6)
371  /* GET capabilities */
372 #define UCT_IFACE_FLAG_GET_SHORT UCS_BIT(8)
373 #define UCT_IFACE_FLAG_GET_BCOPY UCS_BIT(9)
374 #define UCT_IFACE_FLAG_GET_ZCOPY UCS_BIT(10)
376  /* Atomic operations domain */
377 #define UCT_IFACE_FLAG_ATOMIC_CPU UCS_BIT(30)
379 #define UCT_IFACE_FLAG_ATOMIC_DEVICE UCS_BIT(31)
383  /* Error handling capabilities */
384 #define UCT_IFACE_FLAG_ERRHANDLE_SHORT_BUF UCS_BIT(32)
385 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_BUF UCS_BIT(33)
386 #define UCT_IFACE_FLAG_ERRHANDLE_ZCOPY_BUF UCS_BIT(34)
387 #define UCT_IFACE_FLAG_ERRHANDLE_AM_ID UCS_BIT(35)
388 #define UCT_IFACE_FLAG_ERRHANDLE_REMOTE_MEM UCS_BIT(36)
389 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_LEN UCS_BIT(37)
390 #define UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE UCS_BIT(38)
392 #define UCT_IFACE_FLAG_EP_CHECK UCS_BIT(39)
394  /* Connection establishment */
395 #define UCT_IFACE_FLAG_CONNECT_TO_IFACE UCS_BIT(40)
396 #define UCT_IFACE_FLAG_CONNECT_TO_EP UCS_BIT(41)
397 #define UCT_IFACE_FLAG_CONNECT_TO_SOCKADDR UCS_BIT(42)
399  /* Special transport flags */
400 #define UCT_IFACE_FLAG_AM_DUP UCS_BIT(43)
404  /* Callback invocation */
405 #define UCT_IFACE_FLAG_CB_SYNC UCS_BIT(44)
408 #define UCT_IFACE_FLAG_CB_ASYNC UCS_BIT(45)
415  /* Keepalive */
416 #define UCT_IFACE_FLAG_EP_KEEPALIVE UCS_BIT(46)
422  /* Tag matching operations */
423 #define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
424 #define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
425 #define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
426 #define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
442  /* Event types */
443 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(0)
445 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(1)
447 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(2)
449  /* Event notification mechanisms */
450 #define UCT_IFACE_FLAG_EVENT_FD UCS_BIT(3)
452 #define UCT_IFACE_FLAG_EVENT_ASYNC_CB UCS_BIT(4)
463 typedef enum {
473 
474 
487  UCT_EVENT_SEND_COMP = UCS_BIT(0),
488  UCT_EVENT_RECV = UCS_BIT(1),
489  UCT_EVENT_RECV_SIG = UCS_BIT(2)
491 };
493 
498 enum uct_flush_flags {
503  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0)
518 };
525 enum uct_progress_types {
526  UCT_PROGRESS_SEND = UCS_BIT(0),
527  UCT_PROGRESS_RECV = UCS_BIT(1),
528  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
531 };
532 
533 
538 enum uct_msg_flags {
539  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0)
544 };
545 
553 enum uct_cb_flags {
554  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
555  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
570 };
571 
572 
577 enum uct_iface_open_mode {
579  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
580 
584 
588 };
589 
590 
601 
603  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
607  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
611  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
612 
615 
618 
627 
630 
633 
636 
639 
642 
645 
648 };
649 
654 typedef enum {
663 
668 enum {
669  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
670  UCT_MD_FLAG_REG = UCS_BIT(1),
671  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
673  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
676  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
677  UCT_MD_FLAG_FIXED = UCS_BIT(5),
679  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
682  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7)
685 };
686 
697  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
699  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
708  /* memory access flags */
709  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
710  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
711  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
721 
727 };
728 
729 
734 typedef enum {
735  UCT_MADV_NORMAL = 0,
741 
742 
750 enum uct_cm_attr_field {
753 };
754 
766 };
767 
768 
779 
782 
785 };
787 
795 enum uct_ep_params_field {
798 
800  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
801 
803  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
804 
806  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
807 
809  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
810 
813 
818  UCT_EP_PARAM_FIELD_CM = UCS_BIT(7),
819 
822 
825 
828 
831 
834 };
835 
837 /*
838  * @ingroup UCT_RESOURCE
839  * @brief Process Per Node (PPN) bandwidth specification: f(ppn) = dedicated + shared / ppn
840  *
841  * This structure specifies a function which is used as basis for bandwidth
842  * estimation of various UCT operations. This information can be used to select
843  * the best performing combination of UCT operations.
844  */
845 typedef struct uct_ppn_bandwidth {
846  double dedicated;
847  double shared;
849 
850 
855 struct uct_iface_attr {
856  struct {
857  struct {
858  size_t max_short;
859  size_t max_bcopy;
860  size_t min_zcopy;
863  size_t max_zcopy;
866  size_t opt_zcopy_align;
868  size_t align_mtu;
869  size_t max_iov;
872  } put;
874  struct {
875  size_t max_short;
876  size_t max_bcopy;
877  size_t min_zcopy;
880  size_t max_zcopy;
883  size_t opt_zcopy_align;
885  size_t align_mtu;
886  size_t max_iov;
889  } get;
891  struct {
892  size_t max_short;
893  size_t max_bcopy;
894  size_t min_zcopy;
897  size_t max_zcopy;
900  size_t opt_zcopy_align;
902  size_t align_mtu;
903  size_t max_hdr;
904  size_t max_iov;
907  } am;
909  struct {
910  struct {
911  size_t min_recv;
912  size_t max_zcopy;
914  size_t max_iov;
917  size_t max_outstanding;
919  } recv;
920 
921  struct {
922  size_t max_short;
924  size_t max_bcopy;
926  size_t max_zcopy;
928  size_t max_iov;
930  } eager;
932  struct {
933  size_t max_zcopy;
935  size_t max_hdr;
938  size_t max_iov;
940  } rndv;
941  } tag;
943  struct {
944  uint64_t op_flags;
945  uint64_t fop_flags;
946  } atomic32, atomic64;
948  uint64_t flags;
949  uint64_t event_flags;
950  } cap;
952  size_t device_addr_len;
953  size_t iface_addr_len;
954  size_t ep_addr_len;
955  size_t max_conn_priv;
958  struct sockaddr_storage listen_sockaddr;
960  /*
961  * The following fields define expected performance of the communication
962  * interface, this would usually be a combination of device and system
963  * characteristics and determined at run time.
964  */
965  double overhead;
967  ucs_linear_func_t latency;
969  uint8_t priority;
970  size_t max_num_eps;
971  unsigned dev_num_paths;
980 };
981 
982 
994  uint64_t field_mask;
996  ucs_cpu_set_t cpu_mask;
998  uint64_t open_mode;
1000  union {
1007  struct {
1008  const char *tl_name;
1009  const char *dev_name;
1010  } device;
1018  struct {
1019  ucs_sock_addr_t listen_sockaddr;
1021  void *conn_request_arg;
1023  uct_sockaddr_conn_request_callback_t conn_request_cb;
1026  uint32_t cb_flags;
1027  } sockaddr;
1028  } mode;
1029 
1032  ucs_stats_node_t *stats_root;
1034  size_t rx_headroom;
1035 
1037  void *err_handler_arg;
1042  uint32_t err_handler_flags;
1043 
1045  void *eager_arg;
1048  void *rndv_arg;
1051 
1052  void *async_event_arg;
1059  /* Time period between keepalive rounds */
1061 };
1062 
1074  uint64_t field_mask;
1075 
1085  void *user_data;
1086 
1092  const uct_device_addr_t *dev_addr;
1093 
1100 
1108  const ucs_sock_addr_t *sockaddr;
1109 
1115  uint32_t sockaddr_cb_flags;
1116 
1126 
1131  uct_cm_h cm;
1132 
1141 
1147 
1153 
1158 
1163  unsigned path_index;
1164 };
1165 
1166 
1171 struct uct_cm_attr {
1177  uint64_t field_mask;
1183  size_t max_conn_priv;
1184 };
1185 
1186 
1191 struct uct_listener_attr {
1197  uint64_t field_mask;
1202  struct sockaddr_storage sockaddr;
1203 };
1205 
1211 struct uct_listener_params {
1217  uint64_t field_mask;
1224  int backlog;
1225 
1230 
1234  void *user_data;
1235 };
1236 
1237 
1247 struct uct_md_attr {
1248  struct {
1249  size_t max_alloc;
1250  size_t max_reg;
1251  uint64_t flags;
1252  uint64_t reg_mem_types;
1253  uint64_t detect_mem_types;
1254  uint64_t alloc_mem_types;
1255  uint64_t access_mem_types;
1256  } cap;
1257 
1258  ucs_linear_func_t reg_cost;
1262  char component_name[UCT_COMPONENT_NAME_MAX];
1263  size_t rkey_packed_size;
1264  ucs_cpu_set_t local_cpus;
1265 };
1266 
1267 
1275 enum uct_md_mem_attr_field {
1276  UCT_MD_MEM_ATTR_FIELD_MEM_TYPE = UCS_BIT(0),
1278  UCT_MD_MEM_ATTR_FIELD_SYS_DEV = UCS_BIT(1)
1282 };
1293 typedef struct uct_md_mem_attr {
1301  uint64_t field_mask;
1302 
1307 
1311  ucs_sys_device_t sys_dev;
1313 
1334 ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, const size_t length,
1335  uct_md_mem_attr_t *mem_attr);
1336 
1337 
1346 typedef struct uct_allocated_memory {
1347  void *address;
1348  size_t length;
1351  uct_md_h md;
1352  uct_mem_h memh;
1354 
1355 
1363 typedef struct uct_rkey_bundle {
1364  uct_rkey_t rkey;
1365  void *handle;
1366  void *type;
1388 struct uct_completion {
1390  int count;
1394 };
1395 
1396 
1404 struct uct_pending_req {
1406  char priv[UCT_PENDING_REQ_PRIV_LEN];
1407 };
1408 
1417 struct uct_tag_context {
1424  void (*tag_consumed_cb)(uct_tag_context_t *self);
1445  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1446  size_t length, void *inline_data, ucs_status_t status);
1447 
1460  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1461  unsigned header_length, ucs_status_t status, unsigned flags);
1462 
1464  char priv[UCT_TAG_PRIV_LEN];
1465 };
1467 
1472 enum {
1473  /* If set, header points to inline data, otherwise it is user buffer. */
1474  UCT_TAG_RECV_CB_INLINE_DATA = UCS_BIT(0)
1475 };
1476 
1477 
1478 extern const char *uct_alloc_method_names[];
1479 
1480 
1495  unsigned *num_components_p);
1496 
1507 
1508 
1522  uct_component_attr_t *component_attr);
1523 
1524 
1544 ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1545  const uct_md_config_t *config, uct_md_h *md_p);
1546 
1553 void uct_md_close(uct_md_h md);
1554 
1555 
1571  uct_tl_resource_desc_t **resources_p,
1572  unsigned *num_resources_p);
1573 
1574 
1585 
1586 
1601 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1602  ucs_thread_mode_t thread_mode,
1603  uct_worker_h *worker_p);
1604 
1605 
1612 void uct_worker_destroy(uct_worker_h worker);
1613 
1614 
1638 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
1639  void *arg, unsigned flags,
1640  uct_worker_cb_id_t *id_p);
1641 
1642 
1664  uct_worker_cb_id_t *id_p);
1665 
1666 
1694 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
1695  const char *env_prefix, const char *filename,
1696  uct_iface_config_t **config_p);
1697 
1698 
1706 void uct_config_release(void *config);
1707 
1708 
1724 ucs_status_t uct_config_get(void *config, const char *name, char *value,
1725  size_t max);
1726 
1727 
1740 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
1741 
1742 
1759  const uct_iface_params_t *params,
1760  const uct_iface_config_t *config,
1761  uct_iface_h *iface_p);
1762 
1763 
1770 void uct_iface_close(uct_iface_h iface);
1771 
1772 
1781 
1782 
1795 
1796 
1808 
1809 
1828 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
1829  const uct_iface_addr_t *iface_addr);
1830 
1831 
1849 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
1850  uct_completion_t *comp);
1851 
1852 
1866 
1867 
1887 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
1888 
1889 
1905 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
1906  const char *name, uct_allocated_memory_t *mem);
1907 
1908 
1916 
1917 
1936  uct_am_callback_t cb, void *arg, uint32_t flags);
1937 
1938 
1953  void *arg);
1954 
1955 
1968  uct_conn_request_h conn_request);
1969 
1970 
1984  uct_conn_request_h conn_request);
1985 
1986 
2021 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
2022 
2023 
2056 ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags);
2057 
2058 
2065 void uct_ep_destroy(uct_ep_h ep);
2066 
2067 
2077 
2078 
2090  const uct_ep_addr_t *ep_addr);
2091 
2092 
2101 
2102 
2110 typedef enum {
2112  UCT_MEM_ALLOC_PARAM_FIELD_FLAGS = UCS_BIT(0),
2113 
2115  UCT_MEM_ALLOC_PARAM_FIELD_ADDRESS = UCS_BIT(1),
2116 
2119 
2121  UCT_MEM_ALLOC_PARAM_FIELD_MDS = UCS_BIT(3),
2122 
2124  UCT_MEM_ALLOC_PARAM_FIELD_NAME = UCS_BIT(4)
2126 
2127 
2132 typedef struct {
2138  uint64_t field_mask;
2146  unsigned flags;
2147 
2158  void *address;
2163  ucs_memory_type_t mem_type;
2164 
2165  struct {
2170  const uct_md_h *mds;
2171 
2177  unsigned count;
2178  } mds;
2186  const char *name;
2188 
2189 
2208  size_t length, uct_mem_advice_t advice);
2209 
2210 
2224 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2225  unsigned flags, uct_mem_h *memh_p);
2226 
2227 
2236 
2237 
2251 ucs_status_t uct_md_detect_memory_type(uct_md_h md, const void *addr,
2252  size_t length,
2253  ucs_memory_type_t *mem_type_p);
2254 
2255 
2280 ucs_status_t uct_mem_alloc(size_t length, const uct_alloc_method_t *methods,
2281  unsigned num_methods,
2282  const uct_mem_alloc_params_t *params,
2283  uct_allocated_memory_t *mem);
2284 
2285 
2296 
2312  const char *env_prefix, const char *filename,
2313  uct_md_config_t **config_p);
2314 
2315 
2316 
2339 
2340 
2352 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
2353 
2354 
2374 ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2375  uct_rkey_bundle_t *rkey_ob);
2376 
2377 
2404  uint64_t remote_addr, void **addr_p);
2405 
2406 
2416  const uct_rkey_bundle_t *rkey_ob);
2417 
2418 
2433 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2434 {
2435  return ucs_callbackq_dispatch(&worker->progress_q);
2436 }
2437 
2438 
2467 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2468  uct_completion_t *comp)
2469 {
2470  return iface->ops.iface_flush(iface, flags, comp);
2471 }
2472 
2486 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2487 {
2488  return iface->ops.iface_fence(iface, flags);
2489 }
2490 
2500 UCT_INLINE_API void uct_iface_release_desc(void *desc)
2501 {
2502  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2503  release_desc->cb(release_desc, desc);
2504 }
2505 
2506 
2511 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2512  uint64_t remote_addr, uct_rkey_t rkey)
2513 {
2514  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2515 }
2516 
2517 
2522 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2523  void *arg, uint64_t remote_addr,
2524  uct_rkey_t rkey)
2525 {
2526  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2527 }
2528 
2529 
2559 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
2560  const uct_iov_t *iov, size_t iovcnt,
2561  uint64_t remote_addr, uct_rkey_t rkey,
2562  uct_completion_t *comp)
2563 {
2564  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2565 }
2566 
2567 
2572 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2573  uint64_t remote_addr, uct_rkey_t rkey)
2574 {
2575  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2576 }
2577 
2578 
2583 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
2584  void *arg, size_t length,
2585  uint64_t remote_addr, uct_rkey_t rkey,
2586  uct_completion_t *comp)
2587 {
2588  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2589  rkey, comp);
2590 }
2591 
2592 
2622 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
2623  const uct_iov_t *iov, size_t iovcnt,
2624  uint64_t remote_addr, uct_rkey_t rkey,
2625  uct_completion_t *comp)
2626 {
2627  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2628 }
2629 
2630 
2635 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
2636  const void *payload, unsigned length)
2637 {
2638  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
2639 }
2640 
2641 
2646 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
2647  uct_pack_callback_t pack_cb, void *arg,
2648  unsigned flags)
2649 {
2650  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
2651 }
2652 
2653 
2691 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
2692  const void *header,
2693  unsigned header_length,
2694  const uct_iov_t *iov, size_t iovcnt,
2695  unsigned flags,
2696  uct_completion_t *comp)
2697 {
2698  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
2699  flags, comp);
2700 }
2701 
2706 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
2707  uint64_t remote_addr, uct_rkey_t rkey,
2708  uint64_t *result, uct_completion_t *comp)
2709 {
2710  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
2711 }
2713 
2718 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
2719  uint64_t remote_addr, uct_rkey_t rkey,
2720  uint32_t *result, uct_completion_t *comp)
2721 {
2722  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
2723 }
2724 
2725 
2730 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
2731  uint32_t value, uint64_t remote_addr,
2732  uct_rkey_t rkey)
2733 {
2734  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
2735 }
2736 
2737 
2742 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
2743  uint64_t value, uint64_t remote_addr,
2744  uct_rkey_t rkey)
2745 {
2746  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
2747 }
2748 
2749 
2754 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2755  uint32_t value, uint32_t *result,
2756  uint64_t remote_addr, uct_rkey_t rkey,
2757  uct_completion_t *comp)
2758 {
2759  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
2760  remote_addr, rkey, comp);
2761 }
2762 
2768 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2769  uint64_t value, uint64_t *result,
2770  uint64_t remote_addr, uct_rkey_t rkey,
2771  uct_completion_t *comp)
2772 {
2773  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
2774  remote_addr, rkey, comp);
2776 
2777 
2798 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
2799  uct_pending_req_t *req,
2800  unsigned flags)
2801 {
2802  return ep->iface->ops.ep_pending_add(ep, req, flags);
2803 }
2804 
2805 
2817 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
2819  void *arg)
2820 {
2821  ep->iface->ops.ep_pending_purge(ep, cb, arg);
2822 }
2823 
2824 
2853 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
2854  uct_completion_t *comp)
2855 {
2856  return ep->iface->ops.ep_flush(ep, flags, comp);
2857 }
2858 
2859 
2872 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
2873 {
2874  return ep->iface->ops.ep_fence(ep, flags);
2875 }
2876 
2877 
2900 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
2901  const void *data, size_t length)
2902 {
2903  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
2904 }
2905 
2906 
2930 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
2931  uint64_t imm,
2932  uct_pack_callback_t pack_cb,
2933  void *arg, unsigned flags)
2934 {
2935  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
2936 }
2937 
2938 
2976 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
2977  uint64_t imm,
2978  const uct_iov_t *iov,
2979  size_t iovcnt,
2980  unsigned flags,
2981  uct_completion_t *comp)
2982 {
2983  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
2984  comp);
2985 }
2986 
2987 
3025  const void *header,
3026  unsigned header_length,
3027  const uct_iov_t *iov,
3028  size_t iovcnt,
3029  unsigned flags,
3030  uct_completion_t *comp)
3031 {
3032  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
3033  iov, iovcnt, flags, comp);
3034 }
3035 
3036 
3055 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
3056 {
3057  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
3058 }
3059 
3060 
3081  const void* header,
3082  unsigned header_length,
3083  unsigned flags)
3084 {
3085  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
3086  flags);
3087 }
3088 
3089 
3121  uct_tag_t tag,
3122  uct_tag_t tag_mask,
3123  const uct_iov_t *iov,
3124  size_t iovcnt,
3125  uct_tag_context_t *ctx)
3126 {
3127  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3128 }
3129 
3130 
3154  uct_tag_context_t *ctx,
3155  int force)
3156 {
3157  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3158 }
3159 
3160 
3179 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3180 {
3181  iface->ops.iface_progress_enable(iface, flags);
3182 }
3183 
3184 
3204 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3205 {
3206  iface->ops.iface_progress_disable(iface, flags);
3207 }
3208 
3209 
3214 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3215 {
3216  return iface->ops.iface_progress(iface);
3217 }
3218 
3219 
3243  const uct_cm_config_t *config, uct_cm_h *cm_p);
3244 
3245 
3252 void uct_cm_close(uct_cm_h cm);
3253 
3254 
3266 
3267 
3285  const char *env_prefix, const char *filename,
3286  uct_cm_config_t **config_p);
3287 
3288 
3302 
3303 
3322 ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3323  socklen_t socklen,
3324  const uct_listener_params_t *params,
3325  uct_listener_h *listener_p);
3326 
3327 
3334 void uct_listener_destroy(uct_listener_h listener);
3335 
3336 
3353  uct_conn_request_h conn_request);
3354 
3355 
3369  uct_listener_attr_t *listener_attr);
3370 
3371 
3379 static UCS_F_ALWAYS_INLINE
3381 {
3382  if (ucs_unlikely(status != UCS_OK) && (comp->status == UCS_OK)) {
3383  /* store first failure status */
3384  comp->status = status;
3385  }
3386 }
3387 
3388 
3394 END_C_DECLS
3395 
3396 #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:771
uct_tag_unexp_rndv_cb_t rndv_cb
Definition: uct.h:1071
Definition: uct.h:737
size_t max_conn_priv
Definition: uct.h:1204
void * async_event_arg
Definition: uct.h:1073
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:2997
Definition: uct.h:734
uct_progress_types
UCT progress types.
Definition: uct.h:546
Definition: uct.h:508
Definition: uct.h:756
uct_error_handler_t err_handler
Definition: uct.h:1060
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:732
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:3401
uct_async_event_cb_t async_event_cb
Definition: uct.h:1078
Definition: uct.h:827
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:811
void uct_config_release(void *config)
Release configuration memory returned from uct_md_iface_config_read(), uct_md_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:298
Definition: uct.h:700
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:718
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:3045
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:2751
ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events)
Turn on event notification for the next event.
ucs_cpu_set_t local_cpus
Definition: uct.h:1285
void * uct_mem_h
Definition: uct_def.h:82
int count
Definition: uct.h:1411
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:579
Structure for scatter-gather I/O.
Definition: uct_def.h:143
uct_component_attr_field
UCT component attributes field mask.
Definition: uct.h:226
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
void * type
Definition: uct.h:1387
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:559
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:2838
Definition: uct.h:698
void(* rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header, unsigned header_length, ucs_status_t status, unsigned flags)
Definition: uct.h:1481
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:488
Definition: uct.h:628
union uct_iface_params::@16 mode
ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag, uint64_t imm, uct_pack_callback_t pack_cb, void *arg, unsigned flags)
Bcopy eager tagged-send operation.
Definition: uct.h:2951
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:2874
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:680
uct_cm_ep_client_connect_callback_t sockaddr_cb_client
Definition: uct.h:1167
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:2136
Definition: uct.h:301
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:3174
struct uct_md_attr::@19 cap
Definition: uct.h:854
Definition: uct.h:290
int backlog
Definition: uct.h:1245
Definition: uct.h:624
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:755
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
Parameters used for interface creation.
Definition: uct.h:1011
struct uct_md_config uct_md_config_t
Definition: uct_def.h:79
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:2580
uint64_t field_mask
Definition: uct.h:1095
Memory domain resource descriptor.
Definition: uct.h:214
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:523
uct_mem_alloc_params_field_t
UCT allocation parameters specification field mask.
Definition: uct.h:2131
size_t iface_addr_len
Definition: uct.h:974
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:101
uct_listener_params_field
UCT listener created by uct_listener_create parameters field mask.
Definition: uct.h:797
uint64_t field_mask
Definition: uct.h:1322
void * address
Definition: uct.h:1368
const uct_device_addr_t * dev_addr
Definition: uct.h:1113
UCT component attributes.
Definition: uct.h:241
Definition: uct.h:1495
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
double dedicated
Definition: uct.h:867
Definition: uct.h:300
uct_cb_flags
Callback flags.
Definition: uct.h:574
Definition: uct.h:2133
uint64_t field_mask
Definition: uct.h:1218
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:604
uct_listener_attr_field
UCT listener attributes field mask.
Definition: uct.h:784
Definition: uct.h:694
Definition: uct.h:676
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:634
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:2521
uct_alloc_method_t method
Definition: uct.h:1370
ucs_linear_func_t reg_cost
Definition: uct.h:1279
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:1212
struct uct_worker * uct_worker_h
Definition: uct_def.h:92
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:2727
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:2763
Interface attributes: capabilities and limitations.
Definition: uct.h:876
Definition: uct.h:724
int uct_worker_cb_id_t
Definition: uct_def.h:107
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:2532
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:511
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:2593
ucs_status_t uct_worker_create(ucs_async_context_t *async, ucs_thread_mode_t thread_mode, uct_worker_h *worker_p)
Create a worker object.
ucs_status_t uct_ep_get_address(uct_ep_h ep, uct_ep_addr_t *addr)
Get endpoint address.
double overhead
Definition: uct.h:986
Definition: uct.h:549
ucs_linear_func_t latency
Definition: uct.h:988
ucs_cpu_set_t cpu_mask
Definition: uct.h:1017
Definition: uct.h:839
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:2488
Definition: uct.h:520
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:2643
Definition: uct.h:1297
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:3225
Definition: uct.h:697
char name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:251
struct uct_iface_addr uct_iface_addr_t
Definition: uct_def.h:96
uint64_t field_mask
Definition: uct.h:248
ucs_thread_mode_t
Thread sharing mode.
Definition: thread_mode.h:19
void(* uct_completion_callback_t)(uct_completion_t *self)
Callback to process send completion.
Definition: uct_def.h:476
Definition: uct.h:510
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:80
struct uct_ep_addr uct_ep_addr_t
Definition: uct_def.h:97
Definition: uct.h:821
ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, const size_t length, uct_md_mem_attr_t *mem_attr)
Query attributes of a given pointer.
Definition: uct.h:302
Definition: uct.h:299
struct uct_md * uct_md_h
Memory domain handler.
Definition: uct_def.h:84
uct_ep_params_field
UCT endpoint created by uct_ep_create parameters field mask.
Definition: uct.h:816
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:2921
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:2656
uct_cm_ep_server_conn_notify_callback_t sockaddr_cb_server
Definition: uct.h:1173
Remote key with its type.
Definition: uct.h:1384
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:796
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition: uct.h:3076
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:321
Memory domain attributes.
Definition: uct.h:1314
uint8_t priority
Definition: uct.h:990
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:535
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:632
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:215
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:2712
char tl_name[UCT_TL_NAME_MAX]
Definition: uct.h:319
Definition: uct.h:720
uct_iface_h iface
Definition: uct.h:1101
ucs_status_t
Status codes.
Definition: status.h:45
char component_name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:1283
Definition: uct.h:575
void uct_worker_progress_unregister_safe(uct_worker_h worker, uct_worker_cb_id_t *id_p)
Remove a slow path callback function from worker's progress.
Definition: uct.h:733
Definition: uct.h:524
Definition: uct.h:303
void * user_data
Definition: uct.h:1106
ucs_status_t uct_iface_open(uct_md_h md, uct_worker_h worker, const uct_iface_params_t *params, const uct_iface_config_t *config, uct_iface_h *iface_p)
Open a communication interface.
size_t length
Definition: uct.h:1369
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:600
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:712
double shared
Definition: uct.h:868
void * err_handler_arg
Definition: uct.h:1058
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition: uct.h:1232
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition: uct.h:1427
Definition: uct.h:679
Definition: uct.h:487
Definition: uct.h:830
Definition: uct.h:2145
uint64_t flags
Definition: uct.h:274
Definition: uct.h:547
ucs_status_t uct_cm_client_ep_conn_notify(uct_ep_h ep)
Notify the server about client-side connection establishment.
uct_cm_h cm
Definition: uct.h:1152
Connection manager attributes, capabilities and limitations.
Definition: uct.h:1192
struct uct_listener * uct_listener_h
Definition: uct_def.h:103
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:621
ucs_memory_type_t mem_type
Definition: uct.h:1327
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
Definition: uct.h:692
void * user_data
Definition: uct.h:1255
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition: uct_def.h:548
Definition: uct.h:492
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:3200
struct sockaddr_storage listen_sockaddr
Definition: uct.h:979
uct_ppn_bandwidth_t bandwidth
Definition: uct.h:987
Definition: uct.h:230
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:2789
ucs_memory_type_t mem_type
Definition: uct.h:1371
Definition: uct.h:690
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:2667
uct_flush_flags
Flush modifiers.
Definition: uct.h:519
struct uct_component * uct_component_h
Definition: uct_def.h:76
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:1296
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:484
Definition: status.h:47
uint64_t uct_tag_t
Definition: uct_def.h:106
Definition: uct.h:703
Definition: uct.h:485
struct uct_iface_config uct_iface_config_t
Definition: uct_def.h:78
ucs_status_t uct_rkey_release(uct_component_h component, const uct_rkey_bundle_t *rkey_ob)
Release a remote key.
const ucs_sock_addr_t * sockaddr
Definition: uct.h:1129
unsigned dev_num_paths
Definition: uct.h:992
ucs_status_t uct_config_modify(void *config, const char *name, const char *value)
Modify interface configuration (uct_iface_config_t), memory domain configuration (uct_md_config_t) or...
uct_pending_callback_t func
Definition: uct.h:1426
uint64_t open_mode
Definition: uct.h:1019
Parameters for allocating memory using uct_mem_alloc.
Definition: uct.h:2153
ucs_sys_device_t sys_dev
Definition: uct.h:1332
uint64_t field_mask
Definition: uct.h:1198
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:576
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:2507
ucs_status_t status
Definition: uct.h:1412
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's private data in a client-server flow.
Definition: uct_def.h:708
uint32_t sockaddr_cb_flags
Definition: uct.h:1136
unsigned md_resource_count
Definition: uct.h:254
Definition: uct.h:1299
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:3101
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:598
Definition: uct.h:818
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:2819
size_t device_addr_len
Definition: uct.h:973
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:548
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:1089
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
uct_ep_disconnect_cb_t disconnect_cb
Definition: uct.h:1178
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:675
Definition: uct.h:842
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.
ucs_stats_node_t * stats_root
Definition: uct.h:1053
struct uct_iface_attr::@7 cap
ucs_status_t uct_cm_config_read(uct_component_h component, const char *env_prefix, const char *filename, uct_cm_config_t **config_p)
Read the configuration for a connection manager.
Memory domain attributes.
Definition: uct.h:1268
Definition: uct.h:560
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:619
uct_completion_callback_t func
Definition: uct.h:1410
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:108
size_t ep_addr_len
Definition: uct.h:975
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:730
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
Definition: uct.h:2142
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:490
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:2893
uct_mem_h memh
Definition: uct.h:1373
size_t rx_headroom
Definition: uct.h:1055
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition: uct.h:1445
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:757
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:464
ucs_status_t(* uct_pending_callback_t)(uct_pending_req_t *self)
Callback to process pending requests.
Definition: uct_def.h:493
uct_cm_listener_conn_request_callback_t conn_request_cb
Definition: uct.h:1250
Definition: uct.h:489
size_t rkey_packed_size
Definition: uct.h:1284
Communication resource descriptor.
Definition: uct.h:318
Pending request.
Definition: uct.h:1425
uct_md_resource_desc_t * md_resources
Definition: uct.h:269
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:866
unsigned uct_worker_progress(uct_worker_h worker)
Explicit progress for UCT worker.
Definition: uct.h:2454
uct_conn_request_h conn_request
Definition: uct.h:1161
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:658
const uct_iface_addr_t * iface_addr
Definition: uct.h:1120
uct_md_h md
Definition: uct.h:1372
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:77
Definition: uct.h:773
Definition: uct.h:227
struct sockaddr_storage sockaddr
Definition: uct.h:1223
Definition: types.h:118
size_t max_num_eps
Definition: uct.h:991
void * eager_arg
Definition: uct.h:1066
ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr, socklen_t socklen, const uct_listener_params_t *params, uct_listener_h *listener_p)
Create a new transport listener object.
uint64_t field_mask
Definition: uct.h:1015
struct uct_ep * uct_ep_h
Definition: uct_def.h:81
uct_tag_unexp_eager_cb_t eager_cb
Definition: uct.h:1068
Definition: uct.h:744
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:1438
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:759
uint64_t field_mask
Definition: uct.h:1238
Completion handle.
Definition: uct.h:1409
uct_rkey_t rkey
Definition: uct.h:1385
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:2543
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:2604
uint32_t err_handler_flags
Definition: uct.h:1063
uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb
Definition: uct.h:1146
unsigned path_index
Definition: uct.h:1184
Definition: uct.h:731
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:95
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:3235
ucs_sys_device_t sys_device
Definition: uct.h:323
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:446
uintptr_t uct_rkey_t
Definition: uct_def.h:83
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:3141
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.
char priv[UCT_TAG_PRIV_LEN]
Definition: uct.h:1485
Definition: uct.h:509
size_t max_conn_priv
Definition: uct.h:976
void * handle
Definition: uct.h:1386
Definition: uct.h:491
Definition: uct.h:713
void(* completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm, size_t length, void *inline_data, ucs_status_t status)
Definition: uct.h:1466
void * rndv_arg
Definition: uct.h:1069
ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags, const char *name, uct_allocated_memory_t *mem)
Allocate memory which can be used for zero-copy communications.
ucs_time_t keepalive_interval
Definition: uct.h:1081
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:2775
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:2739
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:507
char dev_name[UCT_DEVICE_NAME_MAX]
Definition: uct.h:320
Definition: uct.h:691
Describes a memory allocated by UCT.
Definition: uct.h:1367
Definition: uct.h:824