UCX  1.5
Unified Communication X
uct.h
1 
9 #ifndef UCT_H_
10 #define UCT_H_
11 
12 #include <uct/api/uct_def.h>
13 #include <uct/api/tl.h>
14 #include <uct/api/version.h>
15 #include <ucs/async/async_fwd.h>
16 #include <ucs/config/types.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 
113 typedef struct uct_md_resource_desc {
114  char md_name[UCT_MD_NAME_MAX];
116 
117 
122 typedef enum {
129 
130 
142 typedef struct uct_tl_resource_desc {
143  char tl_name[UCT_TL_NAME_MAX];
144  char dev_name[UCT_DEVICE_NAME_MAX];
147 
148 #define UCT_TL_RESOURCE_DESC_FMT "%s/%s"
149 #define UCT_TL_RESOURCE_DESC_ARG(_resource) (_resource)->tl_name, (_resource)->dev_name
150 
151 
159 typedef enum uct_atomic_op {
160  UCT_ATOMIC_OP_ADD,
161  UCT_ATOMIC_OP_AND,
162  UCT_ATOMIC_OP_OR,
163  UCT_ATOMIC_OP_XOR,
164  UCT_ATOMIC_OP_SWAP,
165  UCT_ATOMIC_OP_CSWAP,
166  UCT_ATOMIC_OP_LAST
167 } uct_atomic_op_t;
168 
169 
180  /* Active message capabilities */
181 #define UCT_IFACE_FLAG_AM_SHORT UCS_BIT(0)
182 #define UCT_IFACE_FLAG_AM_BCOPY UCS_BIT(1)
183 #define UCT_IFACE_FLAG_AM_ZCOPY UCS_BIT(2)
185 #define UCT_IFACE_FLAG_PENDING UCS_BIT(3)
187  /* PUT capabilities */
188 #define UCT_IFACE_FLAG_PUT_SHORT UCS_BIT(4)
189 #define UCT_IFACE_FLAG_PUT_BCOPY UCS_BIT(5)
190 #define UCT_IFACE_FLAG_PUT_ZCOPY UCS_BIT(6)
192  /* GET capabilities */
193 #define UCT_IFACE_FLAG_GET_SHORT UCS_BIT(8)
194 #define UCT_IFACE_FLAG_GET_BCOPY UCS_BIT(9)
195 #define UCT_IFACE_FLAG_GET_ZCOPY UCS_BIT(10)
197  /* Atomic operations domain */
198 #define UCT_IFACE_FLAG_ATOMIC_CPU UCS_BIT(30)
200 #define UCT_IFACE_FLAG_ATOMIC_DEVICE UCS_BIT(31)
204  /* Error handling capabilities */
205 #define UCT_IFACE_FLAG_ERRHANDLE_SHORT_BUF UCS_BIT(32)
206 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_BUF UCS_BIT(33)
207 #define UCT_IFACE_FLAG_ERRHANDLE_ZCOPY_BUF UCS_BIT(34)
208 #define UCT_IFACE_FLAG_ERRHANDLE_AM_ID UCS_BIT(35)
209 #define UCT_IFACE_FLAG_ERRHANDLE_REMOTE_MEM UCS_BIT(36)
210 #define UCT_IFACE_FLAG_ERRHANDLE_BCOPY_LEN UCS_BIT(37)
211 #define UCT_IFACE_FLAG_ERRHANDLE_PEER_FAILURE UCS_BIT(38)
213 #define UCT_IFACE_FLAG_EP_CHECK UCS_BIT(39)
215  /* Connection establishment */
216 #define UCT_IFACE_FLAG_CONNECT_TO_IFACE UCS_BIT(40)
217 #define UCT_IFACE_FLAG_CONNECT_TO_EP UCS_BIT(41)
218 #define UCT_IFACE_FLAG_CONNECT_TO_SOCKADDR UCS_BIT(42)
220  /* Special transport flags */
221 #define UCT_IFACE_FLAG_AM_DUP UCS_BIT(43)
225  /* Callback invocation */
226 #define UCT_IFACE_FLAG_CB_SYNC UCS_BIT(44)
229 #define UCT_IFACE_FLAG_CB_ASYNC UCS_BIT(45)
236  /* Event notification */
237 #define UCT_IFACE_FLAG_EVENT_SEND_COMP UCS_BIT(46)
239 #define UCT_IFACE_FLAG_EVENT_RECV UCS_BIT(47)
241 #define UCT_IFACE_FLAG_EVENT_RECV_SIG UCS_BIT(48)
244  /* Tag matching operations */
245 #define UCT_IFACE_FLAG_TAG_EAGER_SHORT UCS_BIT(50)
246 #define UCT_IFACE_FLAG_TAG_EAGER_BCOPY UCS_BIT(51)
247 #define UCT_IFACE_FLAG_TAG_EAGER_ZCOPY UCS_BIT(52)
248 #define UCT_IFACE_FLAG_TAG_RNDV_ZCOPY UCS_BIT(53)
258 typedef enum {
268 
269 
282  UCT_EVENT_SEND_COMP = UCS_BIT(0),
283  UCT_EVENT_RECV = UCS_BIT(1),
284  UCT_EVENT_RECV_SIG = UCS_BIT(2)
286 };
287 
288 
293 enum uct_flush_flags {
298  UCT_FLUSH_FLAG_CANCEL = UCS_BIT(0)
307 };
314 enum uct_progress_types {
315  UCT_PROGRESS_SEND = UCS_BIT(0),
316  UCT_PROGRESS_RECV = UCS_BIT(1),
317  UCT_PROGRESS_THREAD_SAFE = UCS_BIT(7)
320 };
321 
322 
327 enum uct_msg_flags {
328  UCT_SEND_FLAG_SIGNALED = UCS_BIT(0)
333 };
334 
335 
343  UCT_CB_FLAG_RESERVED = UCS_BIT(1),
344  UCT_CB_FLAG_ASYNC = UCS_BIT(2)
358 };
360 
365 enum uct_iface_open_mode {
366  UCT_IFACE_OPEN_MODE_DEVICE = UCS_BIT(0),
371 };
372 
373 
378 typedef enum {
386 
387 
392 enum {
393  UCT_MD_FLAG_ALLOC = UCS_BIT(0),
394  UCT_MD_FLAG_REG = UCS_BIT(1),
395  UCT_MD_FLAG_NEED_MEMH = UCS_BIT(2),
397  UCT_MD_FLAG_NEED_RKEY = UCS_BIT(3),
400  UCT_MD_FLAG_ADVISE = UCS_BIT(4),
401  UCT_MD_FLAG_FIXED = UCS_BIT(5),
403  UCT_MD_FLAG_RKEY_PTR = UCS_BIT(6),
406  UCT_MD_FLAG_SOCKADDR = UCS_BIT(7)
409 };
411 /*
412  * @ingroup UCT_MD
413  * @brief Memory types
414  */
415 typedef enum {
416  UCT_MD_MEM_TYPE_HOST = 0,
417  UCT_MD_MEM_TYPE_CUDA,
418  UCT_MD_MEM_TYPE_CUDA_MANAGED,
419  UCT_MD_MEM_TYPE_LAST
420 } uct_memory_type_t;
422 
427 enum uct_md_mem_flags {
428  UCT_MD_MEM_FLAG_NONBLOCK = UCS_BIT(0),
433  UCT_MD_MEM_FLAG_FIXED = UCS_BIT(1),
435  UCT_MD_MEM_FLAG_LOCK = UCS_BIT(2),
439  UCT_MD_MEM_FLAG_HIDE_ERRORS = UCS_BIT(3),
444  /* memory access flags */
445  UCT_MD_MEM_ACCESS_REMOTE_PUT = UCS_BIT(5),
446  UCT_MD_MEM_ACCESS_REMOTE_GET = UCS_BIT(6),
447  UCT_MD_MEM_ACCESS_REMOTE_ATOMIC = UCS_BIT(7),
453 
457 };
458 
459 
464 typedef enum {
471 
472 
473 /*
474  * @ingroup UCT_RESOURCE
475  * @brief Linear growth specification: f(x) = overhead + growth * x
476  *
477  * This structure specifies a linear function which is used as basis for time
478  * estimation of various UCT operations. This information can be used to select
479  * the best performing combination of UCT operations.
480  */
481 typedef struct uct_linear_growth {
482  double overhead;
483  double growth;
485 
486 
491 struct uct_iface_attr {
492  struct {
493  struct {
494  size_t max_short;
495  size_t max_bcopy;
496  size_t min_zcopy;
499  size_t max_zcopy;
502  size_t opt_zcopy_align;
504  size_t align_mtu;
505  size_t max_iov;
508  } put;
510  struct {
511  size_t max_short;
512  size_t max_bcopy;
513  size_t min_zcopy;
516  size_t max_zcopy;
519  size_t opt_zcopy_align;
521  size_t align_mtu;
522  size_t max_iov;
525  } get;
527  struct {
528  size_t max_short;
529  size_t max_bcopy;
530  size_t min_zcopy;
533  size_t max_zcopy;
536  size_t opt_zcopy_align;
538  size_t align_mtu;
539  size_t max_hdr;
540  size_t max_iov;
543  } am;
545  struct {
546  struct {
547  size_t min_recv;
548  size_t max_zcopy;
550  size_t max_iov;
553  size_t max_outstanding;
555  } recv;
556 
557  struct {
558  size_t max_short;
560  size_t max_bcopy;
562  size_t max_zcopy;
564  size_t max_iov;
566  } eager;
568  struct {
569  size_t max_zcopy;
571  size_t max_hdr;
574  size_t max_iov;
576  } rndv;
577  } tag;
579  struct {
580  uint64_t op_flags;
581  uint64_t fop_flags;
582  } atomic32, atomic64;
584  uint64_t flags;
585  } cap;
587  size_t device_addr_len;
588  size_t iface_addr_len;
589  size_t ep_addr_len;
590  size_t max_conn_priv;
593  /*
594  * The following fields define expected performance of the communication
595  * interface, this would usually be a combination of device and system
596  * characteristics and determined at run time.
597  */
598  double overhead;
599  double bandwidth;
601  uint8_t priority;
602 };
612 struct uct_iface_params {
614  ucs_cpu_set_t cpu_mask;
616  uint64_t open_mode;
618  union {
624  struct {
625  const char *tl_name;
626  const char *dev_name;
627  } device;
634  struct {
635  ucs_sock_addr_t listen_sockaddr;
637  void *conn_request_arg;
642  uint32_t cb_flags;
643  } sockaddr;
644  } mode;
645 
648  ucs_stats_node_t *stats_root;
650  size_t rx_headroom;
651 
653  void *err_handler_arg;
658  uint32_t err_handler_flags;
659 
661  void *eager_arg;
664  void *rndv_arg;
667 };
669 
678 struct uct_md_attr {
679  struct {
680  size_t max_alloc;
681  size_t max_reg;
682  uint64_t flags;
683  uint64_t reg_mem_types;
684  uct_memory_type_t mem_type;
685  } cap;
686 
691  char component_name[UCT_MD_COMPONENT_NAME_MAX];
692  size_t rkey_packed_size;
693  cpu_set_t local_cpus;
694 };
695 
696 
705 typedef struct uct_allocated_memory {
706  void *address;
707  size_t length;
709  uct_memory_type_t mem_type;
710  uct_md_h md;
711  uct_mem_h memh;
713 
714 
722 typedef struct uct_rkey_bundle {
724  void *handle;
725  void *type;
727 
728 
745 struct uct_completion {
747  int count;
748 };
749 
750 
758 struct uct_pending_req {
760  char priv[UCT_PENDING_REQ_PRIV_LEN];
761 };
763 
771 struct uct_tag_context {
778  void (*tag_consumed_cb)(uct_tag_context_t *self);
779 
794  void (*completed_cb)(uct_tag_context_t *self, uct_tag_t stag, uint64_t imm,
795  size_t length, ucs_status_t status);
796 
808  void (*rndv_cb)(uct_tag_context_t *self, uct_tag_t stag, const void *header,
809  unsigned header_length, ucs_status_t status);
810 
812  char priv[UCT_TAG_PRIV_LEN];
813 };
814 
815 
816 extern const char *uct_alloc_method_names[];
817 
818 
832  unsigned *num_resources_p);
833 
844 
845 
863 ucs_status_t uct_md_open(const char *md_name, const uct_md_config_t *config,
864  uct_md_h *md_p);
865 
872 void uct_md_close(uct_md_h md);
873 
874 
890  uct_tl_resource_desc_t **resources_p,
891  unsigned *num_resources_p);
892 
893 
904 
905 
920 ucs_status_t uct_worker_create(ucs_async_context_t *async,
921  ucs_thread_mode_t thread_mode,
922  uct_worker_h *worker_p);
923 
924 
931 void uct_worker_destroy(uct_worker_h worker);
932 
933 
957 void uct_worker_progress_register_safe(uct_worker_h worker, ucs_callback_t func,
958  void *arg, unsigned flags,
959  uct_worker_cb_id_t *id_p);
960 
961 
983  uct_worker_cb_id_t *id_p);
984 
985 
1013 ucs_status_t uct_md_iface_config_read(uct_md_h md, const char *tl_name,
1014  const char *env_prefix, const char *filename,
1015  uct_iface_config_t **config_p);
1016 
1017 
1025 void uct_config_release(void *config);
1026 
1027 
1041 ucs_status_t uct_config_get(void *config, const char *name, char *value,
1042  size_t max);
1043 
1044 
1055 ucs_status_t uct_config_modify(void *config, const char *name, const char *value);
1056 
1057 
1074  const uct_iface_params_t *params,
1075  const uct_iface_config_t *config,
1076  uct_iface_h *iface_p);
1077 
1078 
1085 void uct_iface_close(uct_iface_h iface);
1086 
1087 
1096 
1097 
1110 
1111 
1123 
1124 
1143 int uct_iface_is_reachable(const uct_iface_h iface, const uct_device_addr_t *dev_addr,
1144  const uct_iface_addr_t *iface_addr);
1145 
1146 
1164 ucs_status_t uct_ep_check(const uct_ep_h ep, unsigned flags,
1165  uct_completion_t *comp);
1166 
1167 
1181 
1182 
1202 ucs_status_t uct_iface_event_arm(uct_iface_h iface, unsigned events);
1203 
1204 
1220 ucs_status_t uct_iface_mem_alloc(uct_iface_h iface, size_t length, unsigned flags,
1221  const char *name, uct_allocated_memory_t *mem);
1222 
1223 
1231 
1232 
1251  uct_am_callback_t cb, void *arg, uint32_t flags);
1252 
1253 
1268  void *arg);
1269 
1270 
1283  uct_conn_request_h conn_request);
1284 
1285 
1299  uct_conn_request_h conn_request);
1300 
1301 
1310 
1311 
1324  const uct_device_addr_t *dev_addr,
1325  const uct_iface_addr_t *iface_addr,
1326  uct_ep_h *ep_p);
1327 
1328 
1335 void uct_ep_destroy(uct_ep_h ep);
1336 
1337 
1347 
1348 
1360  const uct_ep_addr_t *ep_addr);
1361 
1362 
1399  const ucs_sock_addr_t *sockaddr,
1401  void *arg, uint32_t cb_flags, uct_ep_h *ep_p);
1402 
1403 
1412 
1413 
1431 ucs_status_t uct_md_mem_alloc(uct_md_h md, size_t *length_p, void **address_p,
1432  unsigned flags, const char *name, uct_mem_h *memh_p);
1433 
1434 
1443 
1444 
1462 ucs_status_t uct_md_mem_advise(uct_md_h md, uct_mem_h memh, void *addr,
1463  size_t length, uct_mem_advice_t advice);
1464 
1465 
1479 ucs_status_t uct_md_mem_reg(uct_md_h md, void *address, size_t length,
1480  unsigned flags, uct_mem_h *memh_p);
1481 
1482 
1491 
1492 
1504 int uct_md_is_mem_type_owned(uct_md_h md, void *addr, size_t length);
1505 
1540 ucs_status_t uct_mem_alloc(void *addr, size_t min_length, unsigned flags,
1541  uct_alloc_method_t *methods, unsigned num_methods,
1542  uct_md_h *mds, unsigned num_mds, const char *name,
1543  uct_allocated_memory_t *mem);
1544 
1545 
1556 
1571 ucs_status_t uct_md_config_read(const char *name, const char *env_prefix,
1572  const char *filename,
1573  uct_md_config_t **config_p);
1574 
1575 
1576 
1599 
1600 
1612 ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer);
1613 
1614 
1625 ucs_status_t uct_rkey_unpack(const void *rkey_buffer, uct_rkey_bundle_t *rkey_ob);
1626 
1627 
1647 ucs_status_t uct_rkey_ptr(uct_rkey_bundle_t *rkey_ob, uint64_t remote_addr,
1648  void **addr_p);
1649 
1650 
1659 
1660 
1675 UCT_INLINE_API unsigned uct_worker_progress(uct_worker_h worker)
1676 {
1677  return ucs_callbackq_dispatch(&worker->progress_q);
1678 }
1679 
1680 
1709 UCT_INLINE_API ucs_status_t uct_iface_flush(uct_iface_h iface, unsigned flags,
1710  uct_completion_t *comp)
1711 {
1712  return iface->ops.iface_flush(iface, flags, comp);
1713 }
1714 
1728 UCT_INLINE_API ucs_status_t uct_iface_fence(uct_iface_h iface, unsigned flags)
1729 {
1730  return iface->ops.iface_fence(iface, flags);
1731 }
1732 
1742 UCT_INLINE_API void uct_iface_release_desc(void *desc)
1744  uct_recv_desc_t *release_desc = uct_recv_desc(desc);
1745  release_desc->cb(release_desc, desc);
1746 }
1747 
1748 
1753 UCT_INLINE_API ucs_status_t uct_ep_put_short(uct_ep_h ep, const void *buffer, unsigned length,
1754  uint64_t remote_addr, uct_rkey_t rkey)
1755 {
1756  return ep->iface->ops.ep_put_short(ep, buffer, length, remote_addr, rkey);
1758 
1759 
1764 UCT_INLINE_API ssize_t uct_ep_put_bcopy(uct_ep_h ep, uct_pack_callback_t pack_cb,
1765  void *arg, uint64_t remote_addr,
1766  uct_rkey_t rkey)
1767 {
1768  return ep->iface->ops.ep_put_bcopy(ep, pack_cb, arg, remote_addr, rkey);
1769 }
1770 
1771 
1801 UCT_INLINE_API ucs_status_t uct_ep_put_zcopy(uct_ep_h ep,
1802  const uct_iov_t *iov, size_t iovcnt,
1803  uint64_t remote_addr, uct_rkey_t rkey,
1804  uct_completion_t *comp)
1805 {
1806  return ep->iface->ops.ep_put_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
1807 }
1808 
1809 
1814 UCT_INLINE_API ucs_status_t uct_ep_get_short(uct_ep_h ep, void *buffer, unsigned length,
1815  uint64_t remote_addr, uct_rkey_t rkey)
1817  return ep->iface->ops.ep_get_short(ep, buffer, length, remote_addr, rkey);
1818 }
1819 
1820 
1825 UCT_INLINE_API ucs_status_t uct_ep_get_bcopy(uct_ep_h ep, uct_unpack_callback_t unpack_cb,
1826  void *arg, size_t length,
1827  uint64_t remote_addr, uct_rkey_t rkey,
1828  uct_completion_t *comp)
1830  return ep->iface->ops.ep_get_bcopy(ep, unpack_cb, arg, length, remote_addr,
1831  rkey, comp);
1832 }
1833 
1834 
1864 UCT_INLINE_API ucs_status_t uct_ep_get_zcopy(uct_ep_h ep,
1865  const uct_iov_t *iov, size_t iovcnt,
1866  uint64_t remote_addr, uct_rkey_t rkey,
1867  uct_completion_t *comp)
1868 {
1869  return ep->iface->ops.ep_get_zcopy(ep, iov, iovcnt, remote_addr, rkey, comp);
1870 }
1871 
1872 
1877 UCT_INLINE_API ucs_status_t uct_ep_am_short(uct_ep_h ep, uint8_t id, uint64_t header,
1878  const void *payload, unsigned length)
1880  return ep->iface->ops.ep_am_short(ep, id, header, payload, length);
1881 }
1882 
1883 
1888 UCT_INLINE_API ssize_t uct_ep_am_bcopy(uct_ep_h ep, uint8_t id,
1889  uct_pack_callback_t pack_cb, void *arg,
1890  unsigned flags)
1891 {
1892  return ep->iface->ops.ep_am_bcopy(ep, id, pack_cb, arg, flags);
1893 }
1894 
1895 
1927 UCT_INLINE_API ucs_status_t uct_ep_am_zcopy(uct_ep_h ep, uint8_t id,
1928  const void *header,
1929  unsigned header_length,
1930  const uct_iov_t *iov, size_t iovcnt,
1931  unsigned flags,
1932  uct_completion_t *comp)
1933 {
1934  return ep->iface->ops.ep_am_zcopy(ep, id, header, header_length, iov, iovcnt,
1935  flags, comp);
1936 }
1937 
1942 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap64(uct_ep_h ep, uint64_t compare, uint64_t swap,
1943  uint64_t remote_addr, uct_rkey_t rkey,
1944  uint64_t *result, uct_completion_t *comp)
1945 {
1946  return ep->iface->ops.ep_atomic_cswap64(ep, compare, swap, remote_addr, rkey, result, comp);
1947 }
1948 
1949 
1954 UCT_INLINE_API ucs_status_t uct_ep_atomic_cswap32(uct_ep_h ep, uint32_t compare, uint32_t swap,
1955  uint64_t remote_addr, uct_rkey_t rkey,
1956  uint32_t *result, uct_completion_t *comp)
1958  return ep->iface->ops.ep_atomic_cswap32(ep, compare, swap, remote_addr, rkey, result, comp);
1959 }
1960 
1961 
1966 UCT_INLINE_API ucs_status_t uct_ep_atomic32_post(uct_ep_h ep, uct_atomic_op_t opcode,
1967  uint32_t value, uint64_t remote_addr,
1968  uct_rkey_t rkey)
1970  return ep->iface->ops.ep_atomic32_post(ep, opcode, value, remote_addr, rkey);
1971 }
1972 
1973 
1978 UCT_INLINE_API ucs_status_t uct_ep_atomic64_post(uct_ep_h ep, uct_atomic_op_t opcode,
1979  uint64_t value, uint64_t remote_addr,
1980  uct_rkey_t rkey)
1982  return ep->iface->ops.ep_atomic64_post(ep, opcode, value, remote_addr, rkey);
1983 }
1984 
1985 
1990 UCT_INLINE_API ucs_status_t uct_ep_atomic32_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
1991  uint32_t value, uint32_t *result,
1992  uint64_t remote_addr, uct_rkey_t rkey,
1994 {
1995  return ep->iface->ops.ep_atomic32_fetch(ep, opcode, value, result,
1996  remote_addr, rkey, comp);
1997 }
1998 
1999 
2004 UCT_INLINE_API ucs_status_t uct_ep_atomic64_fetch(uct_ep_h ep, uct_atomic_op_t opcode,
2005  uint64_t value, uint64_t *result,
2006  uint64_t remote_addr, uct_rkey_t rkey,
2007  uct_completion_t *comp)
2008 {
2009  return ep->iface->ops.ep_atomic64_fetch(ep, opcode, value, result,
2010  remote_addr, rkey, comp);
2011 }
2012 
2013 
2034 UCT_INLINE_API ucs_status_t uct_ep_pending_add(uct_ep_h ep,
2035  uct_pending_req_t *req,
2036  unsigned flags)
2037 {
2038  return ep->iface->ops.ep_pending_add(ep, req, flags);
2039 }
2040 
2041 
2053 UCT_INLINE_API void uct_ep_pending_purge(uct_ep_h ep,
2055  void *arg)
2056 {
2057  ep->iface->ops.ep_pending_purge(ep, cb, arg);
2058 }
2059 
2060 
2089 UCT_INLINE_API ucs_status_t uct_ep_flush(uct_ep_h ep, unsigned flags,
2090  uct_completion_t *comp)
2091 {
2092  return ep->iface->ops.ep_flush(ep, flags, comp);
2093 }
2094 
2095 
2108 UCT_INLINE_API ucs_status_t uct_ep_fence(uct_ep_h ep, unsigned flags)
2109 {
2110  return ep->iface->ops.ep_fence(ep, flags);
2111 }
2112 
2113 
2136 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_short(uct_ep_h ep, uct_tag_t tag,
2137  const void *data, size_t length)
2138 {
2139  return ep->iface->ops.ep_tag_eager_short(ep, tag, data, length);
2140 }
2141 
2142 
2166 UCT_INLINE_API ssize_t uct_ep_tag_eager_bcopy(uct_ep_h ep, uct_tag_t tag,
2167  uint64_t imm,
2168  uct_pack_callback_t pack_cb,
2169  void *arg, unsigned flags)
2170 {
2171  return ep->iface->ops.ep_tag_eager_bcopy(ep, tag, imm, pack_cb, arg, flags);
2172 }
2173 
2174 
2212 UCT_INLINE_API ucs_status_t uct_ep_tag_eager_zcopy(uct_ep_h ep, uct_tag_t tag,
2213  uint64_t imm,
2214  const uct_iov_t *iov,
2215  size_t iovcnt,
2216  unsigned flags,
2217  uct_completion_t *comp)
2218 {
2219  return ep->iface->ops.ep_tag_eager_zcopy(ep, tag, imm, iov, iovcnt, flags,
2220  comp);
2221 }
2222 
2223 
2261  const void *header,
2262  unsigned header_length,
2263  const uct_iov_t *iov,
2264  size_t iovcnt,
2265  unsigned flags,
2266  uct_completion_t *comp)
2267 {
2268  return ep->iface->ops.ep_tag_rndv_zcopy(ep, tag, header, header_length,
2269  iov, iovcnt, flags, comp);
2270 }
2271 
2272 
2291 UCT_INLINE_API ucs_status_t uct_ep_tag_rndv_cancel(uct_ep_h ep, void *op)
2292 {
2293  return ep->iface->ops.ep_tag_rndv_cancel(ep, op);
2294 }
2295 
2296 
2317  const void* header,
2318  unsigned header_length,
2319  unsigned flags)
2320 {
2321  return ep->iface->ops.ep_tag_rndv_request(ep, tag, header, header_length,
2322  flags);
2323 }
2324 
2325 
2357  uct_tag_t tag,
2358  uct_tag_t tag_mask,
2359  const uct_iov_t *iov,
2360  size_t iovcnt,
2361  uct_tag_context_t *ctx)
2362 {
2363  return iface->ops.iface_tag_recv_zcopy(iface, tag, tag_mask, iov, iovcnt, ctx);
2364 }
2365 
2366 
2390  uct_tag_context_t *ctx,
2391  int force)
2392 {
2393  return iface->ops.iface_tag_recv_cancel(iface, ctx, force);
2394 }
2395 
2396 
2415 UCT_INLINE_API void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
2416 {
2417  iface->ops.iface_progress_enable(iface, flags);
2418 }
2419 
2420 
2440 UCT_INLINE_API void uct_iface_progress_disable(uct_iface_h iface, unsigned flags)
2441 {
2442  iface->ops.iface_progress_disable(iface, flags);
2443 }
2444 
2445 
2450 UCT_INLINE_API unsigned uct_iface_progress(uct_iface_h iface)
2451 {
2452  return iface->ops.iface_progress(iface);
2453 }
2454 
2461 END_C_DECLS
2462 
2463 #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:681
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:465
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:2227
uct_progress_types
UCT progress types.
Definition: uct.h:329
Definition: uct.h:297
Definition: uct.h:480
uct_error_handler_t err_handler
Definition: uct.h:670
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:462
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:122
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:448
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:2275
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:1981
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:762
Structure for scatter-gather I/O.
Definition: uct_def.h:128
uct_memory_type_t mem_type
Definition: uct.h:724
void * type
Definition: uct.h:740
uct_msg_flags
Flags for active message send operation.
Definition: uct.h:342
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:2068
Definition: uct.h:277
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:2181
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:2104
Definition: uct.h:125
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:2404
uct_linear_growth_t reg_cost
Definition: uct.h:702
uct_mem_advice_t
list of UCT memory use advice
Definition: uct.h:479
struct uct_md_attr::@14 cap
Parameters used for interface creation.
Definition: uct.h:627
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:1816
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:113
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:603
ucs_status_t uct_iface_get_address(uct_iface_h iface, uct_iface_addr_t *addr)
Get interface address.
void * address
Definition: uct.h:721
Definition: uct.h:415
ucs_status_t uct_mem_free(const uct_allocated_memory_t *mem)
Release allocated memory.
struct uct_iface_attr::@2 cap
Definition: uct.h:124
double bandwidth
Definition: uct.h:614
uct_cb_flags
Callback flags.
Definition: uct.h:357
ucs_status_t uct_ep_create(uct_iface_h iface, uct_ep_h *ep_p)
Create new endpoint.
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:823
cpu_set_t local_cpus
Definition: uct.h:708
Definition: uct.h:394
void uct_iface_release_desc(void *desc)
Release AM descriptor.
Definition: uct.h:1757
uct_alloc_method_t method
Definition: uct.h:723
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: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:1957
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:1993
Interface attributes: capabilities and limitations.
Definition: uct.h:506
Definition: uct.h:454
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:1768
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:1829
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:613
Definition: uct.h:332
ucs_cpu_set_t cpu_mask
Definition: uct.h:629
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:1724
Definition: uct.h:309
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:706
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:1879
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:2455
struct uct_iface_addr uct_iface_addr_t
Definition: uct_def.h:89
ucs_thread_mode_t
Thread sharing mode.
Definition: thread_mode.h:19
Definition: uct.h:299
void uct_md_close(uct_md_h md)
Close a memory domain.
struct uct_ep_addr uct_ep_addr_t
Definition: uct_def.h:90
Definition: uct.h:126
Definition: uct.h:123
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:77
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:2151
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:1892
Definition: uct.h:416
uct_linear_growth_t latency
Definition: uct.h:615
Remote key with its type.
Definition: uct.h:737
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:2306
uct_device_type_t dev_type
Definition: uct.h:145
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:616
size_t(* uct_pack_callback_t)(void *dest, void *arg)
Callback for producing data.
Definition: uct_def.h:255
Definition: uct.h:412
struct uct_rkey_bundle uct_rkey_bundle_t
Remote key with its type.
Definition: uct.h:410
char md_name[UCT_MD_NAME_MAX]
Definition: uct.h:114
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:1942
char tl_name[UCT_TL_NAME_MAX]
Definition: uct.h:143
Definition: uct.h:450
ucs_status_t
Status codes.
Definition: status.h:43
Definition: uct.h:358
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:313
Definition: uct.h:127
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:722
Definition: uct.h:381
uct_md_mem_flags
Memory allocation/registration flags.
Definition: uct.h:442
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:668
char priv[UCT_PENDING_REQ_PRIV_LEN]
Definition: uct.h:775
Definition: uct.h:397
Definition: uct.h:276
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:330
ucs_status_t uct_md_mkey_pack(uct_md_h md, uct_mem_h memh, void *rkey_buffer)
Pack a remote key.
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:281
void uct_iface_progress_enable(uct_iface_h iface, unsigned flags)
Enable synchronous progress for the interface.
Definition: uct.h:2430
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:2019
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:1903
uct_flush_flags
Flush modifiers.
Definition: uct.h:308
ucs_status_t uct_iface_accept(uct_iface_h iface, uct_conn_request_h conn_request)
Accept connection request.
Definition: uct.h:409
uct_alloc_method_t
Memory allocation methods.
Definition: uct.h:273
uint64_t uct_tag_t
Definition: uct_def.h:92
Definition: uct.h:274
struct uct_iface_config uct_iface_config_t
Definition: uct_def.h:72
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:774
uint64_t open_mode
Definition: uct.h:631
void uct_iface_mem_free(const uct_allocated_memory_t *mem)
Release memory allocated with uct_iface_mem_alloc().
Definition: uct.h:359
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:809
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:1743
ucs_status_t uct_ep_create_sockaddr(uct_iface_h iface, const ucs_sock_addr_t *sockaddr, uct_sockaddr_priv_pack_callback_t pack_cb, void *arg, uint32_t cb_flags, uct_ep_h *ep_p)
Initiate a client-server connection to a remote peer.
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.
ucs_status_t uct_ep_create_connected(uct_iface_h iface, const uct_device_addr_t *dev_addr, const uct_iface_addr_t *iface_addr, uct_ep_h *ep_p)
Create an endpoint which is connected to remote interface.
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:2331
uct_iface_open_mode
Mode in which to open the interface.
Definition: uct.h:380
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:2049
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:602
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:331
void uct_ep_destroy(uct_ep_h ep)
Destroy an endpoint.
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:102
uct_sockaddr_accessibility_t
Socket address accessibility type.
Definition: uct.h:393
ucs_stats_node_t * stats_root
Definition: uct.h:663
Memory domain attributes.
Definition: uct.h:693
Definition: uct.h:343
uct_completion_callback_t func
Definition: uct.h:761
void * uct_conn_request_h
Definition: uct_def.h:94
size_t ep_addr_len
Definition: uct.h:604
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:460
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:279
double overhead
Definition: uct.h:497
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:2123
uct_mem_h memh
Definition: uct.h:726
size_t rx_headroom
Definition: uct.h:665
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:793
struct uct_allocated_memory uct_allocated_memory_t
Describes a memory allocated by UCT.
Definition: uct.h:481
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:278
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:707
Communication resource descriptor.
Definition: uct.h:142
Pending request.
Definition: uct.h:773
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:1690
ucs_status_t uct_rkey_unpack(const void *rkey_buffer, uct_rkey_bundle_t *rkey_ob)
Unpack a remote key.
uct_md_h md
Definition: uct.h:725
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
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:110
void * eager_arg
Definition: uct.h:676
struct uct_ep * uct_ep_h
Definition: uct_def.h:74
uct_tag_unexp_eager_cb_t eager_cb
Definition: uct.h:678
Definition: uct.h:470
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:786
ucs_status_t uct_iface_query(uct_iface_h iface, uct_iface_attr_t *iface_attr)
Get interface attributes.
double growth
Definition: uct.h:498
Definition: uct.h:496
Completion handle.
Definition: uct.h:760
uct_rkey_t rkey
Definition: uct.h:738
Definition: uct.h:408
Definition: uct.h:421
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:1779
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:1840
uint32_t err_handler_flags
Definition: uct.h:673
Definition: uct.h:461
struct uct_device_addr uct_device_addr_t
Definition: uct_def.h:88
Definition: uct.h:418
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:2465
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: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:2371
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:827
Definition: uct.h:298
size_t max_conn_priv
Definition: uct.h:605
void * handle
Definition: uct.h:739
Definition: uct.h:280
Definition: uct.h:443
void * rndv_arg
Definition: uct.h:679
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:2005
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:1969
uct_iface_event_types
Asynchronous event types.
Definition: uct.h:296
char dev_name[UCT_DEVICE_NAME_MAX]
Definition: uct.h:144
Describes a memory allocated by UCT.
Definition: uct.h:720