UCX  1.9
Unified Communication X
ucp.h
1 /*
2 * Copyright (C) Mellanox Technologies Ltd. 2001-2014. ALL RIGHTS RESERVED.
3 * Copyright (C) UT-Battelle, LLC. 2014-2017. ALL RIGHTS RESERVED.
4 * Copyright (C) ARM Ltd. 2016-2017. ALL RIGHTS RESERVED.
5 * Copyright (C) Los Alamos National Security, LLC. 2018 ALL RIGHTS RESERVED.
6 * See file LICENSE for terms.
7 */
8 
9 #ifndef UCP_H_
10 #define UCP_H_
11 
12 #include <ucp/api/ucp_def.h>
13 #include <ucp/api/ucp_compat.h>
14 #include <ucp/api/ucp_version.h>
15 #include <ucs/type/thread_mode.h>
16 #include <ucs/type/cpu_set.h>
17 #include <ucs/config/types.h>
18 #include <ucs/sys/compiler_def.h>
19 #include <stdio.h>
20 #include <sys/types.h>
21 
22 BEGIN_C_DECLS
23 
127 };
128 
129 
139  UCP_FEATURE_TAG = UCS_BIT(0),
141  UCP_FEATURE_RMA = UCS_BIT(1),
143  UCP_FEATURE_AMO32 = UCS_BIT(2),
145  UCP_FEATURE_AMO64 = UCS_BIT(3),
147  UCP_FEATURE_WAKEUP = UCS_BIT(4),
149  UCP_FEATURE_STREAM = UCS_BIT(5),
150  UCP_FEATURE_AM = UCS_BIT(6)
152 };
153 
154 
169 };
170 
171 
184 
189 
193 };
194 
195 
204 typedef enum {
205 
211 
212 
231 };
232 
233 
259 };
260 
261 
268 typedef enum {
287 
288 
312 };
313 
314 
331 };
332 
344 };
345 
346 
357 };
358 
359 
371 };
372 
373 
383 };
384 
385 
395 };
396 
397 
414 };
415 
416 
424 enum {
425  UCP_MEM_MAP_NONBLOCK = UCS_BIT(0),
430  UCP_MEM_MAP_ALLOCATE = UCS_BIT(1),
434  UCP_MEM_MAP_FIXED = UCS_BIT(2)
438 };
439 
440 
452 };
453 
454 
465  UCP_AM_SEND_REPLY = UCS_BIT(0)
466 };
467 
468 
481 };
482 
483 
492 typedef enum {
499 
500 
509 typedef enum {
518 
519 
527 typedef enum {
536 
537 
544 typedef enum {
552 
553 
562 typedef enum {
567  UCP_OP_ATTR_FIELD_FLAGS = UCS_BIT(4),
585 } ucp_op_attr_t;
586 
587 
602 #define ucp_dt_make_contig(_elem_size) \
603  (((ucp_datatype_t)(_elem_size) << UCP_DATATYPE_SHIFT) | UCP_DATATYPE_CONTIG)
604 
605 
618 #define ucp_dt_make_iov() (UCP_DATATYPE_IOV)
619 
620 
631 typedef struct ucp_dt_iov {
632  void *buffer;
633  size_t length;
634 } ucp_dt_iov_t;
635 
636 
650 typedef struct ucp_generic_dt_ops {
651 
666  void* (*start_pack)(void *context, const void *buffer, size_t count);
667 
682  void* (*start_unpack)(void *context, void *buffer, size_t count);
683 
697  size_t (*packed_size)(void *state);
698 
715  size_t (*pack) (void *state, size_t offset, void *dest, size_t max_length);
716 
732  ucs_status_t (*unpack)(void *state, size_t offset, const void *src, size_t length);
733 
748  void (*finish)(void *state);
750 
751 
765 typedef struct ucp_params {
771  uint64_t field_mask;
772 
779  uint64_t features;
780 
789  size_t request_size;
790 
802 
813 
819  uint64_t tag_sender_mask;
820 
836 
847 
857 } ucp_params_t;
858 
859 
867 typedef struct ucp_context_attr {
874  uint64_t field_mask;
875 
881  size_t request_size;
882 
889 
890 
898 typedef struct ucp_worker_attr {
905  uint64_t field_mask;
906 
911 
918  uint32_t address_flags;
919 
928 
934 
935 
943 typedef struct ucp_worker_params {
949  uint64_t field_mask;
950 
964 
972  ucs_cpu_set_t cpu_mask;
973 
981  unsigned events;
982 
989  void *user_data;
990 
1007 
1009 
1010 
1018 typedef struct ucp_listener_attr {
1025  uint64_t field_mask;
1026 
1031  struct sockaddr_storage sockaddr;
1033 
1034 
1042 typedef struct ucp_conn_request_attr {
1049  uint64_t field_mask;
1050 
1055  struct sockaddr_storage client_address;
1057 
1058 
1066 typedef struct ucp_listener_params {
1073  uint64_t field_mask;
1074 
1083 
1091 
1100 
1101 
1108 typedef struct ucp_stream_poll_ep {
1113 
1118  void *user_data;
1119 
1123  unsigned flags;
1124 
1128  uint8_t reserved[16];
1130 
1131 
1139 typedef struct ucp_mem_map_params {
1146  uint64_t field_mask;
1147 
1158  void *address;
1159 
1167  size_t length;
1168 
1176  unsigned flags;
1178 
1179 
1193  size_t length;
1194 };
1195 
1196 
1237 typedef struct {
1243  uint32_t op_attr_mask;
1244 
1245  /* Operation specific flags. */
1246  uint32_t flags;
1247 
1254  void *request;
1255 
1260  union {
1263  ucp_stream_recv_nbx_callback_t recv_stream;
1264  } cb;
1265 
1272 
1276  void *user_data;
1277 
1284 
1285 
1312 ucs_status_t ucp_config_read(const char *env_prefix, const char *filename,
1313  ucp_config_t **config_p);
1314 
1315 
1326 void ucp_config_release(ucp_config_t *config);
1327 
1328 
1342 ucs_status_t ucp_config_modify(ucp_config_t *config, const char *name,
1343  const char *value);
1344 
1345 
1361 void ucp_config_print(const ucp_config_t *config, FILE *stream,
1362  const char *title, ucs_config_print_flags_t print_flags);
1363 
1364 
1375 void ucp_get_version(unsigned *major_version, unsigned *minor_version,
1376  unsigned *release_number);
1377 
1378 
1386 const char *ucp_get_version_string(void);
1387 
1388 
1397 ucs_status_t ucp_init_version(unsigned api_major_version, unsigned api_minor_version,
1398  const ucp_params_t *params, const ucp_config_t *config,
1399  ucp_context_h *context_p);
1438 static inline ucs_status_t ucp_init(const ucp_params_t *params,
1439  const ucp_config_t *config,
1440  ucp_context_h *context_p)
1441 {
1442  return ucp_init_version(UCP_API_MAJOR, UCP_API_MINOR, params, config,
1443  context_p);
1444 }
1445 
1446 
1464 void ucp_cleanup(ucp_context_h context_p);
1465 
1466 
1481  ucp_context_attr_t *attr);
1482 
1483 
1495 void ucp_context_print_info(const ucp_context_h context, FILE *stream);
1496 
1497 
1522  const ucp_worker_params_t *params,
1523  ucp_worker_h *worker_p);
1524 
1525 
1541 void ucp_worker_destroy(ucp_worker_h worker);
1542 
1543 
1556  ucp_worker_attr_t *attr);
1557 
1558 
1569 void ucp_worker_print_info(ucp_worker_h worker, FILE *stream);
1570 
1571 
1589  ucp_address_t **address_p,
1590  size_t *address_length_p);
1591 
1592 
1613 
1614 
1634 unsigned ucp_worker_progress(ucp_worker_h worker);
1635 
1636 
1657 ssize_t ucp_stream_worker_poll(ucp_worker_h worker,
1658  ucp_stream_poll_ep_t *poll_eps, size_t max_eps,
1659  unsigned flags);
1660 
1661 
1693 
1694 
1724 
1725 
1749 void ucp_worker_wait_mem(ucp_worker_h worker, void *address);
1750 
1751 
1822 
1823 
1843 
1844 
1865  const ucp_listener_params_t *params,
1866  ucp_listener_h *listener_p);
1867 
1868 
1878 void ucp_listener_destroy(ucp_listener_h listener);
1879 
1880 
1893 
1894 
1908  ucp_conn_request_attr_t *attr);
1909 
1910 
1944  ucp_ep_h *ep_p);
1945 
1946 
1973 ucs_status_ptr_t ucp_ep_close_nb(ucp_ep_h ep, unsigned mode);
1974 
1975 
1999  const ucp_request_param_t *param);
2000 
2001 
2019  ucp_conn_request_h conn_request);
2020 
2021 
2032 void ucp_ep_print_info(ucp_ep_h ep, FILE *stream);
2033 
2034 
2088 ucs_status_ptr_t ucp_ep_flush_nb(ucp_ep_h ep, unsigned flags,
2089  ucp_send_callback_t cb);
2090 
2091 
2114 
2115 
2191  ucp_mem_h *memh_p);
2192 
2193 
2222 
2223 
2238 
2239 
2252 void ucp_mem_print_info(const char *mem_size, ucp_context_h context, FILE *stream);
2253 
2254 
2262 typedef enum ucp_mem_advice {
2269 
2270 
2279 typedef struct ucp_mem_advise_params {
2285  uint64_t field_mask;
2286 
2290  void *address;
2291 
2295  size_t length;
2296 
2302 
2303 
2324  ucp_mem_advise_params_t *params);
2325 
2326 
2358  void **rkey_buffer_p, size_t *size_p);
2359 
2360 
2377 void ucp_rkey_buffer_release(void *rkey_buffer);
2378 
2379 
2402 ucs_status_t ucp_ep_rkey_unpack(ucp_ep_h ep, const void *rkey_buffer,
2403  ucp_rkey_h *rkey_p);
2404 
2405 
2425 ucs_status_t ucp_rkey_ptr(ucp_rkey_h rkey, uint64_t raddr, void **addr_p);
2426 
2427 
2449 void ucp_rkey_destroy(ucp_rkey_h rkey);
2450 
2451 
2478  ucp_am_callback_t cb, void *arg,
2479  uint32_t flags);
2480 
2481 
2505 ucs_status_ptr_t ucp_am_send_nb(ucp_ep_h ep, uint16_t id,
2506  const void *buffer, size_t count,
2507  ucp_datatype_t datatype,
2508  ucp_send_callback_t cb, unsigned flags);
2509 
2510 
2523 void ucp_am_data_release(ucp_worker_h worker, void *data);
2524 
2525 
2564 ucs_status_ptr_t ucp_stream_send_nb(ucp_ep_h ep, const void *buffer, size_t count,
2565  ucp_datatype_t datatype, ucp_send_callback_t cb,
2566  unsigned flags);
2567 
2568 
2595 ucs_status_ptr_t ucp_stream_send_nbx(ucp_ep_h ep, const void *buffer, size_t count,
2596  const ucp_request_param_t *param);
2597 
2598 
2639 ucs_status_ptr_t ucp_tag_send_nb(ucp_ep_h ep, const void *buffer, size_t count,
2640  ucp_datatype_t datatype, ucp_tag_t tag,
2641  ucp_send_callback_t cb);
2642 
2721 ucs_status_t ucp_tag_send_nbr(ucp_ep_h ep, const void *buffer, size_t count,
2722  ucp_datatype_t datatype, ucp_tag_t tag, void *req);
2723 
2755 ucs_status_ptr_t ucp_tag_send_sync_nb(ucp_ep_h ep, const void *buffer, size_t count,
2756  ucp_datatype_t datatype, ucp_tag_t tag,
2757  ucp_send_callback_t cb);
2758 
2759 
2798 ucs_status_ptr_t ucp_tag_send_nbx(ucp_ep_h ep, const void *buffer, size_t count,
2799  ucp_tag_t tag, const ucp_request_param_t *param);
2800 
2801 
2830 ucs_status_ptr_t ucp_tag_send_sync_nbx(ucp_ep_h ep, const void *buffer,
2831  size_t count, ucp_tag_t tag,
2832  const ucp_request_param_t *param);
2833 
2834 
2876 ucs_status_ptr_t ucp_stream_recv_nb(ucp_ep_h ep, void *buffer, size_t count,
2877  ucp_datatype_t datatype,
2879  size_t *length, unsigned flags);
2880 
2881 
2916 ucs_status_ptr_t ucp_stream_recv_nbx(ucp_ep_h ep, void *buffer, size_t count,
2917  size_t *length,
2918  const ucp_request_param_t *param);
2919 
2920 
2954 
2955 
2994 ucs_status_ptr_t ucp_tag_recv_nb(ucp_worker_h worker, void *buffer, size_t count,
2995  ucp_datatype_t datatype, ucp_tag_t tag,
2996  ucp_tag_t tag_mask, ucp_tag_recv_callback_t cb);
2997 
2998 
3028 ucs_status_t ucp_tag_recv_nbr(ucp_worker_h worker, void *buffer, size_t count,
3029  ucp_datatype_t datatype, ucp_tag_t tag,
3030  ucp_tag_t tag_mask, void *req);
3031 
3032 
3068 ucs_status_ptr_t ucp_tag_recv_nbx(ucp_worker_h worker, void *buffer, size_t count,
3069  ucp_tag_t tag, ucp_tag_t tag_mask,
3070  const ucp_request_param_t *param);
3071 
3072 
3114  ucp_tag_t tag_mask, int remove,
3115  ucp_tag_recv_info_t *info);
3116 
3117 
3152  size_t count, ucp_datatype_t datatype,
3153  ucp_tag_message_h message,
3155 
3156 
3183 ucs_status_t ucp_put_nbi(ucp_ep_h ep, const void *buffer, size_t length,
3184  uint64_t remote_addr, ucp_rkey_h rkey);
3185 
3229 ucs_status_ptr_t ucp_put_nb(ucp_ep_h ep, const void *buffer, size_t length,
3230  uint64_t remote_addr, ucp_rkey_h rkey,
3231  ucp_send_callback_t cb);
3232 
3233 
3284 ucs_status_ptr_t ucp_put_nbx(ucp_ep_h ep, const void *buffer, size_t count,
3285  uint64_t remote_addr, ucp_rkey_h rkey,
3286  const ucp_request_param_t *param);
3287 
3288 
3314 ucs_status_t ucp_get_nbi(ucp_ep_h ep, void *buffer, size_t length,
3315  uint64_t remote_addr, ucp_rkey_h rkey);
3316 
3359 ucs_status_ptr_t ucp_get_nb(ucp_ep_h ep, void *buffer, size_t length,
3360  uint64_t remote_addr, ucp_rkey_h rkey,
3361  ucp_send_callback_t cb);
3362 
3363 
3410 ucs_status_ptr_t ucp_get_nbx(ucp_ep_h ep, void *buffer, size_t count,
3411  uint64_t remote_addr, ucp_rkey_h rkey,
3412  const ucp_request_param_t *param);
3413 
3414 
3436 ucs_status_t ucp_atomic_post(ucp_ep_h ep, ucp_atomic_post_op_t opcode, uint64_t value,
3437  size_t op_size, uint64_t remote_addr, ucp_rkey_h rkey);
3438 
3439 
3488  uint64_t value, void *result, size_t op_size,
3489  uint64_t remote_addr, ucp_rkey_h rkey,
3490  ucp_send_callback_t cb);
3491 
3492 
3558 ucp_atomic_op_nbx(ucp_ep_h ep, ucp_atomic_op_t opcode, const void *buffer,
3559  size_t count, uint64_t remote_addr, ucp_rkey_h rkey,
3560  const ucp_request_param_t *param);
3561 
3562 
3575 ucs_status_t ucp_request_check_status(void *request);
3576 
3577 
3595 
3596 
3614 ucs_status_t ucp_stream_recv_request_test(void *request, size_t *length_p);
3615 
3635 void ucp_request_cancel(ucp_worker_h worker, void *request);
3636 
3637 
3650 void ucp_stream_data_release(ucp_ep_h ep, void *data);
3651 
3652 
3664 void ucp_request_free(void *request);
3665 
3666 
3680 void *ucp_request_alloc(ucp_worker_h worker);
3681 
3682 
3705 ucs_status_t ucp_dt_create_generic(const ucp_generic_dt_ops_t *ops, void *context,
3706  ucp_datatype_t *datatype_p);
3707 
3708 
3724 void ucp_dt_destroy(ucp_datatype_t datatype);
3725 
3726 
3750 
3751 
3781 ucs_status_ptr_t ucp_worker_flush_nb(ucp_worker_h worker, unsigned flags,
3782  ucp_send_callback_t cb);
3783 
3784 
3811  const ucp_request_param_t *param);
3812 
3813 
3819 END_C_DECLS
3820 
3821 #endif
ucs_status_t ucp_ep_rkey_unpack(ucp_ep_h ep, const void *rkey_buffer, ucp_rkey_h *rkey_p)
Create remote access key from packed buffer.
void ucp_context_print_info(const ucp_context_h context, FILE *stream)
Print context information.
ucp_listener_params_field
UCP listener parameters field mask.
Definition: ucp.h:179
size_t estimated_num_eps
Definition: ucp.h:846
Definition: ucp.h:121
Definition: ucp.h:326
Tuning parameters for the UCP endpoint.
Definition: ucp_def.h:586
Definition: ucp.h:405
Definition: ucp.h:533
void ucp_rkey_buffer_release(void *rkey_buffer)
Release packed remote key buffer.
ucs_status_t ucp_context_query(ucp_context_h context_p, ucp_context_attr_t *attr)
Get attributes specific to a particular context.
ucs_status_ptr_t ucp_tag_send_nbx(ucp_ep_h ep, const void *buffer, size_t count, ucp_tag_t tag, const ucp_request_param_t *param)
Non-blocking tagged-send operation.
ucp_mem_map_params_field
UCP memory mapping parameters field mask.
Definition: ucp.h:322
UCP receive information descriptor.
Definition: ucp.h:1189
uint64_t field_mask
Definition: ucp.h:2285
struct ucp_mem * ucp_mem_h
UCP Memory handle.
Definition: ucp_def.h:158
ucs_status_t ucp_put_nbi(ucp_ep_h ep, const void *buffer, size_t length, uint64_t remote_addr, ucp_rkey_h rkey)
Non-blocking implicit remote memory put operation.
ucp_am_cb_flags
Flags for a UCP Active Message callback.
Definition: ucp.h:450
Definition: ucp.h:164
Definition: ucp.h:425
ucs_status_t ucp_worker_get_address(ucp_worker_h worker, ucp_address_t **address_p, size_t *address_length_p)
Get the address of the worker object.
ucs_status_t ucp_dt_create_generic(const ucp_generic_dt_ops_t *ops, void *context, ucp_datatype_t *datatype_p)
Create a generic datatype.
void(* ucp_tag_recv_callback_t)(void *request, ucs_status_t status, ucp_tag_recv_info_t *info)
Completion callback for non-blocking tag receives.
Definition: ucp_def.h:477
ucs_status_t ucp_mem_unmap(ucp_context_h context, ucp_mem_h memh)
Unmap memory segment.
uint64_t ucp_datatype_t
UCP Datatype Identifier.
Definition: ucp_def.h:263
uint64_t field_mask
Definition: ucp.h:1025
Definition: ucp.h:571
Definition: ucp.h:410
void(* ucp_stream_recv_callback_t)(void *request, ucs_status_t status, size_t length)
Completion callback for non-blocking stream oriented receives.
Definition: ucp_def.h:432
Definition: ucp.h:228
Definition: ucp.h:139
ucs_status_ptr_t ucp_tag_send_sync_nbx(ucp_ep_h ep, const void *buffer, size_t count, ucp_tag_t tag, const ucp_request_param_t *param)
Non-blocking synchronous tagged-send operation.
ucp_request_cleanup_callback_t request_cleanup
Definition: ucp.h:812
uint32_t op_attr_mask
Definition: ucp.h:1243
Tuning parameters for the UCP worker.
Definition: ucp.h:943
Definition: ucp.h:123
Definition: ucp.h:434
ucp_tag_t sender_tag
Definition: ucp.h:1191
Definition: ucp.h:529
ucs_status_t ucp_mem_map(ucp_context_h context, const ucp_mem_map_params_t *params, ucp_mem_h *memh_p)
Map or allocate memory for zero-copy operations.
Definition: ucp.h:496
ssize_t ucp_stream_worker_poll(ucp_worker_h worker, ucp_stream_poll_ep_t *poll_eps, size_t max_eps, unsigned flags)
Poll for endpoints that are ready to consume streaming data.
ucp_listener_conn_handler_t conn_handler
Definition: ucp.h:1098
ucs_status_ptr_t ucp_atomic_fetch_nb(ucp_ep_h ep, ucp_atomic_fetch_op_t opcode, uint64_t value, void *result, size_t op_size, uint64_t remote_addr, ucp_rkey_h rkey, ucp_send_callback_t cb)
Post an atomic fetch operation.
Definition: ucp.h:565
Definition: ucp.h:406
Definition: ucp.h:407
ucp_tag_message_h ucp_tag_probe_nb(ucp_worker_h worker, ucp_tag_t tag, ucp_tag_t tag_mask, int remove, ucp_tag_recv_info_t *info)
Non-blocking probe and return a message.
struct ucp_context * ucp_context_h
UCP Application Context.
Definition: ucp_def.h:51
ucp_params_field
UCP context parameters field mask.
Definition: ucp.h:118
ucs_status_t ucp_rkey_ptr(ucp_rkey_h rkey, uint64_t raddr, void **addr_p)
Get a local pointer to remote memory.
void * ucp_request_alloc(ucp_worker_h worker)
Create an empty communications request.
uint64_t field_mask
Definition: ucp.h:771
Definition: ucp.h:296
ucs_status_ptr_t ucp_ep_flush_nbx(ucp_ep_h ep, const ucp_request_param_t *param)
Non-blocking flush of outstanding AMO and RMA operations on the endpoint.
void(* ucp_tag_recv_nbx_callback_t)(void *request, ucs_status_t status, const ucp_tag_recv_info_t *tag_info, void *user_data)
Completion callback for non-blocking tag receives ucp_tag_recv_nbx call.
Definition: ucp_def.h:502
ucs_status_t ucp_worker_arm(ucp_worker_h worker)
Turn on event notification for the next event.
struct ucp_listener_params ucp_listener_params_t
Parameters for a UCP listener object.
struct ucp_conn_request * ucp_conn_request_h
UCP connection request.
Definition: ucp_def.h:93
void ucp_dt_destroy(ucp_datatype_t datatype)
Destroy a datatype and release its resources.
Definition: ucp.h:510
void * request
Definition: ucp.h:1254
uint8_t reserved[16]
Definition: ucp.h:1128
Definition: ucp.h:515
Definition: ucp.h:167
struct ucp_dt_iov ucp_dt_iov_t
Structure for scatter-gather I/O.
struct ucp_listener * ucp_listener_h
UCP listen handle.
Definition: ucp_def.h:168
ucs_thread_mode_t thread_mode
Definition: ucp.h:910
void(* ucp_request_cleanup_callback_t)(void *request)
Request cleanup callback.
Definition: ucp_def.h:286
uint32_t flags
Definition: ucp.h:1246
Tuning parameters for the UCP memory mapping.
Definition: ucp.h:1139
unsigned flags
Definition: ucp.h:1123
ucp_atomic_fetch_op_t
Atomic operation requested for ucp_atomic_fetch.
Definition: ucp.h:509
ucs_status_t ucp_mem_query(const ucp_mem_h memh, ucp_mem_attr_t *attr)
query mapped memory segment
Definition: ucp.h:511
ucs_status_ptr_t ucp_stream_send_nbx(ucp_ep_h ep, const void *buffer, size_t count, const ucp_request_param_t *param)
Non-blocking stream send operation.
void ucp_worker_wait_mem(ucp_worker_h worker, void *address)
Wait for memory update on the address.
Definition: ucp.h:495
ucs_status_ptr_t ucp_stream_recv_nbx(ucp_ep_h ep, void *buffer, size_t count, size_t *length, const ucp_request_param_t *param)
Non-blocking stream receive operation of structured data into a user-supplied buffer.
void ucp_listener_destroy(ucp_listener_h listener)
Stop accepting connections on a local address of the worker object.
ucp_address_t * address
Definition: ucp.h:927
void ucp_mem_print_info(const char *mem_size, ucp_context_h context, FILE *stream)
Print memory mapping information.
void ucp_cleanup(ucp_context_h context_p)
Release UCP application context.
Attributes of the UCP Memory handle, filled by ucp_mem_query function.
Definition: ucp_def.h:176
ucp_worker_params_field
UCP worker parameters field mask.
Definition: ucp.h:162
ucs_status_ptr_t ucp_tag_msg_recv_nb(ucp_worker_h worker, void *buffer, size_t count, ucp_datatype_t datatype, ucp_tag_message_h message, ucp_tag_recv_callback_t cb)
Non-blocking receive operation for a probed message.
unsigned events
Definition: ucp.h:981
unsigned flags
Definition: ucp.h:1176
Definition: ucp.h:149
ucp_context_attr_field
UCP context attributes field mask.
Definition: ucp.h:354
size_t estimated_num_ppn
Definition: ucp.h:856
void ucp_worker_release_address(ucp_worker_h worker, ucp_address_t *address)
Release an address of the worker object.
ucs_thread_mode_t
Thread sharing mode.
Definition: thread_mode.h:19
Definition: ucp.h:2263
void ucp_ep_print_info(ucp_ep_h ep, FILE *stream)
Print endpoint information.
ucs_status_t ucp_ep_create(ucp_worker_h worker, const ucp_ep_params_t *params, ucp_ep_h *ep_p)
Create and connect an endpoint.
ucp_listener_attr_field
UCP listener attributes field mask.
Definition: ucp.h:381
void ucp_request_cancel(ucp_worker_h worker, void *request)
Cancel an outstanding communications request.
ucs_status_t ucp_worker_wait(ucp_worker_h worker)
Wait for an event of the worker.
Definition: ucp_compat.h:23
size_t length
Definition: ucp.h:633
void(* ucp_send_nbx_callback_t)(void *request, ucs_status_t status, void *user_data)
Completion callback for non-blocking sends ucp_tag_send_nbx call.
Definition: ucp_def.h:324
void * address
Definition: ucp.h:1158
ucs_status_t ucp_config_read(const char *env_prefix, const char *filename, ucp_config_t **config_p)
Read UCP configuration descriptor.
uint64_t features
Definition: ucp.h:779
uint64_t field_mask
Definition: ucp.h:1073
void(* ucp_request_init_callback_t)(void *request)
Request initialization callback.
Definition: ucp_def.h:274
size_t(* packed_size)(void *state)
Get the total size of packed data.
Definition: ucp.h:697
Definition: ucp.h:330
Definition: ucp.h:545
ucs_status_ptr_t ucp_tag_recv_nbx(ucp_worker_h worker, void *buffer, size_t count, ucp_tag_t tag, ucp_tag_t tag_mask, const ucp_request_param_t *param)
Non-blocking tagged-receive operation.
ucp_ep_h ep
Definition: ucp.h:1112
ucs_status_t ucp_stream_recv_request_test(void *request, size_t *length_p)
Check the status and currently available state of non-blocking request returned from ucp_stream_recv_...
Definition: ucp.h:412
ucs_status_t ucp_tag_send_nbr(ucp_ep_h ep, const void *buffer, size_t count, ucp_datatype_t datatype, ucp_tag_t tag, void *req)
Non-blocking tagged-send operations with user provided request.
struct ucp_conn_request_attr ucp_conn_request_attr_t
UCP listener's connection request attributes.
size_t address_length
Definition: ucp.h:932
ucs_status_t
Status codes.
Definition: status.h:45
ucp_mem_advise_params_field
UCP memory advice parameters field mask.
Definition: ucp.h:340
ucs_status_ptr_t ucp_am_send_nb(ucp_ep_h ep, uint16_t id, const void *buffer, size_t count, ucp_datatype_t datatype, ucp_send_callback_t cb, unsigned flags)
Send Active Message.
Definition: ucp.h:150
struct ucp_address ucp_address_t
UCP worker address.
Definition: ucp_def.h:103
struct ucp_params ucp_params_t
Tuning parameters for UCP library.
Output parameter of ucp_stream_worker_poll function.
Definition: ucp.h:1108
void(* ucp_stream_recv_nbx_callback_t)(void *request, ucs_status_t status, size_t length, void *user_data)
Completion callback for non-blocking stream receives ucp_stream_recv_nbx call.
Definition: ucp_def.h:454
void(* ucp_send_callback_t)(void *request, ucs_status_t status)
Completion callback for non-blocking sends.
Definition: ucp_def.h:304
void ucp_worker_destroy(ucp_worker_h worker)
Destroy a worker object.
struct ucp_worker_params ucp_worker_params_t
Tuning parameters for the UCP worker.
Definition: ucp.h:356
size_t length
Definition: ucp.h:1193
ucs_status_ptr_t ucp_worker_flush_nb(ucp_worker_h worker, unsigned flags, ucp_send_callback_t cb)
Flush outstanding AMO and RMA operations on the worker.
ucs_status_t ucp_get_nbi(ucp_ep_h ep, void *buffer, size_t length, uint64_t remote_addr, ucp_rkey_h rkey)
Non-blocking implicit remote memory get operation.
ucs_status_t ucp_request_check_status(void *request)
Check the status of non-blocking request.
ucs_status_ptr_t ucp_stream_recv_data_nb(ucp_ep_h ep, size_t *length)
Non-blocking stream receive operation of unstructured data into a UCP-supplied buffer.
unsigned ucp_worker_progress(ucp_worker_h worker)
Progress all communications on a specific worker.
Definition: ucp.h:119
ucs_status_t ucp_worker_fence(ucp_worker_h worker)
Assures ordering between non-blocking operations.
ucp_request_init_callback_t request_init
Definition: ucp.h:801
Definition: ucp.h:568
ucp_atomic_post_op_t
Atomic operation requested for ucp_atomic_post.
Definition: ucp.h:492
Definition: ucp.h:143
uint64_t field_mask
Definition: ucp.h:1049
UCP generic data type descriptor.
Definition: ucp.h:650
void ucp_get_version(unsigned *major_version, unsigned *minor_version, unsigned *release_number)
Get UCP library version.
ucp_cb_param_flags
Descriptor flags for Active Message callback.
Definition: ucp.h:479
struct ucp_config ucp_config_t
UCP configuration descriptor.
Definition: ucp_def.h:68
Definition: ucp.h:480
size_t length
Definition: ucp.h:1167
ucs_status_ptr_t ucp_tag_send_nb(ucp_ep_h ep, const void *buffer, size_t count, ucp_datatype_t datatype, ucp_tag_t tag, ucp_send_callback_t cb)
Non-blocking tagged-send operations.
void ucp_stream_data_release(ucp_ep_h ep, void *data)
Release UCP data buffer returned by ucp_stream_recv_data_nb.
Definition: ucp.h:369
ucs_status_ptr_t ucp_ep_close_nbx(ucp_ep_h ep, const ucp_request_param_t *param)
Non-blocking endpoint closure.
void ucp_request_free(void *request)
Release a communications request.
struct ucp_recv_desc * ucp_tag_message_h
UCP Message descriptor.
Definition: ucp_def.h:253
ucp_mem_advice_t advice
Definition: ucp.h:2300
Definition: ucp.h:566
Definition: ucp.h:532
ucp_ep_params_field
UCP endpoint parameters field mask.
Definition: ucp.h:220
ucp_stream_recv_flags_t
Flags to define behavior of ucp_stream_recv_nb function.
Definition: ucp.h:544
Definition: ucp.h:567
Definition: ucp.h:323
Definition: ucp.h:165
enum ucp_mem_advice ucp_mem_advice_t
list of UCP memory use advice.
ucp_ep_close_mode
Close UCP endpoint modes.
Definition: ucp.h:295
uint64_t tag_sender_mask
Definition: ucp.h:819
ucs_status_ptr_t ucp_get_nbx(ucp_ep_h ep, void *buffer, size_t count, uint64_t remote_addr, ucp_rkey_h rkey, const ucp_request_param_t *param)
Non-blocking remote memory get operation.
Definition: ucp.h:230
UCP listener's connection request attributes.
Definition: ucp.h:1042
Definition: ucp.h:564
ucs_status_t(* unpack)(void *state, size_t offset, const void *src, size_t length)
Unpack data.
Definition: ucp.h:732
void ucp_config_release(ucp_config_t *config)
Release configuration descriptor.
Definition: ucp.h:563
ucs_status_t ucp_listener_reject(ucp_listener_h listener, ucp_conn_request_h conn_request)
Reject an incoming connection request.
uint64_t field_mask
Definition: ucp.h:949
ucs_status_t ucp_mem_advise(ucp_context_h context, ucp_mem_h memh, ucp_mem_advise_params_t *params)
give advice about the use of memory
ucp_atomic_op_t
Atomic operation requested for ucp_atomic_op_nbx.
Definition: ucp.h:527
struct ucp_stream_poll_ep ucp_stream_poll_ep_t
Output parameter of ucp_stream_worker_poll function.
Definition: ucp.h:229
ucs_status_ptr_t ucp_stream_send_nb(ucp_ep_h ep, const void *buffer, size_t count, ucp_datatype_t datatype, ucp_send_callback_t cb, unsigned flags)
Non-blocking stream send operation.
Definition: ucp.h:465
void(* finish)(void *state)
Finish packing/unpacking.
Definition: ucp.h:748
ucs_status_t ucp_atomic_post(ucp_ep_h ep, ucp_atomic_post_op_t opcode, uint64_t value, size_t op_size, uint64_t remote_addr, ucp_rkey_h rkey)
Post an atomic memory operation.
Definition: ucp.h:451
ucp_feature
UCP configuration features.
Definition: ucp.h:138
Definition: ucp.h:494
Structure for scatter-gather I/O.
Definition: ucp.h:631
struct sockaddr_storage sockaddr
Definition: ucp.h:1031
Context attributes.
Definition: ucp.h:867
Definition: ucp.h:513
Definition: ucp.h:408
const char * ucp_get_version_string(void)
Get UCP library version as a string.
ucs_status_t ucp_tag_recv_nbr(ucp_worker_h worker, void *buffer, size_t count, ucp_datatype_t datatype, ucp_tag_t tag, ucp_tag_t tag_mask, void *req)
Non-blocking tagged-receive operation.
Definition: ucp.h:493
Definition: ucp.h:355
ucs_status_t ucp_worker_query(ucp_worker_h worker, ucp_worker_attr_t *attr)
Get attributes specific to a particular worker.
ucp_send_am_flags
Flags for sending a UCP Active Message.
Definition: ucp.h:464
Definition: ucp.h:227
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
static ucs_status_t ucp_init(const ucp_params_t *params, const ucp_config_t *config, ucp_context_h *context_p)
UCP context initialization.
Definition: ucp.h:1438
uint64_t ucp_tag_t
UCP Tag Identifier.
Definition: ucp_def.h:242
Definition: ucp.h:528
Definition: ucp.h:497
UCP listener attributes.
Definition: ucp.h:1018
ucp_op_attr_t
UCP operation fields and flags.
Definition: ucp.h:562
uint64_t field_mask
Definition: ucp.h:1146
Definition: ucp.h:514
void * user_data
Definition: ucp.h:1276
ucs_status_t ucp_conn_request_query(ucp_conn_request_h conn_request, ucp_conn_request_attr_t *attr)
Get attributes specific to a particular connection request received on the server side.
ucs_status_t ucp_config_modify(ucp_config_t *config, const char *name, const char *value)
Modify context configuration.
UCP worker attributes.
Definition: ucp.h:898
Definition: ucp.h:512
struct ucp_mem_advise_params ucp_mem_advise_params_t
Tuning parameters for the UCP memory advice.
void * reply_buffer
Definition: ucp.h:1282
ucs_status_ptr_t ucp_atomic_op_nbx(ucp_ep_h ep, ucp_atomic_op_t opcode, const void *buffer, size_t count, uint64_t remote_addr, ucp_rkey_h rkey, const ucp_request_param_t *param)
Post an atomic memory operation.
void ucp_config_print(const ucp_config_t *config, FILE *stream, const char *title, ucs_config_print_flags_t print_flags)
Print configuration information.
Definition: ucp.h:534
Tuning parameters for UCP library.
Definition: ucp.h:765
Definition: ucp.h:145
struct ucp_worker * ucp_worker_h
UCP Worker.
Definition: ucp_def.h:231
Definition: ucp.h:531
ucp_worker_address_flags_t
UCP worker address flags.
Definition: ucp.h:204
ucs_status_t ucp_tag_recv_request_test(void *request, ucp_tag_recv_info_t *info)
Check the status and currently available state of non-blocking request returned from ucp_tag_recv_nb ...
Tuning parameters for the UCP memory advice.
Definition: ucp.h:2279
Definition: ucp.h:147
void ucp_worker_print_info(ucp_worker_h worker, FILE *stream)
Print information about the worker.
uint64_t field_mask
Definition: ucp.h:905
Parameters for a UCP listener object.
Definition: ucp.h:1066
struct ucp_context_attr ucp_context_attr_t
Context attributes.
ucs_status_ptr_t ucp_tag_recv_nb(ucp_worker_h worker, void *buffer, size_t count, ucp_datatype_t datatype, ucp_tag_t tag, ucp_tag_t tag_mask, ucp_tag_recv_callback_t cb)
Non-blocking tagged-receive operation.
ucs_status_ptr_t ucp_ep_close_nb(ucp_ep_h ep, unsigned mode)
Non-blocking endpoint closure.
int mt_workers_shared
Definition: ucp.h:835
ucs_status_t ucp_worker_set_am_handler(ucp_worker_h worker, uint16_t id, ucp_am_callback_t cb, void *arg, uint32_t flags)
Add user defined callback for Active Message.
struct sockaddr_storage client_address
Definition: ucp.h:1055
Definition: ucp.h:122
ucp_worker_attr_field
UCP worker attributes field mask.
Definition: ucp.h:367
ucp_conn_request_attr_field
UCP listener's connection request attributes field mask.
Definition: ucp.h:393
ucp_listener_accept_handler_t accept_handler
Definition: ucp.h:1090
size_t(* pack)(void *state, size_t offset, void *dest, size_t max_length)
Pack data.
Definition: ucp.h:715
ucp_ep_close_flags_t
Close UCP endpoint modes.
Definition: ucp.h:268
size_t length
Definition: ucp.h:2295
void ucp_am_data_release(ucp_worker_h worker, void *data)
Releases Active Message data.
ucs_status_t ucp_rkey_pack(ucp_context_h context, ucp_mem_h memh, void **rkey_buffer_p, size_t *size_p)
Pack memory region remote access key.
Definition: ucp.h:250
Definition: types.h:117
ucs_status_t ucp_worker_create(ucp_context_h context, const ucp_worker_params_t *params, ucp_worker_h *worker_p)
Create a worker object.
struct ucp_ep * ucp_ep_h
UCP Endpoint.
Definition: ucp_def.h:83
struct ucp_mem_map_params ucp_mem_map_params_t
Tuning parameters for the UCP memory mapping.
void * address
Definition: ucp.h:2290
ucs_status_t ucp_listener_create(ucp_worker_h worker, const ucp_listener_params_t *params, ucp_listener_h *listener_p)
Accept connections on a local address of the worker object.
ucs_status_ptr_t ucp_tag_send_sync_nb(ucp_ep_h ep, const void *buffer, size_t count, ucp_datatype_t datatype, ucp_tag_t tag, ucp_send_callback_t cb)
Non-blocking synchronous tagged-send operation.
ucs_status_t ucp_worker_get_efd(ucp_worker_h worker, int *fd)
Obtain an event file descriptor for event notification.
Definition: ucp.h:516
UCP callback to handle the connection request in a client-server connection establishment flow.
Definition: ucp_def.h:410
Definition: ucp.h:120
ucs_status_ptr_t ucp_get_nb(ucp_ep_h ep, void *buffer, size_t length, uint64_t remote_addr, ucp_rkey_h rkey, ucp_send_callback_t cb)
Non-blocking remote memory get operation.
uint32_t address_flags
Definition: ucp.h:918
Definition: ucp.h:430
Operation parameters passed to ucp_tag_send_nbx, ucp_tag_send_sync_nbx, ucp_tag_recv_nbx,...
Definition: ucp.h:1237
Definition: ucp.h:309
Definition: ucp.h:530
size_t request_size
Definition: ucp.h:881
ucs_thread_mode_t thread_mode
Definition: ucp.h:887
ucs_cpu_set_t cpu_mask
Definition: ucp.h:972
ucs_thread_mode_t thread_mode
Definition: ucp.h:963
struct ucp_rkey * ucp_rkey_h
UCP Remote memory handle.
Definition: ucp_def.h:143
ucp_mem_advice
list of UCP memory use advice.
Definition: ucp.h:2262
void * user_data
Definition: ucp.h:989
ucs_status_t(* ucp_am_callback_t)(void *arg, void *data, size_t length, ucp_ep_h reply_ep, unsigned flags)
Callback to process incoming Active Message.
Definition: ucp_def.h:575
struct ucp_worker_attr ucp_worker_attr_t
UCP worker attributes.
Definition: ucp.h:2264
void ucp_rkey_destroy(ucp_rkey_h rkey)
Destroy the remote key.
ucs_status_ptr_t ucp_worker_flush_nbx(ucp_worker_h worker, const ucp_request_param_t *param)
Flush outstanding AMO and RMA operations on the worker.
ucs_status_ptr_t ucp_put_nb(ucp_ep_h ep, const void *buffer, size_t length, uint64_t remote_addr, ucp_rkey_h rkey, ucp_send_callback_t cb)
Non-blocking remote memory put operation.
ucp_dt_type
UCP data type classification.
Definition: ucp.h:404
struct ucp_generic_dt_ops ucp_generic_dt_ops_t
UCP generic data type descriptor.
Definition: ucp.h:141
ucs_status_ptr_t ucp_stream_recv_nb(ucp_ep_h ep, void *buffer, size_t count, ucp_datatype_t datatype, ucp_stream_recv_callback_t cb, size_t *length, unsigned flags)
Non-blocking stream receive operation of structured data into a user-supplied buffer.
ucs_status_ptr_t ucp_put_nbx(ucp_ep_h ep, const void *buffer, size_t count, uint64_t remote_addr, ucp_rkey_h rkey, const ucp_request_param_t *param)
Non-blocking remote memory put operation.
ucp_datatype_t datatype
Definition: ucp.h:1271
ucs_status_t ucp_listener_query(ucp_listener_h listener, ucp_listener_attr_t *attr)
Get attributes specific to a particular listener.
size_t request_size
Definition: ucp.h:789
Definition: ucp.h:225
Definition: ucp.h:269
Definition: ucp.h:581
uint64_t field_mask
Definition: ucp.h:874
ucp_ep_params_flags_field
UCP endpoint parameters flags.
Definition: ucp.h:241
ucs_status_t ucp_worker_signal(ucp_worker_h worker)
Cause an event of the worker.
Definition: ucp.h:570
int event_fd
Definition: ucp.h:1006
void * buffer
Definition: ucp.h:632
struct ucp_listener_attr ucp_listener_attr_t
UCP listener attributes.
void * user_data
Definition: ucp.h:1118
ucs_status_ptr_t ucp_ep_flush_nb(ucp_ep_h ep, unsigned flags, ucp_send_callback_t cb)
Non-blocking flush of outstanding AMO and RMA operations on the endpoint.
ucs_sock_addr_t sockaddr
Definition: ucp.h:1082