UCX  1.7
Unified Communication X
All Data Structures Functions Variables Typedefs Enumerations Enumerator Modules Pages
uct.h
1 
10 #ifndef UCT_H_
11 #define UCT_H_
12 
13 #include <uct/api/uct_def.h>
14 #include <uct/api/tl.h>
15 #include <uct/api/version.h>
16 #include <ucs/async/async_fwd.h>
17 #include <ucs/datastruct/callbackq.h>
18 #include <ucs/memory/memory_type.h>
19 #include <ucs/type/status.h>
20 #include <ucs/type/thread_mode.h>
21 #include <ucs/type/cpu_set.h>
22 #include <ucs/stats/stats_fwd.h>
23 #include <ucs/sys/compiler_def.h>
24 
25 #include <sys/socket.h>
26 #include <stdio.h>
27 #include <sched.h>
28 
29 BEGIN_C_DECLS
30 
205 typedef struct uct_md_resource_desc {
206  char md_name[UCT_MD_NAME_MAX];
208 
209 
222 };
223 
224 
232 typedef struct uct_component_attr {
239  uint64_t field_mask;
240 
242  char name[UCT_COMPONENT_NAME_MAX];
243 
246 
261 
265  uint64_t flags;
267 
268 
276 enum {
282 };
283 
284 
289 typedef enum {
296 
297 
309 typedef struct uct_tl_resource_desc {
310  char tl_name[UCT_TL_NAME_MAX];
311  char dev_name[UCT_DEVICE_NAME_MAX];
314 
315 #define UCT_TL_RESOURCE_DESC_FMT "%s/%s"
316 #define UCT_TL_RESOURCE_DESC_ARG(_resource) (_resource)->tl_name, (_resource)->dev_name
317 
318 
326 typedef enum uct_atomic_op {
327  UCT_ATOMIC_OP_ADD,
328  UCT_ATOMIC_OP_AND,
329  UCT_ATOMIC_OP_OR,
330  UCT_ATOMIC_OP_XOR,
331  UCT_ATOMIC_OP_SWAP,
332  UCT_ATOMIC_OP_CSWAP,
333  UCT_ATOMIC_OP_LAST
334 } uct_atomic_op_t;
335 
336 
347  /* Active message capabilities */
348 #define UCT_IFACE_FLAG_AM_SHORT UCS_BIT(0)
349 #define UCT_IFACE_FLAG_AM_BCOPY UCS_BIT(1)
350 #define UCT_IFACE_FLAG_AM_ZCOPY UCS_BIT(2)
352 #define UCT_IFACE_FLAG_PENDING UCS_BIT(3)
354  /* PUT capabilities */
355 #define UCT_IFACE_FLAG_PUT_SHORT UCS_BIT(4)
356 #define UCT_IFACE_FLAG_PUT_BCOPY UCS_BIT(5)
357 #define UCT_IFACE_FLAG_PUT_ZCOPY UCS_BIT(6)
359  /* GET capabilities */
360 #define UCT_IFACE_FLAG_GET_SHORT UCS_BIT(8)
361 #define UCT_IFACE_FLAG_GET_BCOPY UCS_BIT(9)
362 #define UCT_IFACE_FLAG_GET_ZCOPY UCS_BIT(10)
364  /* Atomic operations domain */
365 #define UCT_IFACE_FLAG_ATOMIC_CPU UCS_BIT(30)
367 #define UCT_IFACE_FLAG_ATOMIC_DEVICE UCS_BIT(31)
371  /* Error handling capabilities */
372 #define UCT_IFACE_FLAG_ERRHANDLE_SHORT_BUF UCS_BIT(32)
373 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_BUF UCS_BIT(33)
374 #define UCT_IFACE_FLAG_ERRHANDLE_ZCOPY_BUF UCS_BIT(34)
375 #define UCT_IFACE_FLAG_ERRHANDLE_AM_ID UCS_BIT(35)
376 #define UCT_IFACE_FLAG_ERRHANDLE_REMOTE_MEM UCS_BIT(36)
377 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_LEN UCS_BIT(37)
378 #define UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE UCS_BIT(38)
380 #define UCT_IFACE_FLAG_EP_CHECK UCS_BIT(39)
382  /* Connection establishment */
383 #define UCT_IFACE_FLAG_CONNECT_TO_IFACE UCS_BIT(40)
384 #define UCT_IFACE_FLAG_CONNECT_TO_EP UCS_BIT(41)
385 #define UCT_IFACE_FLAG_CONNECT_TO_SOCKADDR UCS_BIT(42)
387  /* Special transport flags */
388 #define UCT_IFACE_FLAG_AM_DUP UCS_BIT(43)
392  /* Callback invocation */
393 #define UCT_IFACE_FLAG_CB_SYNC UCS_BIT(44)
396 #define UCT_IFACE_FLAG_CB_ASYNC UCS_BIT(45)
403  /* Event notification */
404 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(46)
406 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(47)
408 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(48)
411  /* Tag matching operations */
412 #define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
413 #define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
414 #define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
415 #define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
425 typedef enum {
435 
436 
449  UCT_EVENT_SEND_COMP = UCS_BIT(0),
450  UCT_EVENT_RECV = UCS_BIT(1),
451  UCT_EVENT_RECV_SIG = UCS_BIT(2)
453 };
454 
455 
460 enum uct_flush_flags {
465  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0)
480 };
481 
482 
487 enum uct_progress_types {
488  UCT_PROGRESS_SEND = UCS_BIT(0),
489  UCT_PROGRESS_RECV = UCS_BIT(1),
490  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
493 };
494 
495 
500 enum uct_msg_flags {
501  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0)
506 };
507 
508 
516  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
517  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
532 };
533 
534 
539 enum uct_iface_open_mode {
541  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
542 
546 
550 };
551 
552 
562  UCT_IFACE_PARAM_FIELD_CPU_MASK = UCS_BIT(0),
563 
565  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
566 
569  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
570 
573  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
574 
583 
586 
589 
592 
595 
598 
601 };
602 
607 typedef enum {
616 
621 enum {
622  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
623  UCT_MD_FLAG_REG = UCS_BIT(1),
624  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
626  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
629  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
630  UCT_MD_FLAG_FIXED = UCS_BIT(5),
632  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
635  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7)
638 };
650  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
652  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
656  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
661  /* memory access flags */
662  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
663  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
664  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
670 
674 };
675 
676 
681 typedef enum {
688 
689 
700 };
701 
702 
713 };
715 
726 
729 
732 };
733 
734 
742 enum uct_ep_params_field {
744  UCT_EP_PARAM_FIELD_IFACE = UCS_BIT(0),
745 
747  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
748 
750  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
751 
753  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
754 
756  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
760 
763 
765  UCT_EP_PARAM_FIELD_CM = UCS_BIT(7),
766 
769 
772 
775 };
776 
778 /*
779  * @ingroup UCT_RESOURCE
780  * @brief Linear growth specification: f(x) = overhead + growth * x
781  *
782  * This structure specifies a linear function which is used as basis for time
783  * estimation of various UCT operations. This information can be used to select
784  * the best performing combination of UCT operations.
785  */
786 typedef struct uct_linear_growth {
787  double overhead;
788  double growth;
790 
791 
792 /*
793  * @ingroup UCT_RESOURCE
794  * @brief Process Per Node (PPN) bandwidth specification: f(x) = dedicated + shared / ppn
795  *
796  * This structure specifies a function which is used as basis for bandwidth
797  * estimation of various UCT operations. This information can be used to select
798  * the best performing combination of UCT operations.
799  */
800 typedef struct uct_ppn_bandwidth {
801  double dedicated;
802  double shared;
804 
805 
810 struct uct_iface_attr {
811  struct {
812  struct {
813  size_t max_short;
814  size_t max_bcopy;
815  size_t min_zcopy;
818  size_t max_zcopy;
821  size_t opt_zcopy_align;
823  size_t align_mtu;
824  size_t max_iov;
827  } put;
829  struct {
830  size_t max_short;
831  size_t max_bcopy;
832  size_t min_zcopy;
835  size_t max_zcopy;
838  size_t opt_zcopy_align;
840  size_t align_mtu;
841  size_t max_iov;
844  } get;
846  struct {
847  size_t max_short;
848  size_t max_bcopy;
849  size_t min_zcopy;
852  size_t max_zcopy;
855  size_t opt_zcopy_align;
857  size_t align_mtu;
858  size_t max_hdr;
859  size_t max_iov;
862  } am;
864  struct {
865  struct {
866  size_t min_recv;
867  size_t max_zcopy;
869  size_t max_iov;
872  size_t max_outstanding;
874  } recv;
875 
876  struct {
877  size_t max_short;
879  size_t max_bcopy;
881  size_t max_zcopy;
883  size_t max_iov;
885  } eager;
887  struct {
888  size_t max_zcopy;
890  size_t max_hdr;
893  size_t max_iov;
895  } rndv;
896  } tag;
898  struct {
899  uint64_t op_flags;
900  uint64_t fop_flags;
901  } atomic32, atomic64;
903  uint64_t flags;
904  } cap;
906  size_t device_addr_len;
907  size_t iface_addr_len;
908  size_t ep_addr_len;
909  size_t max_conn_priv;
912  struct sockaddr_storage listen_sockaddr;
914  /*
915  * The following fields define expected performance of the communication
916  * interface, this would usually be a combination of device and system
917  * characteristics and determined at run time.
918  */
919  double overhead;
922  uint8_t priority;
923  size_t max_num_eps;
924 };
925 
926 
938  uint64_t field_mask;
940  ucs_cpu_set_t cpu_mask;
942  uint64_t open_mode;
944  union {
951  struct {
952  const char *tl_name;
953  const char *dev_name;
954  } device;
962  struct {
963  ucs_sock_addr_t listen_sockaddr;
965  void *conn_request_arg;
967  uct_sockaddr_conn_request_callback_t conn_request_cb;
970  uint32_t cb_flags;
971  } sockaddr;
972  } mode;
973 
976  ucs_stats_node_t *stats_root;
978  size_t rx_headroom;
979 
981  void *err_handler_arg;
986  uint32_t err_handler_flags;
987 
989  void *eager_arg;
992  void *rndv_arg;
995 };
997 
1002 struct uct_ep_params {
1008  uint64_t field_mask;
1015 
1019  void *user_data;
1020 
1026  const uct_device_addr_t *dev_addr;
1027 
1042  const ucs_sock_addr_t *sockaddr;
1043 
1049  uint32_t sockaddr_cb_flags;
1050 
1060 
1065  uct_cm_h cm;
1066 
1072 
1073  union {
1079 
1091 };
1092 
1093 
1098 struct uct_cm_attr {
1104  uint64_t field_mask;
1110  size_t max_conn_priv;
1111 };
1112 
1118 struct uct_listener_attr {
1124  uint64_t field_mask;
1129  struct sockaddr_storage sockaddr;
1130 };
1131 
1132 
1138 struct uct_listener_params {
1144  uint64_t field_mask;
1145 
1150  int backlog;
1151 
1156 
1160  void *user_data;
1161 };
1162 
1163 
1172 struct uct_md_attr {
1173  struct {
1174  size_t max_alloc;
1175  size_t max_reg;
1176  uint64_t flags;
1177  uint64_t reg_mem_types;
1178  uint64_t detect_mem_types;
1179  ucs_memory_type_t access_mem_type;
1180  } cap;
1181 
1186  char component_name[UCT_COMPONENT_NAME_MAX];
1188  cpu_set_t local_cpus;
1189 };
1190 
1191 
1200 typedef struct uct_allocated_memory {
1201  void *address;
1202  size_t length;
1204  ucs_memory_type_t mem_type;
1205  uct_md_h md;
1206  uct_mem_h memh;
1208 
1209 
1217 typedef struct uct_rkey_bundle {
1219  void *handle;
1220  void *type;
1222 
1223 
1240 struct uct_completion {
1242  int count;
1243 };
1244 
1245 
1253 struct uct_pending_req {
1255  char priv[UCT_PENDING_REQ_PRIV_LEN];
1256 };
1258 
1266 struct uct_tag_context {
1273  void (*tag_consumed_cb)(uct_tag_context_t *self);
1274 
1289  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
1290  size_t length, ucs_status_t status);
1291 
1303  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
1304  unsigned header_length, ucs_status_t status);
1305 
1307  char priv[UCT_TAG_PRIV_LEN];
1308 };
1309 
1310 
1311 extern const char *uct_alloc_method_names[];
1312 
1313 
1328  unsigned *num_components_p);
1329 
1340 
1341 
1355  uct_component_attr_t *component_attr);
1356 
1357 
1377 ucs_status_t uct_md_open(uct_component_h component, const char *md_name,
1378  const uct_md_config_t *config, uct_md_h *md_p);
1379 
1386 void uct_md_close(uct_md_h md);
1387 
1388 
1404  uct_tl_resource_desc_t **resources_p,
1405  unsigned *num_resources_p);
1406 
1407 
1418 
1419 
1434 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1435  ucs_thread_mode_t thread_mode,
1436  uct_worker_h *worker_p);
1437 
1438 
1445 void uct_worker_destroy(uct_worker_h worker);
1446 
1447 
1471 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
1472  void *arg, unsigned flags,
1473  uct_worker_cb_id_t *id_p);
1474 
1475 
1497  uct_worker_cb_id_t *id_p);
1498 
1499 
1527 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
1528  const char *env_prefix, const char *filename,
1529  uct_iface_config_t **config_p);
1530 
1531 
1539 void uct_config_release(void *config);
1540 
1541 
1555 ucs_status_t uct_config_get(void *config, const char *name, char *value,
1556  size_t max);
1557 
1558 
1569 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
1570 
1571 
1588  const uct_iface_params_t *params,
1589  const uct_iface_config_t *config,
1590  uct_iface_h *iface_p);
1591 
1592 
1599 void uct_iface_close(uct_iface_h iface);
1600 
1601 
1610 
1611 
1624 
1625 
1637 
1638 
1657 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
1658  const uct_iface_addr_t *iface_addr);
1659 
1660 
1678 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
1679  uct_completion_t *comp);
1680 
1681 
1695 
1696 
1716 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
1717 
1718 
1734 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
1735  const char *name, uct_allocated_memory_t *mem);
1736 
1737 
1745 
1746 
1765  uct_am_callback_t cb, void *arg, uint32_t flags);
1766 
1767 
1782  void *arg);
1783 
1784 
1797  uct_conn_request_h conn_request);
1798 
1799 
1813  uct_conn_request_h conn_request);
1814 
1815 
1849 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
1850 
1851 
1871 ucs_status_t uct_ep_disconnect(uct_ep_h ep, unsigned flags);
1872 
1873 
1880 void uct_ep_destroy(uct_ep_h ep);
1881 
1882 
1892 
1893 
1905  const uct_ep_addr_t *ep_addr);
1906 
1907 
1916 
1917 
1935 ucs_status_t uct_md_mem_alloc(uct_md_h md, size_t *length_p, void **address_p,
1936  unsigned flags, const char *name, uct_mem_h *memh_p);
1937 
1938 
1947 
1948 
1966 ucs_status_t uct_md_mem_advise(uct_md_h md, uct_mem_h memh, void *addr,
1967  size_t length, uct_mem_advice_t advice);
1968 
1969 
1983 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
1984  unsigned flags, uct_mem_h *memh_p);
1985 
1986 
1995 
1996 
2010 ucs_status_t uct_md_detect_memory_type(uct_md_h md, void *addr, size_t length,
2011  ucs_memory_type_t *mem_type_p);
2012 
2013 
2048 ucs_status_t uct_mem_alloc(void *addr, size_t min_length, unsigned flags,
2049  uct_alloc_method_t *methods, unsigned num_methods,
2050  uct_md_h *mds, unsigned num_mds, const char *name,
2051  uct_allocated_memory_t *mem);
2052 
2053 
2064 
2080  const char *env_prefix, const char *filename,
2081  uct_md_config_t **config_p);
2082 
2083 
2084 
2107 
2108 
2120 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
2121 
2122 
2142 ucs_status_t uct_rkey_unpack(uct_component_h component, const void *rkey_buffer,
2143  uct_rkey_bundle_t *rkey_ob);
2144 
2145 
2172  uint64_t remote_addr, void **addr_p);
2173 
2174 
2184  const uct_rkey_bundle_t *rkey_ob);
2185 
2186 
2201 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
2202 {
2203  return ucs_callbackq_dispatch(&worker->progress_q);
2204 }
2205 
2206 
2235 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
2236  uct_completion_t *comp)
2237 {
2238  return iface->ops.iface_flush(iface, flags, comp);
2239 }
2240 
2254 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
2255 {
2256  return iface->ops.iface_fence(iface, flags);
2257 }
2258 
2268 UCT_INLINE_API void uct_iface_release_desc(void *desc)
2270  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
2271  release_desc->cb(release_desc, desc);
2272 }
2273 
2274 
2279 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
2280  uint64_t remote_addr, uct_rkey_t rkey)
2281 {
2282  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
2284 
2285 
2290 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
2291  void *arg, uint64_t remote_addr,
2292  uct_rkey_t rkey)
2293 {
2294  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
2295 }
2296 
2297 
2327 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
2328  const uct_iov_t *iov, size_t iovcnt,
2329  uint64_t remote_addr, uct_rkey_t rkey,
2330  uct_completion_t *comp)
2331 {
2332  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2333 }
2334 
2335 
2340 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
2341  uint64_t remote_addr, uct_rkey_t rkey)
2343  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
2344 }
2345 
2346 
2351 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
2352  void *arg, size_t length,
2353  uint64_t remote_addr, uct_rkey_t rkey,
2354  uct_completion_t *comp)
2356  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
2357  rkey, comp);
2358 }
2359 
2360 
2390 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
2391  const uct_iov_t *iov, size_t iovcnt,
2392  uint64_t remote_addr, uct_rkey_t rkey,
2393  uct_completion_t *comp)
2394 {
2395  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
2396 }
2397 
2398 
2403 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
2404  const void *payload, unsigned length)
2406  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
2407 }
2408 
2409 
2414 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
2415  uct_pack_callback_t pack_cb, void *arg,
2416  unsigned flags)
2417 {
2418  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
2419 }
2420 
2421 
2459 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
2460  const void *header,
2461  unsigned header_length,
2462  const uct_iov_t *iov, size_t iovcnt,
2463  unsigned flags,
2464  uct_completion_t *comp)
2465 {
2466  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
2467  flags, comp);
2468 }
2469 
2474 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
2475  uint64_t remote_addr, uct_rkey_t rkey,
2476  uint64_t *result, uct_completion_t *comp)
2477 {
2478  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
2479 }
2480 
2481 
2486 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
2487  uint64_t remote_addr, uct_rkey_t rkey,
2488  uint32_t *result, uct_completion_t *comp)
2490  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
2491 }
2492 
2493 
2498 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
2499  uint32_t value, uint64_t remote_addr,
2500  uct_rkey_t rkey)
2502  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
2503 }
2504 
2505 
2510 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
2511  uint64_t value, uint64_t remote_addr,
2512  uct_rkey_t rkey)
2514  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
2515 }
2516 
2517 
2522 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2523  uint32_t value, uint32_t *result,
2524  uint64_t remote_addr, uct_rkey_t rkey,
2526 {
2527  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
2528  remote_addr, rkey, comp);
2529 }
2530 
2531 
2536 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2537  uint64_t value, uint64_t *result,
2538  uint64_t remote_addr, uct_rkey_t rkey,
2539  uct_completion_t *comp)
2540 {
2541  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
2542  remote_addr, rkey, comp);
2543 }
2544 
2545 
2566 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
2567  uct_pending_req_t *req,
2568  unsigned flags)
2569 {
2570  return ep->iface->ops.ep_pending_add(ep, req, flags);
2571 }
2572 
2573 
2585 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
2587  void *arg)
2588 {
2589  ep->iface->ops.ep_pending_purge(ep, cb, arg);
2590 }
2591 
2592 
2621 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
2622  uct_completion_t *comp)
2623 {
2624  return ep->iface->ops.ep_flush(ep, flags, comp);
2625 }
2626 
2627 
2640 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
2641 {
2642  return ep->iface->ops.ep_fence(ep, flags);
2643 }
2644 
2645 
2668 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
2669  const void *data, size_t length)
2670 {
2671  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
2672 }
2673 
2674 
2698 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
2699  uint64_t imm,
2700  uct_pack_callback_t pack_cb,
2701  void *arg, unsigned flags)
2702 {
2703  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
2704 }
2705 
2706 
2744 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
2745  uint64_t imm,
2746  const uct_iov_t *iov,
2747  size_t iovcnt,
2748  unsigned flags,
2749  uct_completion_t *comp)
2750 {
2751  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
2752  comp);
2753 }
2754 
2755 
2793  const void *header,
2794  unsigned header_length,
2795  const uct_iov_t *iov,
2796  size_t iovcnt,
2797  unsigned flags,
2798  uct_completion_t *comp)
2799 {
2800  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
2801  iov, iovcnt, flags, comp);
2802 }
2803 
2804 
2823 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
2824 {
2825  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
2826 }
2827 
2828 
2849  const void* header,
2850  unsigned header_length,
2851  unsigned flags)
2852 {
2853  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
2854  flags);
2855 }
2856 
2857 
2889  uct_tag_t tag,
2890  uct_tag_t tag_mask,
2891  const uct_iov_t *iov,
2892  size_t iovcnt,
2893  uct_tag_context_t *ctx)
2894 {
2895  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
2896 }
2897 
2898 
2922  uct_tag_context_t *ctx,
2923  int force)
2924 {
2925  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
2926 }
2927 
2928 
2947 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
2948 {
2949  iface->ops.iface_progress_enable(iface, flags);
2950 }
2951 
2952 
2972 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
2973 {
2974  iface->ops.iface_progress_disable(iface, flags);
2975 }
2976 
2977 
2982 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
2983 {
2984  return iface->ops.iface_progress(iface);
2985 }
2986 
3007 
3008 
3015 void uct_cm_close(uct_cm_h cm);
3016 
3017 
3029 
3030 
3049 ucs_status_t uct_listener_create(uct_cm_h cm, const struct sockaddr *saddr,
3050  socklen_t socklen,
3051  const uct_listener_params_t *params,
3052  uct_listener_h *listener_p);
3053 
3054 
3061 void uct_listener_destroy(uct_listener_h listener);
3062 
3063 
3079  uct_conn_request_h conn_request);
3080 
3081 
3095  uct_listener_attr_t *listener_attr);
3096 
3097 
3103 END_C_DECLS
3104 
3105 #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/MD configuration.
uct_cm_attr_field
UCT connection manager attributes field mask.
Definition: uct.h:712
uct_tag_unexp_rndv_cb_t rndv_cb
Definition: uct.h:1009
Definition: uct.h:682
size_t max_conn_priv
Definition: uct.h:1125
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:2759
uct_progress_types
UCT progress types.
Definition: uct.h:502
Definition: uct.h:464
Definition: uct.h:697
uct_error_handler_t err_handler
Definition: uct.h:998
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:679
Definition: uct.h:768
struct uct_tl_resource_desc uct_tl_resource_desc_t
Communication resource descriptor.
void uct_config_release(void *config)
Release configuration memory returned from uct_md_iface_config_read() or from 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:289
ucs_status_t uct_md_detect_memory_type(uct_md_h md, void *addr, size_t length, ucs_memory_type_t *mem_type_p)
Detect memory type.
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:665
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:2807
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:2513
ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events)
Turn on event notification for the next event.
void * uct_mem_h
Definition: uct_def.h:75
int count
Definition: uct.h:1257
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:367
Structure for scatter-gather I/O.
Definition: uct_def.h:136
uct_component_attr_field
UCT component attributes field mask.
Definition: uct.h:217
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
void * type
Definition: uct.h:1235
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:515
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:2600
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:444
Definition: uct.h:637
Definition: uct.h:584
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:2713
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:2636
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:467
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:292
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:2936
int backlog
Definition: uct.h:1165
Definition: uct.h:580
uct_linear_growth_t reg_cost
Definition: uct.h:1197
uct_mem_advice_t
list of UCT memory use advice
Definition: uct.h:696
void uct_listener_destroy(uct_listener_h listener)
Destroy a transport listener.
Parameters used for interface creation.
Definition: uct.h:949
struct uct_md_config uct_md_config_t
Definition: uct_def.h:73
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:2342
uint64_t field_mask
Definition: uct.h:1023
Memory domain resource descriptor.
Definition: uct.h:205
Definition: uct.h:638
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:311
size_t iface_addr_len
Definition: uct.h:922
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:94
uct_listener_params_field
UCT listener created by uct_listener_create parameters field mask.
Definition: uct.h:738
void * address
Definition: uct.h:1216
Definition: uct.h:641
const uct_device_addr_t * dev_addr
Definition: uct.h:1041
uct_sockaddr_priv_pack_callback_t sockaddr_pack_cb
Definition: uct.h:1074
UCT component attributes.
Definition: uct.h:232
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
double dedicated
Definition: uct.h:816
Definition: uct.h:291
uct_cb_flags
Callback flags.
Definition: uct.h:530
uint64_t field_mask
Definition: uct.h:1139
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:1318
uct_listener_attr_field
UCT listener attributes field mask.
Definition: uct.h:725
cpu_set_t local_cpus
Definition: uct.h:1203
struct uct_md_attr::@16 cap
Definition: uct.h:623
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:2283
uct_alloc_method_t method
Definition: uct.h:1218
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:1133
struct uct_worker * uct_worker_h
Definition: uct_def.h:85
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:2489
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:2525
Interface attributes: capabilities and limitations.
Definition: uct.h:825
Definition: uct.h:671
int uct_worker_cb_id_t
Definition: uct_def.h:100
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:2294
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:299
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:2355
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:934
Definition: uct.h:505
ucs_cpu_set_t cpu_mask
Definition: uct.h:955
Definition: uct.h:780
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:2250
Definition: uct.h:476
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:2405
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:2987
char name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:242
struct uct_iface_addr uct_iface_addr_t
Definition: uct_def.h:89
uint64_t field_mask
Definition: uct.h:239
ucs_thread_mode_t
Thread sharing mode.
Definition: thread_mode.h:19
Definition: uct.h:466
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_ep_addr uct_ep_addr_t
Definition: uct_def.h:90
Definition: uct.h:762
Definition: uct.h:293
Definition: uct.h:290
void(* uct_ep_client_connect_cb_t)(uct_ep_h ep, void *arg, const uct_cm_remote_data_t *remote_data, ucs_status_t status)
Callback to process an incoming connection response on the client side from the server.
Definition: uct_def.h:445
struct uct_md * uct_md_h
Memory domain handler.
Definition: uct_def.h:77
uct_ep_params_field
UCT endpoint created by uct_ep_create parameters field mask.
Definition: uct.h:757
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:2683
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:2418
Definition: uct.h:281
uct_linear_growth_t latency
Definition: uct.h:936
Remote key with its type.
Definition: uct.h:1232
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:569
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition: uct.h:2838
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:312
uint8_t priority
Definition: uct.h:937
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:323
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:588
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:206
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:2474
char tl_name[UCT_TL_NAME_MAX]
Definition: uct.h:310
Definition: uct.h:667
uct_iface_h iface
Definition: uct.h:1029
ucs_status_t
Status codes.
Definition: status.h:45
char component_name[UCT_COMPONENT_NAME_MAX]
Definition: uct.h:1201
Definition: uct.h:531
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:480
Definition: uct.h:294
void(* uct_ep_server_connect_cb_t)(uct_ep_h ep, void *arg, ucs_status_t status)
Callback to process an incoming connection establishment acknowledgment on the server side listener,...
Definition: uct_def.h:423
void * user_data
Definition: uct.h:1034
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:1217
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:556
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:659
double shared
Definition: uct.h:817
void * err_handler_arg
Definition: uct.h:996
Parameters for creating a listener object uct_listener_h by uct_listener_create.
Definition: uct.h:1153
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition: uct.h:1270
Definition: uct.h:626
Definition: uct.h:443
Definition: uct.h:771
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:265
Definition: uct.h:503
uct_cm_h cm
Definition: uct.h:1080
Definition: uct.h:647
Connection manager attributes, capabilities and limitations.
Definition: uct.h:1113
struct uct_listener * uct_listener_h
Definition: uct_def.h:96
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:577
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
Definition: uct.h:644
void * user_data
Definition: uct.h:1175
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition: uct_def.h:336
Definition: uct.h:448
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:2962
struct sockaddr_storage listen_sockaddr
Definition: uct.h:927
uct_ppn_bandwidth_t bandwidth
Definition: uct.h:935
Definition: uct.h:221
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:2551
ucs_memory_type_t mem_type
Definition: uct.h:1219
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:2429
uct_flush_flags
Flush modifiers.
Definition: uct.h:475
struct uct_component * uct_component_h
Definition: uct_def.h:70
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_alloc_method_t
Memory allocation methods.
Definition: uct.h:440
uint64_t uct_tag_t
Definition: uct_def.h:99
Definition: uct.h:441
struct uct_iface_config uct_iface_config_t
Definition: uct_def.h:72
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:1057
ucs_status_t uct_config_modify(void *config, const char *name, const char *value)
Modify interface/MD configuration.
uct_pending_callback_t func
Definition: uct.h:1269
uint64_t open_mode
Definition: uct.h:957
uint64_t field_mask
Definition: uct.h:1119
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:532
Definition: uct.h:645
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:1304
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:2269
struct uct_md_resource_desc uct_md_resource_desc_t
Memory domain resource descriptor.
uint32_t sockaddr_cb_flags
Definition: uct.h:1064
unsigned md_resource_count
Definition: uct.h:245
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:2863
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:554
Definition: uct.h:759
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:2581
size_t device_addr_len
Definition: uct.h:921
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:504
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:1017
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:104
uct_ep_disconnect_cb_t disconnect_cb
Definition: uct.h:1105
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:622
Definition: uct.h:783
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:991
Memory domain attributes.
Definition: uct.h:1187
Definition: uct.h:516
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:575
uct_completion_callback_t func
Definition: uct.h:1256
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:101
size_t ep_addr_len
Definition: uct.h:923
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:677
void uct_cm_close(uct_cm_h cm)
Close a connection manager.
ucs_status_t uct_cm_open(uct_component_h component, uct_worker_h worker, uct_cm_h *cm_p)
Open 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:446
void(* uct_listener_conn_request_callback_t)(uct_listener_h listener, void *arg, const char *local_dev_name, uct_conn_request_h conn_request, const uct_cm_remote_data_t *remote_data)
Callback to process an incoming connection request on the server side listener in a connection manage...
Definition: uct_def.h:398
double overhead
Definition: uct.h:802
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:2655
uct_mem_h memh
Definition: uct.h:1221
Definition: uct.h:639
size_t rx_headroom
Definition: uct.h:993
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)
Callback to process unexpected eager tagged message.
Definition: uct_def.h:533
uct_listener_conn_request_callback_t conn_request_cb
Definition: uct.h:1170
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition: uct.h:1288
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:698
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:250
ucs_status_t(* uct_pending_callback_t)(uct_pending_req_t *self)
Callback to process pending requests.
Definition: uct_def.h:281
Definition: uct.h:445
union uct_iface_params::@12 mode
size_t rkey_packed_size
Definition: uct.h:1202
Communication resource descriptor.
Definition: uct.h:309
Pending request.
Definition: uct.h:1268
uct_md_resource_desc_t * md_resources
Definition: uct.h:260
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:815
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:2216
uct_conn_request_h conn_request
Definition: uct.h:1086
const uct_iface_addr_t * iface_addr
Definition: uct.h:1048
uct_md_h md
Definition: uct.h:1220
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:71
Definition: uct.h:714
Definition: uct.h:218
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:1144
Definition: types.h:117
size_t max_num_eps
Definition: uct.h:938
void * eager_arg
Definition: uct.h:1004
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:953
struct uct_iface_attr::@3 cap
struct uct_ep * uct_ep_h
Definition: uct_def.h:74
uct_tag_unexp_eager_cb_t eager_cb
Definition: uct.h:1006
Definition: uct.h:687
ssize_t(* uct_sockaddr_priv_pack_callback_t)(void *arg, const char *dev_name, void *priv_data)
Callback to fill the user's private data in a client-server flow.
Definition: uct_def.h:499
union uct_ep_params::@15 sockaddr_connect_cb
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:1281
ucs_status_t uct_iface_query(uct_iface_h iface, uct_iface_attr_t *iface_attr)
Get interface attributes.
uint64_t field_mask
Definition: uct.h:1159
double growth
Definition: uct.h:803
Definition: uct.h:801
Definition: uct.h:650
Completion handle.
Definition: uct.h:1255
uct_rkey_t rkey
Definition: uct.h:1233
void(* uct_completion_callback_t)(uct_completion_t *self, ucs_status_t status)
Callback to process send completion.
Definition: uct_def.h:263
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:2305
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:2366
uint32_t err_handler_flags
Definition: uct.h:1001
Definition: uct.h:678
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:88
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:2997
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:232
uintptr_t uct_rkey_t
Definition: uct_def.h:76
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:2903
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.
char priv[UCT_TAG_PRIV_LEN]
Definition: uct.h:1322
Definition: uct.h:465
size_t max_conn_priv
Definition: uct.h:924
void * handle
Definition: uct.h:1234
Definition: uct.h:447
Definition: uct.h:660
void * rndv_arg
Definition: uct.h:1007
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:2537
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:2501
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:463
char dev_name[UCT_DEVICE_NAME_MAX]
Definition: uct.h:311
Describes a memory allocated by UCT.
Definition: uct.h:1215
Definition: uct.h:765