UCX  1.6
Unified Communication X
uct.h
1 
10 #ifndef UCT_H_
11 #define UCT_H_
12 
13 #include <uct/api/uct_def.h>
14 #include <uct/api/tl.h>
15 #include <uct/api/version.h>
16 #include <ucs/async/async_fwd.h>
17 #include <ucs/datastruct/callbackq.h>
18 #include <ucs/type/status.h>
19 #include <ucs/type/thread_mode.h>
20 #include <ucs/type/cpu_set.h>
21 #include <ucs/stats/stats_fwd.h>
22 #include <ucs/sys/compiler_def.h>
23 
24 #include <sys/socket.h>
25 #include <stdio.h>
26 #include <sched.h>
27 
28 BEGIN_C_DECLS
29 
115 typedef struct uct_md_resource_desc {
116  char md_name[UCT_MD_NAME_MAX];
118 
119 
124 typedef enum {
131 
132 
144 typedef struct uct_tl_resource_desc {
145  char tl_name[UCT_TL_NAME_MAX];
146  char dev_name[UCT_DEVICE_NAME_MAX];
149 
150 #define UCT_TL_RESOURCE_DESC_FMT "%s/%s"
151 #define UCT_TL_RESOURCE_DESC_ARG(_resource) (_resource)->tl_name, (_resource)->dev_name
152 
153 
161 typedef enum uct_atomic_op {
162  UCT_ATOMIC_OP_ADD,
163  UCT_ATOMIC_OP_AND,
164  UCT_ATOMIC_OP_OR,
165  UCT_ATOMIC_OP_XOR,
166  UCT_ATOMIC_OP_SWAP,
167  UCT_ATOMIC_OP_CSWAP,
168  UCT_ATOMIC_OP_LAST
169 } uct_atomic_op_t;
170 
171 
182  /* Active message capabilities */
183 #define UCT_IFACE_FLAG_AM_SHORT UCS_BIT(0)
184 #define UCT_IFACE_FLAG_AM_BCOPY UCS_BIT(1)
185 #define UCT_IFACE_FLAG_AM_ZCOPY UCS_BIT(2)
187 #define UCT_IFACE_FLAG_PENDING UCS_BIT(3)
189  /* PUT capabilities */
190 #define UCT_IFACE_FLAG_PUT_SHORT UCS_BIT(4)
191 #define UCT_IFACE_FLAG_PUT_BCOPY UCS_BIT(5)
192 #define UCT_IFACE_FLAG_PUT_ZCOPY UCS_BIT(6)
194  /* GET capabilities */
195 #define UCT_IFACE_FLAG_GET_SHORT UCS_BIT(8)
196 #define UCT_IFACE_FLAG_GET_BCOPY UCS_BIT(9)
197 #define UCT_IFACE_FLAG_GET_ZCOPY UCS_BIT(10)
199  /* Atomic operations domain */
200 #define UCT_IFACE_FLAG_ATOMIC_CPU UCS_BIT(30)
202 #define UCT_IFACE_FLAG_ATOMIC_DEVICE UCS_BIT(31)
206  /* Error handling capabilities */
207 #define UCT_IFACE_FLAG_ERRHANDLE_SHORT_BUF UCS_BIT(32)
208 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_BUF UCS_BIT(33)
209 #define UCT_IFACE_FLAG_ERRHANDLE_ZCOPY_BUF UCS_BIT(34)
210 #define UCT_IFACE_FLAG_ERRHANDLE_AM_ID UCS_BIT(35)
211 #define UCT_IFACE_FLAG_ERRHANDLE_REMOTE_MEM UCS_BIT(36)
212 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_LEN UCS_BIT(37)
213 #define UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE UCS_BIT(38)
215 #define UCT_IFACE_FLAG_EP_CHECK UCS_BIT(39)
217  /* Connection establishment */
218 #define UCT_IFACE_FLAG_CONNECT_TO_IFACE UCS_BIT(40)
219 #define UCT_IFACE_FLAG_CONNECT_TO_EP UCS_BIT(41)
220 #define UCT_IFACE_FLAG_CONNECT_TO_SOCKADDR UCS_BIT(42)
222  /* Special transport flags */
223 #define UCT_IFACE_FLAG_AM_DUP UCS_BIT(43)
227  /* Callback invocation */
228 #define UCT_IFACE_FLAG_CB_SYNC UCS_BIT(44)
231 #define UCT_IFACE_FLAG_CB_ASYNC UCS_BIT(45)
238  /* Event notification */
239 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(46)
241 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(47)
243 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(48)
246  /* Tag matching operations */
247 #define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
248 #define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
249 #define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
250 #define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
260 typedef enum {
270 
271 
284  UCT_EVENT_SEND_COMP = UCS_BIT(0),
285  UCT_EVENT_RECV = UCS_BIT(1),
286  UCT_EVENT_RECV_SIG = UCS_BIT(2)
288 };
289 
290 
295 enum uct_flush_flags {
300  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0)
309 };
316 enum uct_progress_types {
317  UCT_PROGRESS_SEND = UCS_BIT(0),
318  UCT_PROGRESS_RECV = UCS_BIT(1),
319  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
322 };
323 
324 
329 enum uct_msg_flags {
330  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0)
335 };
336 
337 
345  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
346  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
361 };
362 
363 
368 enum uct_iface_open_mode {
370  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
371 
375 
379 };
380 
381 
391  UCT_IFACE_PARAM_FIELD_CPU_MASK = UCS_BIT(0),
392 
394  UCT_IFACE_PARAM_FIELD_OPEN_MODE = UCS_BIT(1),
395 
398  UCT_IFACE_PARAM_FIELD_DEVICE = UCS_BIT(2),
399 
402  UCT_IFACE_PARAM_FIELD_SOCKADDR = UCS_BIT(3),
403 
412 
415 
418 
421 
424 
427 
430 };
431 
436 typedef enum {
445 
450 enum {
451  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
452  UCT_MD_FLAG_REG = UCS_BIT(1),
453  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
455  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
458  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
459  UCT_MD_FLAG_FIXED = UCS_BIT(5),
461  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
464  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7)
467 };
469 /*
470  * @ingroup UCT_MD
471  * @brief Memory types
472  */
473 typedef enum {
474  UCT_MD_MEM_TYPE_HOST = 0,
475  UCT_MD_MEM_TYPE_CUDA,
476  UCT_MD_MEM_TYPE_CUDA_MANAGED,
477  UCT_MD_MEM_TYPE_ROCM,
478  UCT_MD_MEM_TYPE_ROCM_MANAGED,
479  UCT_MD_MEM_TYPE_LAST
480 } uct_memory_type_t;
481 
482 
487 enum uct_md_mem_flags {
488  UCT_MD_MEM_FLAG_NONBLOCK = UCS_BIT(0),
493  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
495  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
499  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
504  /* memory access flags */
505  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
506  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
507  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
513 
517 };
518 
519 
524 typedef enum {
531 
532 
542  UCT_EP_PARAM_FIELD_IFACE = UCS_BIT(0),
543 
545  UCT_EP_PARAM_FIELD_USER_DATA = UCS_BIT(1),
546 
548  UCT_EP_PARAM_FIELD_DEV_ADDR = UCS_BIT(2),
549 
551  UCT_EP_PARAM_FIELD_IFACE_ADDR = UCS_BIT(3),
552 
554  UCT_EP_PARAM_FIELD_SOCKADDR = UCS_BIT(4),
558 
561 };
562 
564 /*
565  * @ingroup UCT_RESOURCE
566  * @brief Linear growth specification: f(x) = overhead + growth * x
567  *
568  * This structure specifies a linear function which is used as basis for time
569  * estimation of various UCT operations. This information can be used to select
570  * the best performing combination of UCT operations.
571  */
572 typedef struct uct_linear_growth {
573  double overhead;
574  double growth;
576 
577 
582 struct uct_iface_attr {
583  struct {
584  struct {
585  size_t max_short;
586  size_t max_bcopy;
587  size_t min_zcopy;
590  size_t max_zcopy;
593  size_t opt_zcopy_align;
595  size_t align_mtu;
596  size_t max_iov;
599  } put;
601  struct {
602  size_t max_short;
603  size_t max_bcopy;
604  size_t min_zcopy;
607  size_t max_zcopy;
610  size_t opt_zcopy_align;
612  size_t align_mtu;
613  size_t max_iov;
616  } get;
618  struct {
619  size_t max_short;
620  size_t max_bcopy;
621  size_t min_zcopy;
624  size_t max_zcopy;
627  size_t opt_zcopy_align;
629  size_t align_mtu;
630  size_t max_hdr;
631  size_t max_iov;
634  } am;
636  struct {
637  struct {
638  size_t min_recv;
639  size_t max_zcopy;
641  size_t max_iov;
644  size_t max_outstanding;
646  } recv;
647 
648  struct {
649  size_t max_short;
651  size_t max_bcopy;
653  size_t max_zcopy;
655  size_t max_iov;
657  } eager;
659  struct {
660  size_t max_zcopy;
662  size_t max_hdr;
665  size_t max_iov;
667  } rndv;
668  } tag;
670  struct {
671  uint64_t op_flags;
672  uint64_t fop_flags;
673  } atomic32, atomic64;
675  uint64_t flags;
676  } cap;
678  size_t device_addr_len;
679  size_t iface_addr_len;
680  size_t ep_addr_len;
681  size_t max_conn_priv;
684  /*
685  * The following fields define expected performance of the communication
686  * interface, this would usually be a combination of device and system
687  * characteristics and determined at run time.
688  */
689  double overhead;
690  double bandwidth;
692  uint8_t priority;
693 };
703 struct uct_iface_params {
707  uint64_t field_mask;
709  ucs_cpu_set_t cpu_mask;
711  uint64_t open_mode;
713  union {
720  struct {
721  const char *tl_name;
722  const char *dev_name;
723  } device;
731  struct {
732  ucs_sock_addr_t listen_sockaddr;
734  void *conn_request_arg;
736  uct_sockaddr_conn_request_callback_t conn_request_cb;
739  uint32_t cb_flags;
740  } sockaddr;
741  } mode;
742 
745  ucs_stats_node_t *stats_root;
747  size_t rx_headroom;
748 
750  void *err_handler_arg;
755  uint32_t err_handler_flags;
756 
758  void *eager_arg;
761  void *rndv_arg;
764 };
766 
771 struct uct_ep_params {
777  uint64_t field_mask;
783 
787  void *user_data;
788 
795 
810  const ucs_sock_addr_t *sockaddr;
811 
817  uint32_t sockaddr_cb_flags;
818 
828 };
829 
830 
839 struct uct_md_attr {
840  struct {
841  size_t max_alloc;
842  size_t max_reg;
843  uint64_t flags;
844  uint64_t reg_mem_types;
845  uct_memory_type_t mem_type;
846  } cap;
847 
852  char component_name[UCT_MD_COMPONENT_NAME_MAX];
853  size_t rkey_packed_size;
854  cpu_set_t local_cpus;
855 };
856 
857 
866 typedef struct uct_allocated_memory {
867  void *address;
868  size_t length;
870  uct_memory_type_t mem_type;
871  uct_md_h md;
872  uct_mem_h memh;
874 
875 
883 typedef struct uct_rkey_bundle {
885  void *handle;
886  void *type;
888 
889 
906 struct uct_completion {
908  int count;
909 };
910 
911 
919 struct uct_pending_req {
921  char priv[UCT_PENDING_REQ_PRIV_LEN];
922 };
924 
932 struct uct_tag_context {
939  void (*tag_consumed_cb)(uct_tag_context_t *self);
940 
955  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
956  size_t length, ucs_status_t status);
957 
969  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
970  unsigned header_length, ucs_status_t status);
971 
973  char priv[UCT_TAG_PRIV_LEN];
974 };
975 
976 
977 extern const char *uct_alloc_method_names[];
978 
979 
993  unsigned *num_resources_p);
994 
1005 
1006 
1024 ucs_status_t uct_md_open(const char *md_name, const uct_md_config_t *config,
1025  uct_md_h *md_p);
1026 
1033 void uct_md_close(uct_md_h md);
1034 
1035 
1051  uct_tl_resource_desc_t **resources_p,
1052  unsigned *num_resources_p);
1053 
1054 
1065 
1066 
1081 ucs_status_t uct_worker_create(ucs_async_context_t *async,
1082  ucs_thread_mode_t thread_mode,
1083  uct_worker_h *worker_p);
1084 
1085 
1092 void uct_worker_destroy(uct_worker_h worker);
1093 
1094 
1118 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
1119  void *arg, unsigned flags,
1120  uct_worker_cb_id_t *id_p);
1121 
1122 
1144  uct_worker_cb_id_t *id_p);
1145 
1146 
1174 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
1175  const char *env_prefix, const char *filename,
1176  uct_iface_config_t **config_p);
1177 
1178 
1186 void uct_config_release(void *config);
1187 
1188 
1202 ucs_status_t uct_config_get(void *config, const char *name, char *value,
1203  size_t max);
1204 
1205 
1216 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
1217 
1218 
1235  const uct_iface_params_t *params,
1236  const uct_iface_config_t *config,
1237  uct_iface_h *iface_p);
1238 
1239 
1246 void uct_iface_close(uct_iface_h iface);
1247 
1248 
1257 
1258 
1271 
1272 
1284 
1285 
1304 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
1305  const uct_iface_addr_t *iface_addr);
1306 
1307 
1325 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
1326  uct_completion_t *comp);
1327 
1328 
1342 
1343 
1363 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
1364 
1365 
1381 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
1382  const char *name, uct_allocated_memory_t *mem);
1383 
1384 
1392 
1393 
1412  uct_am_callback_t cb, void *arg, uint32_t flags);
1413 
1414 
1429  void *arg);
1430 
1431 
1444  uct_conn_request_h conn_request);
1445 
1446 
1460  uct_conn_request_h conn_request);
1461 
1462 
1496 ucs_status_t uct_ep_create(const uct_ep_params_t *params, uct_ep_h *ep_p);
1497 
1498 
1505 void uct_ep_destroy(uct_ep_h ep);
1506 
1507 
1517 
1518 
1530  const uct_ep_addr_t *ep_addr);
1531 
1532 
1541 
1542 
1560 ucs_status_t uct_md_mem_alloc(uct_md_h md, size_t *length_p, void **address_p,
1561  unsigned flags, const char *name, uct_mem_h *memh_p);
1562 
1563 
1572 
1573 
1591 ucs_status_t uct_md_mem_advise(uct_md_h md, uct_mem_h memh, void *addr,
1592  size_t length, uct_mem_advice_t advice);
1593 
1594 
1608 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
1609  unsigned flags, uct_mem_h *memh_p);
1610 
1611 
1620 
1621 
1633 int uct_md_is_mem_type_owned(uct_md_h md, void *addr, size_t length);
1634 
1669 ucs_status_t uct_mem_alloc(void *addr, size_t min_length, unsigned flags,
1670  uct_alloc_method_t *methods, unsigned num_methods,
1671  uct_md_h *mds, unsigned num_mds, const char *name,
1672  uct_allocated_memory_t *mem);
1673 
1674 
1685 
1700 ucs_status_t uct_md_config_read(const char *name, const char *env_prefix,
1701  const char *filename,
1702  uct_md_config_t **config_p);
1703 
1704 
1705 
1728 
1729 
1741 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
1742 
1743 
1754 ucs_status_t uct_rkey_unpack(const void *rkey_buffer, uct_rkey_bundle_t *rkey_ob);
1755 
1756 
1776 ucs_status_t uct_rkey_ptr(uct_rkey_bundle_t *rkey_ob, uint64_t remote_addr,
1777  void **addr_p);
1778 
1779 
1788 
1789 
1804 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
1805 {
1806  return ucs_callbackq_dispatch(&worker->progress_q);
1807 }
1808 
1809 
1838 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
1839  uct_completion_t *comp)
1840 {
1841  return iface->ops.iface_flush(iface, flags, comp);
1842 }
1843 
1857 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
1858 {
1859  return iface->ops.iface_fence(iface, flags);
1860 }
1861 
1871 UCT_INLINE_API void uct_iface_release_desc(void *desc)
1873  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
1874  release_desc->cb(release_desc, desc);
1875 }
1876 
1877 
1882 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
1883  uint64_t remote_addr, uct_rkey_t rkey)
1884 {
1885  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
1887 
1888 
1893 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
1894  void *arg, uint64_t remote_addr,
1895  uct_rkey_t rkey)
1896 {
1897  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
1898 }
1899 
1900 
1930 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
1931  const uct_iov_t *iov, size_t iovcnt,
1932  uint64_t remote_addr, uct_rkey_t rkey,
1933  uct_completion_t *comp)
1934 {
1935  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
1936 }
1937 
1938 
1943 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
1944  uint64_t remote_addr, uct_rkey_t rkey)
1946  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
1947 }
1948 
1949 
1954 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
1955  void *arg, size_t length,
1956  uint64_t remote_addr, uct_rkey_t rkey,
1957  uct_completion_t *comp)
1959  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
1960  rkey, comp);
1961 }
1962 
1963 
1993 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
1994  const uct_iov_t *iov, size_t iovcnt,
1995  uint64_t remote_addr, uct_rkey_t rkey,
1996  uct_completion_t *comp)
1997 {
1998  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
1999 }
2000 
2001 
2006 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
2007  const void *payload, unsigned length)
2009  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
2010 }
2011 
2012 
2017 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
2018  uct_pack_callback_t pack_cb, void *arg,
2019  unsigned flags)
2020 {
2021  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
2022 }
2023 
2024 
2056 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
2057  const void *header,
2058  unsigned header_length,
2059  const uct_iov_t *iov, size_t iovcnt,
2060  unsigned flags,
2061  uct_completion_t *comp)
2062 {
2063  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
2064  flags, comp);
2065 }
2066 
2071 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
2072  uint64_t remote_addr, uct_rkey_t rkey,
2073  uint64_t *result, uct_completion_t *comp)
2074 {
2075  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
2076 }
2077 
2078 
2083 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
2084  uint64_t remote_addr, uct_rkey_t rkey,
2085  uint32_t *result, uct_completion_t *comp)
2087  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
2088 }
2089 
2090 
2095 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
2096  uint32_t value, uint64_t remote_addr,
2097  uct_rkey_t rkey)
2099  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
2100 }
2101 
2102 
2107 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
2108  uint64_t value, uint64_t remote_addr,
2109  uct_rkey_t rkey)
2111  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
2112 }
2113 
2114 
2119 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2120  uint32_t value, uint32_t *result,
2121  uint64_t remote_addr, uct_rkey_t rkey,
2123 {
2124  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
2125  remote_addr, rkey, comp);
2126 }
2127 
2128 
2133 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2134  uint64_t value, uint64_t *result,
2135  uint64_t remote_addr, uct_rkey_t rkey,
2136  uct_completion_t *comp)
2137 {
2138  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
2139  remote_addr, rkey, comp);
2140 }
2141 
2142 
2163 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
2164  uct_pending_req_t *req,
2165  unsigned flags)
2166 {
2167  return ep->iface->ops.ep_pending_add(ep, req, flags);
2168 }
2169 
2170 
2182 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
2184  void *arg)
2185 {
2186  ep->iface->ops.ep_pending_purge(ep, cb, arg);
2187 }
2188 
2189 
2218 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
2219  uct_completion_t *comp)
2220 {
2221  return ep->iface->ops.ep_flush(ep, flags, comp);
2222 }
2223 
2224 
2237 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
2238 {
2239  return ep->iface->ops.ep_fence(ep, flags);
2240 }
2241 
2242 
2265 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
2266  const void *data, size_t length)
2267 {
2268  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
2269 }
2270 
2271 
2295 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
2296  uint64_t imm,
2297  uct_pack_callback_t pack_cb,
2298  void *arg, unsigned flags)
2299 {
2300  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
2301 }
2302 
2303 
2341 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
2342  uint64_t imm,
2343  const uct_iov_t *iov,
2344  size_t iovcnt,
2345  unsigned flags,
2346  uct_completion_t *comp)
2347 {
2348  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
2349  comp);
2350 }
2351 
2352 
2390  const void *header,
2391  unsigned header_length,
2392  const uct_iov_t *iov,
2393  size_t iovcnt,
2394  unsigned flags,
2395  uct_completion_t *comp)
2396 {
2397  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
2398  iov, iovcnt, flags, comp);
2399 }
2400 
2401 
2420 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
2421 {
2422  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
2423 }
2424 
2425 
2446  const void* header,
2447  unsigned header_length,
2448  unsigned flags)
2449 {
2450  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
2451  flags);
2452 }
2453 
2454 
2486  uct_tag_t tag,
2487  uct_tag_t tag_mask,
2488  const uct_iov_t *iov,
2489  size_t iovcnt,
2490  uct_tag_context_t *ctx)
2491 {
2492  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
2493 }
2494 
2495 
2519  uct_tag_context_t *ctx,
2520  int force)
2521 {
2522  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
2523 }
2524 
2525 
2544 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
2545 {
2546  iface->ops.iface_progress_enable(iface, flags);
2547 }
2548 
2549 
2569 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
2570 {
2571  iface->ops.iface_progress_disable(iface, flags);
2572 }
2573 
2574 
2579 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
2580 {
2581  return iface->ops.iface_progress(iface);
2582 }
2583 
2590 END_C_DECLS
2591 
2592 #endif
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_tag_unexp_rndv_cb_t rndv_cb
Definition: uct.h:778
int uct_md_is_mem_type_owned(uct_md_h md, void *addr, size_t length)
Check if memory type is owned by MD.
Definition: uct.h:525
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:2356
uct_progress_types
UCT progress types.
Definition: uct.h:331
Definition: uct.h:299
Definition: uct.h:540
uct_error_handler_t err_handler
Definition: uct.h:767
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:522
Definition: uct.h:566
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:124
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:508
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:2404
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:2110
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:74
int count
Definition: uct.h:923
Structure for scatter-gather I/O.
Definition: uct_def.h:128
uct_memory_type_t mem_type
Definition: uct.h:885
void * type
Definition: uct.h:901
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:344
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:2197
Definition: uct.h:279
Definition: uct.h:413
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:2310
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:2233
Definition: uct.h:127
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:2533
Definition: uct.h:409
uct_linear_growth_t reg_cost
Definition: uct.h:863
uct_mem_advice_t
list of UCT memory use advice
Definition: uct.h:539
struct uct_md_attr::@14 cap
Parameters used for interface creation.
Definition: uct.h:718
struct uct_md_config uct_md_config_t
Definition: uct_def.h:72
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:1945
uint64_t field_mask
Definition: uct.h:792
ucs_status_t uct_md_open(const char *md_name, const uct_md_config_t *config, uct_md_h *md_p)
Open a memory domain.
Memory domain resource descriptor.
Definition: uct.h:115
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:243
size_t iface_addr_len
Definition: uct.h:694
ucs_status_t uct_iface_get_address(uct_iface_h iface, uct_iface_addr_t *addr)
Get interface address.
void * address
Definition: uct.h:882
Definition: uct.h:473
const uct_device_addr_t * dev_addr
Definition: uct.h:809
uct_sockaddr_priv_pack_callback_t sockaddr_pack_cb
Definition: uct.h:842
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
struct uct_iface_attr::@2 cap
Definition: uct.h:126
double bandwidth
Definition: uct.h:705
uct_cb_flags
Callback flags.
Definition: uct.h:359
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:984
cpu_set_t local_cpus
Definition: uct.h:869
Definition: uct.h:452
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:1886
uct_alloc_method_t method
Definition: uct.h:884
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
struct uct_worker * uct_worker_h
Definition: uct_def.h:84
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:2086
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:2122
Interface attributes: capabilities and limitations.
Definition: uct.h:597
Definition: uct.h:514
int uct_worker_cb_id_t
Definition: uct_def.h:93
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:1897
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:231
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:1958
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:704
Definition: uct.h:334
ucs_cpu_set_t cpu_mask
Definition: uct.h:724
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:1853
Definition: uct.h:311
void uct_release_md_resource_list(uct_md_resource_desc_t *resources)
Release the list of resources returned from uct_query_md_resources.
char component_name[UCT_MD_COMPONENT_NAME_MAX]
Definition: uct.h:867
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:2008
ucs_status_t uct_md_config_read(const char *name, const char *env_prefix, const char *filename, uct_md_config_t **config_p)
Read the configuration of the MD component.
void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
Disable synchronous progress for the interface.
Definition: uct.h:2584
struct uct_iface_addr uct_iface_addr_t
Definition: uct_def.h:88
ucs_thread_mode_t
Thread sharing mode.
Definition: thread_mode.h:19
Definition: uct.h:301
void uct_md_close(uct_md_h md)
Close a memory domain.
struct uct_ep_addr uct_ep_addr_t
Definition: uct_def.h:89
Definition: uct.h:560
Definition: uct.h:128
Definition: uct.h:125
ucs_status_t uct_rkey_release(const uct_rkey_bundle_t *rkey_ob)
Release a remote key.
struct uct_md * uct_md_h
Memory domain handler.
Definition: uct_def.h:76
uct_ep_params_field
UCT endpoint created by uct_ep_create parameters field mask.
Definition: uct.h:555
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:2280
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:2021
Definition: uct.h:474
uct_linear_growth_t latency
Definition: uct.h:706
Remote key with its type.
Definition: uct.h:898
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:401
ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
Cancel outstanding rendezvous operation.
Definition: uct.h:2435
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:147
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 on the client side.
Definition: uct_def.h:331
uint8_t priority
Definition: uct.h:707
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:255
Definition: uct.h:470
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:468
Definition: uct.h:417
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:116
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:2071
char tl_name[UCT_TL_NAME_MAX]
Definition: uct.h:145
Definition: uct.h:510
uct_iface_h iface
Definition: uct.h:797
ucs_status_t
Status codes.
Definition: status.h:45
Definition: uct.h:360
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:315
Definition: uct.h:129
void * user_data
Definition: uct.h:802
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:883
Definition: uct.h:385
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:502
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...
void * err_handler_arg
Definition: uct.h:765
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition: uct.h:936
Definition: uct.h:455
Definition: uct.h:278
Definition: uct.h:569
ucs_status_t uct_md_mem_free(uct_md_h md, uct_mem_h memh)
Release memory allocated by uct_md_mem_alloc.
Definition: uct.h:332
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:406
ucs_status_t uct_md_query(uct_md_h md, uct_md_attr_t *md_attr)
Query for memory domain attributes.
void(* uct_unpack_callback_t)(void *arg, const void *data, size_t length)
Callback for consuming data.
Definition: uct_def.h:268
Definition: uct.h:283
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:2559
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:2148
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:2032
uct_flush_flags
Flush modifiers.
Definition: uct.h:310
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
Definition: uct.h:467
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:275
uint64_t uct_tag_t
Definition: uct_def.h:92
Definition: uct.h:276
struct uct_iface_config uct_iface_config_t
Definition: uct_def.h:71
const ucs_sock_addr_t * sockaddr
Definition: uct.h:825
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:935
uint64_t open_mode
Definition: uct.h:726
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:361
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:970
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:1872
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 message on the server side.
Definition: uct_def.h:298
struct uct_md_resource_desc uct_md_resource_desc_t
Memory domain resource descriptor.
uint32_t sockaddr_cb_flags
Definition: uct.h:832
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:2460
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:383
Definition: uct.h:557
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:2178
ucs_status_t uct_rkey_ptr(uct_rkey_bundle_t *rkey_ob, uint64_t remote_addr, void **addr_p)
Get a local pointer to remote memory.
size_t device_addr_len
Definition: uct.h:693
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:333
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
Parameters for creating a UCT endpoint by uct_ep_create.
Definition: uct.h:786
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:104
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:451
ucs_stats_node_t * stats_root
Definition: uct.h:760
Memory domain attributes.
Definition: uct.h:854
Definition: uct.h:345
uct_iface_params_field
UCT interface created by uct_iface_open parameters field mask.
Definition: uct.h:404
uct_completion_callback_t func
Definition: uct.h:922
void * uct_conn_request_h
Definition: uct_def.h:94
size_t ep_addr_len
Definition: uct.h:695
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:520
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:281
double overhead
Definition: uct.h:588
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:2252
uct_mem_h memh
Definition: uct.h:887
size_t rx_headroom
Definition: uct.h:762
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:365
void(* tag_consumed_cb)(uct_tag_context_t *self)
Definition: uct.h:954
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:541
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:182
ucs_status_t(* uct_pending_callback_t)(uct_pending_req_t *self)
Callback to process pending requests.
Definition: uct_def.h:213
Definition: uct.h:280
ucs_status_t uct_query_md_resources(uct_md_resource_desc_t **resources_p, unsigned *num_resources_p)
Query for memory resources.
union uct_iface_params::@11 mode
size_t rkey_packed_size
Definition: uct.h:868
Communication resource descriptor.
Definition: uct.h:144
Pending request.
Definition: uct.h:934
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.
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:1819
ucs_status_t uct_rkey_unpack(const void *rkey_buffer, uct_rkey_bundle_t *rkey_ob)
Unpack a remote key.
const uct_iface_addr_t * iface_addr
Definition: uct.h:816
uct_md_h md
Definition: uct.h:886
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:70
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.
Definition: types.h:112
void * eager_arg
Definition: uct.h:773
uint64_t field_mask
Definition: uct.h:722
struct uct_ep * uct_ep_h
Definition: uct_def.h:73
uct_tag_unexp_eager_cb_t eager_cb
Definition: uct.h:775
Definition: uct.h:530
ucs_status_t uct_md_mem_dereg(uct_md_h md, uct_mem_h memh)
Undo the operation of uct_md_mem_reg().
Posted tag context.
Definition: uct.h:947
ucs_status_t uct_iface_query(uct_iface_h iface, uct_iface_attr_t *iface_attr)
Get interface attributes.
double growth
Definition: uct.h:589
Definition: uct.h:587
Completion handle.
Definition: uct.h:921
uct_rkey_t rkey
Definition: uct.h:899
Definition: uct.h:466
Definition: uct.h:479
void(* uct_completion_callback_t)(uct_completion_t *self, ucs_status_t status)
Callback to process send completion.
Definition: uct_def.h:195
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:1908
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:1969
uint32_t err_handler_flags
Definition: uct.h:770
Definition: uct.h:521
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:87
Definition: uct.h:476
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:2594
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:164
uintptr_t uct_rkey_t
Definition: uct_def.h:75
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:2500
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:988
Definition: uct.h:300
size_t max_conn_priv
Definition: uct.h:696
void * handle
Definition: uct.h:900
Definition: uct.h:282
Definition: uct.h:503
void * rndv_arg
Definition: uct.h:776
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:2134
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:2098
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:298
char dev_name[UCT_DEVICE_NAME_MAX]
Definition: uct.h:146
Describes a memory allocated by UCT.
Definition: uct.h:881
Definition: uct.h:563