UCX  1.9
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  /* Tag matching operations */
416 #define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
417 #define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
418 #define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
419 #define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
435  /* Event types */
436 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(0)
438 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(1)
440 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(2)
442  /* Event notification mechanisms */
443 #define UCT_IFACE_FLAG_EVENT_FD UCS_BIT(3)
445 #define UCT_IFACE_FLAG_EVENT_ASYNC_CB UCS_BIT(4)
456 typedef enum {
466 
467 
480  UCT_EVENT_SEND_COMP = UCS_BIT(0),
481  UCT_EVENT_RECV = UCS_BIT(1),
482  UCT_EVENT_RECV_SIG = UCS_BIT(2)
484 };
485 
486 
491 enum uct_flush_flags {
496  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0)
511 };
512 
518 enum uct_progress_types {
519  UCT_PROGRESS_SEND = UCS_BIT(0),
520  UCT_PROGRESS_RECV = UCS_BIT(1),
521  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
524 };
525 
526 
531 enum uct_msg_flags {
532  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0)
537 };
539 
546 enum uct_cb_flags {
547  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
548  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
563 };
570 enum uct_iface_open_mode {
572  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
573 
577 
581 };
582 
583 
594 
596  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
600  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
601 
604  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
605 
611 
614 
620 
623 
626 
629 
632 
635 
638 };
644 typedef enum {
652 
653 
658 enum {
659  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
660  UCT_MD_FLAG_REG = UCS_BIT(1),
661  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
663  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
666  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
667  UCT_MD_FLAG_FIXED = UCS_BIT(5),
669  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
672  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7)
675 };
681 enum uct_md_mem_flags {
682  UCT_MD_MEM_FLAG_NONBLOCK = UCS_BIT(0),
687  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
689  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
693  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
698  /* memory access flags */
700  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
701  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
707 
711 };
712 
713 
718 typedef enum {
719  UCT_MADV_NORMAL = 0,
725 
734 enum uct_cm_attr_field {
737 };
738 
739 
750 };
752 
763 
769 };
770 
771 
781  UCT_EP_PARAM_FIELD_IFACE = UCS_BIT(0),
784  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
787  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
788 
790  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
791 
793  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
794 
797 
800 
802  UCT_EP_PARAM_FIELD_CM = UCS_BIT(7),
803 
805  UCT_EP_PARAM_FIELD_CONN_REQUEST = UCS_BIT(8),
806 
809 
812 
815 
817  UCT_EP_PARAM_FIELD_PATH_INDEX = UCS_BIT(12)
818 };
820 
821 /*
822  * @ingroup UCT_RESOURCE
823  * @brief Process Per Node (PPN) bandwidth specification: f(ppn) = dedicated + shared / ppn
824  *
825  * This structure specifies a function which is used as basis for bandwidth
826  * estimation of various UCT operations. This information can be used to select
827  * the best performing combination of UCT operations.
828  */
829 typedef struct uct_ppn_bandwidth {
830  double dedicated;
831  double shared;
833 
839 struct uct_iface_attr {
840  struct {
841  struct {
842  size_t max_short;
843  size_t max_bcopy;
844  size_t min_zcopy;
847  size_t max_zcopy;
850  size_t opt_zcopy_align;
852  size_t align_mtu;
853  size_t max_iov;
856  } put;
858  struct {
859  size_t max_short;
860  size_t max_bcopy;
861  size_t min_zcopy;
864  size_t max_zcopy;
867  size_t opt_zcopy_align;
869  size_t align_mtu;
870  size_t max_iov;
873  } get;
875  struct {
876  size_t max_short;
877  size_t max_bcopy;
878  size_t min_zcopy;
881  size_t max_zcopy;
884  size_t opt_zcopy_align;
886  size_t align_mtu;
887  size_t max_hdr;
888  size_t max_iov;
891  } am;
893  struct {
894  struct {
895  size_t min_recv;
896  size_t max_zcopy;
898  size_t max_iov;
901  size_t max_outstanding;
903  } recv;
904 
905  struct {
906  size_t max_short;
908  size_t max_bcopy;
910  size_t max_zcopy;
912  size_t max_iov;
914  } eager;
916  struct {
917  size_t max_zcopy;
919  size_t max_hdr;
922  size_t max_iov;
924  } rndv;
925  } tag;
927  struct {
928  uint64_t op_flags;
929  uint64_t fop_flags;
930  } atomic32, atomic64;
932  uint64_t flags;
933  uint64_t event_flags;
934  } cap;
936  size_t device_addr_len;
937  size_t iface_addr_len;
938  size_t ep_addr_len;
939  size_t max_conn_priv;
942  struct sockaddr_storage listen_sockaddr;
944  /*
945  * The following fields define expected performance of the communication
946  * interface, this would usually be a combination of device and system
947  * characteristics and determined at run time.
948  */
949  double overhead;
951  ucs_linear_func_t latency;
953  uint8_t priority;
954  size_t max_num_eps;
955  unsigned dev_num_paths;
964 };
965 
974 struct uct_iface_params {
978  uint64_t field_mask;
980  ucs_cpu_set_t cpu_mask;
982  uint64_t open_mode;
984  union {
991  struct {
992  const char *tl_name;
993  const char *dev_name;
994  } device;
1002  struct {
1003  ucs_sock_addr_t listen_sockaddr;
1005  void *conn_request_arg;
1007  uct_sockaddr_conn_request_callback_t conn_request_cb;
1010  uint32_t cb_flags;
1011  } sockaddr;
1012  } mode;
1013 
1016  ucs_stats_node_t *stats_root;
1018  size_t rx_headroom;
1021  void *err_handler_arg;
1026  uint32_t err_handler_flags;
1027 
1029  void *eager_arg;
1032  void *rndv_arg;
1036  void *async_event_arg;
1042 };
1044 
1055  uint64_t field_mask;
1056 
1062 
1066  void *user_data;
1067 
1073  const uct_device_addr_t *dev_addr;
1074 
1081 
1089  const ucs_sock_addr_t *sockaddr;
1096  uint32_t sockaddr_cb_flags;
1107 
1112  uct_cm_h cm;
1122 
1128 
1134 
1139 
1144  unsigned path_index;
1145 };
1146 
1147 
1152 struct uct_cm_attr {
1158  uint64_t field_mask;
1159 
1164  size_t max_conn_priv;
1165 };
1166 
1167 
1172 struct uct_listener_attr {
1178  uint64_t field_mask;
1179 
1183  struct sockaddr_storage sockaddr;
1184 };
1185 
1186 
1192 struct uct_listener_params {
1198  uint64_t field_mask;
1199 
1204  int backlog;
1205 
1210 
1214  void *user_data;
1215 };
1216 
1217 
1226 struct uct_md_attr {
1227  struct {
1228  size_t max_alloc;
1229  size_t max_reg;
1230  uint64_t flags;
1231  uint64_t reg_mem_types;
1232  uint64_t detect_mem_types;
1233  ucs_memory_type_t access_mem_type;
1234  } cap;
1235 
1236  ucs_linear_func_t reg_cost;
1240  char component_name[UCT_COMPONENT_NAME_MAX];
1241  size_t rkey_packed_size;
1242  ucs_cpu_set_t local_cpus;
1243 };
1245 
1254  UCT_MD_MEM_ATTR_FIELD_MEM_TYPE = UCS_BIT(0),
1256  UCT_MD_MEM_ATTR_FIELD_SYS_DEV = UCS_BIT(1)
1260 };
1261 
1262 
1271 typedef struct uct_md_mem_attr {
1279  uint64_t field_mask;
1280 
1284  ucs_memory_type_t mem_type;
1285 
1289  ucs_sys_device_t sys_dev;
1291 
1292 
1312 ucs_status_t uct_md_mem_query(uct_md_h md, const void *address, const size_t length,
1313  uct_md_mem_attr_t *mem_attr);
1314 
1315 
1324 typedef struct uct_allocated_memory {
1325  void *address;
1326  size_t length;
1328  ucs_memory_type_t mem_type;
1329  uct_md_h md;
1330  uct_mem_h memh;
1332 
1333 
1341 typedef struct uct_rkey_bundle {
1343  void *handle;
1344  void *type;
1364 struct uct_completion {
1366  int count;
1367 };
1368 
1369 
1377 struct uct_pending_req {
1379  char priv[UCT_PENDING_REQ_PRIV_LEN];
1380 };
1390 struct uct_tag_context {
1397  void (*tag_consumed_cb)(uct_tag_context_t *self);
1398 
1413  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1414  size_t length, ucs_status_t status);
1415 
1427  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1428  unsigned header_length, ucs_status_t status);
1429 
1431  char priv[UCT_TAG_PRIV_LEN];
1432 };
1433 
1434 
1435 extern const char *uct_alloc_method_names[];
1436 
1437 
1452  unsigned *num_components_p);
1453 
1464 
1465 
1479  uct_component_attr_t *component_attr);
1480 
1481 
1501 ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1502  const uct_md_config_t *config, uct_md_h *md_p);
1503 
1510 void uct_md_close(uct_md_h md);
1511 
1512 
1528  uct_tl_resource_desc_t **resources_p,
1529  unsigned *num_resources_p);
1530 
1531 
1542 
1543 
1558 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1559  ucs_thread_mode_t thread_mode,
1560  uct_worker_h *worker_p);
1561 
1562 
1569 void uct_worker_destroy(uct_worker_h worker);
1570 
1571 
1595 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
1596  void *arg, unsigned flags,
1597  uct_worker_cb_id_t *id_p);
1598 
1599 
1621  uct_worker_cb_id_t *id_p);
1622 
1623 
1651 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
1652  const char *env_prefix, const char *filename,
1653  uct_iface_config_t **config_p);
1654 
1655 
1663 void uct_config_release(void *config);
1664 
1665 
1681 ucs_status_t uct_config_get(void *config, const char *name, char *value,
1682  size_t max);
1683 
1684 
1697 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
1698 
1699 
1716  const uct_iface_params_t *params,
1717  const uct_iface_config_t *config,
1718  uct_iface_h *iface_p);
1719 
1720 
1727 void uct_iface_close(uct_iface_h iface);
1728 
1729 
1738 
1739 
1752 
1753 
1765 
1766 
1785 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
1786  const uct_iface_addr_t *iface_addr);
1787 
1788 
1806 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
1807  uct_completion_t *comp);
1808 
1809 
1823 
1824 
1844 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
1845 
1846 
1862 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
1863  const char *name, uct_allocated_memory_t *mem);
1864 
1865 
1873 
1874 
1893  uct_am_callback_t cb, void *arg, uint32_t flags);
1894 
1895 
1910  void *arg);
1911 
1912 
1925  uct_conn_request_h conn_request);
1926 
1927 
1941  uct_conn_request_h conn_request);
1942 
1943 
1978 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
1979 
1980 
2013 ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags);
2014 
2015 
2022 void uct_ep_destroy(uct_ep_h ep);
2023 
2024 
2034 
2035 
2047  const uct_ep_addr_t *ep_addr);
2048 
2049 
2058 
2059 
2077 ucs_status_t uct_md_mem_alloc(uct_md_h md, size_t *length_p, void **address_p,
2078  unsigned flags, const char *name, uct_mem_h *memh_p);
2079 
2080 
2089 
2090 
2108 ucs_status_t uct_md_mem_advise(uct_md_h md, uct_mem_h memh, void *addr,
2109  size_t length, uct_mem_advice_t advice);
2110 
2111 
2125 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
2126  unsigned flags, uct_mem_h *memh_p);
2127 
2128 
2137 
2138 
2152 ucs_status_t uct_md_detect_memory_type(uct_md_h md, const void *addr,
2153  size_t length,
2154  ucs_memory_type_t *mem_type_p);
2155 
2156 
2191 ucs_status_t uct_mem_alloc(void *addr, size_t min_length, unsigned flags,
2192  uct_alloc_method_t *methods, unsigned num_methods,
2193  uct_md_h *mds, unsigned num_mds, const char *name,
2194  uct_allocated_memory_t *mem);
2195 
2196 
2207 
2223  const char *env_prefix, const char *filename,
2224  uct_md_config_t **config_p);
2225 
2226 
2227 
2250 
2251 
2263 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
2264 
2265 
2285 ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2286  uct_rkey_bundle_t *rkey_ob);
2287 
2288 
2315  uint64_t remote_addr, void **addr_p);
2316 
2317 
2327  const uct_rkey_bundle_t *rkey_ob);
2328 
2329 
2344 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2345 {
2346  return ucs_callbackq_dispatch(&worker->progress_q);
2347 }
2348 
2349 
2378 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2379  uct_completion_t *comp)
2380 {
2381  return iface->ops.iface_flush(iface, flags, comp);
2382 }
2383 
2397 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2398 {
2399  return iface->ops.iface_fence(iface, flags);
2400 }
2401 
2411 UCT_INLINE_API void uct_iface_release_desc(void *desc)
2412 {
2413  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2414  release_desc->cb(release_desc, desc);
2415 }
2416 
2417 
2422 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2423  uint64_t remote_addr, uct_rkey_t rkey)
2424 {
2425  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2426 }
2427 
2433 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2434  void *arg, uint64_t remote_addr,
2435  uct_rkey_t rkey)
2436 {
2437  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2438 }
2440 
2470 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
2471  const uct_iov_t *iov, size_t iovcnt,
2472  uint64_t remote_addr, uct_rkey_t rkey,
2473  uct_completion_t *comp)
2474 {
2475  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2476 }
2477 
2478 
2483 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2484  uint64_t remote_addr, uct_rkey_t rkey)
2485 {
2486  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2488 
2489 
2494 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
2495  void *arg, size_t length,
2496  uint64_t remote_addr, uct_rkey_t rkey,
2497  uct_completion_t *comp)
2498 {
2499  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2500  rkey, comp);
2501 }
2502 
2503 
2533 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
2534  const uct_iov_t *iov, size_t iovcnt,
2535  uint64_t remote_addr, uct_rkey_t rkey,
2536  uct_completion_t *comp)
2537 {
2538  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2539 }
2540 
2541 
2546 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
2547  const void *payload, unsigned length)
2548 {
2549  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
2551 
2552 
2557 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
2558  uct_pack_callback_t pack_cb, void *arg,
2559  unsigned flags)
2560 {
2561  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
2562 }
2564 
2602 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
2603  const void *header,
2604  unsigned header_length,
2605  const uct_iov_t *iov, size_t iovcnt,
2606  unsigned flags,
2607  uct_completion_t *comp)
2608 {
2609  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
2610  flags, comp);
2611 }
2612 
2617 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
2618  uint64_t remote_addr, uct_rkey_t rkey,
2619  uint64_t *result, uct_completion_t *comp)
2620 {
2621  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
2622 }
2623 
2624 
2629 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
2630  uint64_t remote_addr, uct_rkey_t rkey,
2631  uint32_t *result, uct_completion_t *comp)
2632 {
2633  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
2635 
2636 
2641 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
2642  uint32_t value, uint64_t remote_addr,
2643  uct_rkey_t rkey)
2644 {
2645  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
2647 
2648 
2653 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
2654  uint64_t value, uint64_t remote_addr,
2655  uct_rkey_t rkey)
2656 {
2657  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
2659 
2660 
2665 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2666  uint32_t value, uint32_t *result,
2667  uint64_t remote_addr, uct_rkey_t rkey,
2668  uct_completion_t *comp)
2669 {
2670  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
2671  remote_addr, rkey, comp);
2672 }
2673 
2674 
2679 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2680  uint64_t value, uint64_t *result,
2681  uint64_t remote_addr, uct_rkey_t rkey,
2683 {
2684  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
2685  remote_addr, rkey, comp);
2686 }
2687 
2688 
2709 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
2710  uct_pending_req_t *req,
2711  unsigned flags)
2712 {
2713  return ep->iface->ops.ep_pending_add(ep, req, flags);
2714 }
2715 
2716 
2728 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
2730  void *arg)
2731 {
2732  ep->iface->ops.ep_pending_purge(ep, cb, arg);
2733 }
2734 
2735 
2764 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
2765  uct_completion_t *comp)
2766 {
2767  return ep->iface->ops.ep_flush(ep, flags, comp);
2768 }
2769 
2770 
2783 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
2784 {
2785  return ep->iface->ops.ep_fence(ep, flags);
2786 }
2787 
2788 
2811 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
2812  const void *data, size_t length)
2813 {
2814  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
2815 }
2816 
2817 
2841 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
2842  uint64_t imm,
2843  uct_pack_callback_t pack_cb,
2844  void *arg, unsigned flags)
2845 {
2846  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
2847 }
2848 
2849 
2887 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
2888  uint64_t imm,
2889  const uct_iov_t *iov,
2890  size_t iovcnt,
2891  unsigned flags,
2892  uct_completion_t *comp)
2893 {
2894  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
2895  comp);
2896 }
2897 
2898 
2936  const void *header,
2937  unsigned header_length,
2938  const uct_iov_t *iov,
2939  size_t iovcnt,
2940  unsigned flags,
2941  uct_completion_t *comp)
2942 {
2943  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
2944  iov, iovcnt, flags, comp);
2945 }
2946 
2947 
2966 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
2967 {
2968  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
2969 }
2970 
2971 
2992  const void* header,
2993  unsigned header_length,
2994  unsigned flags)
2995 {
2996  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
2997  flags);
2998 }
2999 
3000 
3032  uct_tag_t tag,
3033  uct_tag_t tag_mask,
3034  const uct_iov_t *iov,
3035  size_t iovcnt,
3036  uct_tag_context_t *ctx)
3037 {
3038  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
3039 }
3040 
3041 
3065  uct_tag_context_t *ctx,
3066  int force)
3067 {
3068  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
3069 }
3070 
3071 
3090 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
3091 {
3092  iface->ops.iface_progress_enable(iface, flags);
3093 }
3094 
3095 
3115 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
3116 {
3117  iface->ops.iface_progress_disable(iface, flags);
3118 }
3119 
3120 
3125 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
3126 {
3127  return iface->ops.iface_progress(iface);
3128 }
3129 
3130 
3154  const uct_cm_config_t *config, uct_cm_h *cm_p);
3155 
3156 
3163 void uct_cm_close(uct_cm_h cm);
3164 
3165 
3177 
3178 
3196  const char *env_prefix, const char *filename,
3197  uct_cm_config_t **config_p);
3198 
3199 
3213 
3214 
3233 ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3234  socklen_t socklen,
3235  const uct_listener_params_t *params,
3236  uct_listener_h *listener_p);
3237 
3238 
3245 void uct_listener_destroy(uct_listener_h listener);
3246 
3247 
3264  uct_conn_request_h conn_request);
3265 
3266 
3280  uct_listener_attr_t *listener_attr);
3281 
3282 
3288 END_C_DECLS
3289 
3290 #endif
Definition: uct.h:678
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.
Definition: uct.h:686
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:751
uct_tag_unexp_rndv_cb_t rndv_cb
Definition: uct.h:1051
Definition: uct.h:721
size_t max_conn_priv
Definition: uct.h:1181
void * async_event_arg
Definition: uct.h:1053
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:2904
uct_progress_types
UCT progress types.
Definition: uct.h:535
Definition: uct.h:497
Definition: uct.h:736
uct_error_handler_t err_handler
Definition: uct.h:1040
struct uct_iface_attr::@4 cap
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:718
uct_async_event_cb_t async_event_cb
Definition: uct.h:1058
Definition: uct.h:807
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:813
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
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:680
Definition: uct.h:704
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:2952
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:2658
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:1259
void * uct_mem_h
Definition: uct_def.h:82
int count
Definition: uct.h:1383
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:581
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:1361
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:548
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:2745
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:477
Definition: uct.h:684
Definition: uct.h:617
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:2858
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:2781
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:682
uct_cm_ep_client_connect_callback_t sockaddr_cb_client
Definition: uct.h:1144
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: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:3081
Definition: uct.h:834
Definition: uct.h:689
int backlog
Definition: uct.h:1221
Definition: uct.h:613
uct_mem_advice_t
list of UCT memory use advice
Definition: uct.h:735
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
Parameters used for interface creation.
Definition: uct.h:991
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:2487
uint64_t field_mask
Definition: uct.h:1072
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:525
size_t iface_addr_len
Definition: uct.h:954
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:777
uint64_t field_mask
Definition: uct.h:1296
void * address
Definition: uct.h:1342
const uct_device_addr_t * dev_addr
Definition: uct.h:1090
UCT component attributes.
Definition: uct.h:241
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
double dedicated
Definition: uct.h:847
Definition: uct.h:300
uct_cb_flags
Callback flags.
Definition: uct.h:563
uint64_t field_mask
Definition: uct.h:1195
void(* rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header, unsigned header_length, ucs_status_t status)
Definition: uct.h:1444
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:606
uct_listener_attr_field
UCT listener attributes field mask.
Definition: uct.h:764
struct uct_md_attr::@16 cap
Definition: uct.h:662
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:636
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:2428
uct_alloc_method_t method
Definition: uct.h:1344
ucs_linear_func_t reg_cost
Definition: uct.h:1253
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:1189
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:2634
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:2670
Interface attributes: capabilities and limitations.
Definition: uct.h:856
Definition: uct.h:710
Definition: uct.h:677
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:2439
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:513
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:2500
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:966
Definition: uct.h:538
ucs_linear_func_t latency
Definition: uct.h:968
ucs_cpu_set_t cpu_mask
Definition: uct.h:997
Definition: uct.h:819
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:2395
Definition: uct.h:509
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:2550
Definition: uct.h:1271
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:3132
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
Definition: uct.h:499
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:801
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
Definition: uct.h:290
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:796
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:2828
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:2563
uct_cm_ep_server_conn_notify_callback_t sockaddr_cb_server
Definition: uct.h:1150
Remote key with its type.
Definition: uct.h:1358
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:798
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition: uct.h:2983
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:1288
uint8_t priority
Definition: uct.h:970
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:537
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:621
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:215
Definition: uct.h:676
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:2619
char tl_name[UCT_TL_NAME_MAX]
Definition: uct.h:319
Definition: uct.h:706
uct_iface_h iface
Definition: uct.h:1078
ucs_status_t
Status codes.
Definition: status.h:45
char component_name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:1257
Definition: uct.h:564
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.
union uct_iface_params::@13 mode
Definition: uct.h:513
Definition: uct.h:303
void * user_data
Definition: uct.h:1083
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:1343
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:589
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:698
double shared
Definition: uct.h:848
void * err_handler_arg
Definition: uct.h:1038
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition: uct.h:1209
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition: uct.h:1396
Definition: uct.h:665
Definition: uct.h:476
Definition: uct.h:810
ucs_status_t uct_md_mem_free(uct_md_h md, uct_mem_h memh)
Release memory allocated by uct_md_mem_alloc.
uint64_t flags
Definition: uct.h:274
Definition: uct.h:536
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:1129
Connection manager attributes, capabilities and limitations.
Definition: uct.h:1169
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:610
ucs_memory_type_t mem_type
Definition: uct.h:1301
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
void * user_data
Definition: uct.h:1231
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition: uct_def.h:550
Definition: uct.h:481
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:3107
struct sockaddr_storage listen_sockaddr
Definition: uct.h:959
uct_ppn_bandwidth_t bandwidth
Definition: uct.h:967
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:2696
ucs_memory_type_t mem_type
Definition: uct.h:1345
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:2574
uct_flush_flags
Flush modifiers.
Definition: uct.h:508
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:1270
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:473
uint64_t uct_tag_t
Definition: uct_def.h:106
Definition: uct.h:474
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:1106
unsigned dev_num_paths
Definition: uct.h:972
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:1395
uint64_t open_mode
Definition: uct.h:999
ucs_sys_device_t sys_dev
Definition: uct.h:1306
uint64_t field_mask
Definition: uct.h:1175
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:565
void(* completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm, size_t length, ucs_status_t status)
Definition: uct.h:1430
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:2414
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:710
uint32_t sockaddr_cb_flags
Definition: uct.h:1113
unsigned md_resource_count
Definition: uct.h:254
Definition: uct.h:1273
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:3008
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:587
Definition: uct.h:798
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:2726
size_t device_addr_len
Definition: uct.h:953
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:537
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:1066
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
uct_ep_disconnect_cb_t disconnect_cb
Definition: uct.h:1155
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:661
Definition: uct.h:822
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:1033
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:1243
Definition: uct.h:549
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:608
uct_completion_callback_t func
Definition: uct.h:1382
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:955
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:716
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
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:479
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:2800
uct_mem_h memh
Definition: uct.h:1347
size_t rx_headroom
Definition: uct.h:1035
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition: uct.h:1414
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:737
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:495
uct_cm_listener_conn_request_callback_t conn_request_cb
Definition: uct.h:1226
Definition: uct.h:478
size_t rkey_packed_size
Definition: uct.h:1258
Communication resource descriptor.
Definition: uct.h:318
Pending request.
Definition: uct.h:1394
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:846
ucs_status_t uct_mem_alloc(void *addr, size_t min_length, unsigned flags, uct_alloc_method_t *methods, unsigned num_methods, uct_md_h *mds, unsigned num_mds, const char *name, uct_allocated_memory_t *mem)
Allocate memory for zero-copy communications and remote access.
unsigned uct_worker_progress(uct_worker_h worker)
Explicit progress for UCT worker.
Definition: uct.h:2361
uct_conn_request_h conn_request
Definition: uct.h:1138
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:660
const uct_iface_addr_t * iface_addr
Definition: uct.h:1097
uct_md_h md
Definition: uct.h:1346
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:753
Definition: uct.h:227
ucs_status_t uct_md_mem_alloc(uct_md_h md, size_t *length_p, void **address_p, unsigned flags, const char *name, uct_mem_h *memh_p)
Allocate memory for zero-copy sends and remote access.
struct sockaddr_storage sockaddr
Definition: uct.h:1200
Definition: types.h:117
size_t max_num_eps
Definition: uct.h:971
void * eager_arg
Definition: uct.h:1046
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:995
struct uct_ep * uct_ep_h
Definition: uct_def.h:81
uct_tag_unexp_eager_cb_t eager_cb
Definition: uct.h:1048
Definition: uct.h:726
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:1407
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:761
uint64_t field_mask
Definition: uct.h:1215
Completion handle.
Definition: uct.h:1381
uct_rkey_t rkey
Definition: uct.h:1359
void(* uct_completion_callback_t)(uct_completion_t *self, ucs_status_t status)
Callback to process send completion.
Definition: uct_def.h:477
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:2450
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:2511
uint32_t err_handler_flags
Definition: uct.h:1043
uct_cm_ep_priv_data_pack_callback_t sockaddr_pack_cb
Definition: uct.h:1123
unsigned path_index
Definition: uct.h:1161
Definition: uct.h:717
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:3142
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:3048
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:1448
Definition: uct.h:498
size_t max_conn_priv
Definition: uct.h:956
Definition: uct.h:683
void * handle
Definition: uct.h:1360
Definition: uct.h:480
Definition: uct.h:699
void * rndv_arg
Definition: uct.h:1049
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:2682
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:2646
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:496
char dev_name[UCT_DEVICE_NAME_MAX]
Definition: uct.h:320
Describes a memory allocated by UCT.
Definition: uct.h:1341
Definition: uct.h:804