UCX  1.20
Unified Communication X
ucp_compat.h
1 /*
2  * Copyright (c) NVIDIA CORPORATION & AFFILIATES, 2001-2017. ALL RIGHTS RESERVED.
3  *
4  * See file LICENSE for terms.
5  */
6 
7 
8 #ifndef UCP_COMPAT_H_
9 #define UCP_COMPAT_H_
10 
11 
12 #include <ucp/api/ucp_def.h>
13 #include <ucs/sys/compiler_def.h>
14 
15 BEGIN_C_DECLS
16 
25  void *arg;
28 
29 
34 int ucp_request_is_completed(void *request);
35 
36 
41 void ucp_request_release(void *request);
42 
43 
48 void ucp_ep_destroy(ucp_ep_h ep);
49 
50 
56 
57 
67 void *ucp_request_alloc(ucp_worker_h worker);
68 
69 
84 
85 
118  void **rkey_buffer_p, size_t *size_p);
119 
120 
139 void ucp_rkey_buffer_release(void *rkey_buffer);
140 
141 
147 
190 
191 
239 ucs_status_t ucp_put(ucp_ep_h ep, const void *buffer, size_t length,
240  uint64_t remote_addr, ucp_rkey_h rkey);
241 
242 
266 ucs_status_t ucp_get(ucp_ep_h ep, void *buffer, size_t length,
267  uint64_t remote_addr, ucp_rkey_h rkey);
268 
269 
296 ucs_status_t ucp_atomic_add32(ucp_ep_h ep, uint32_t add,
297  uint64_t remote_addr, ucp_rkey_h rkey);
298 
299 
326 ucs_status_t ucp_atomic_add64(ucp_ep_h ep, uint64_t add,
327  uint64_t remote_addr, ucp_rkey_h rkey);
328 
329 
360 ucs_status_t ucp_atomic_fadd32(ucp_ep_h ep, uint32_t add, uint64_t remote_addr,
361  ucp_rkey_h rkey, uint32_t *result);
362 
363 
394 ucs_status_t ucp_atomic_fadd64(ucp_ep_h ep, uint64_t add, uint64_t remote_addr,
395  ucp_rkey_h rkey, uint64_t *result);
396 
397 
427 ucs_status_t ucp_atomic_swap32(ucp_ep_h ep, uint32_t swap, uint64_t remote_addr,
428  ucp_rkey_h rkey, uint32_t *result);
429 
430 
460 ucs_status_t ucp_atomic_swap64(ucp_ep_h ep, uint64_t swap, uint64_t remote_addr,
461  ucp_rkey_h rkey, uint64_t *result);
462 
463 
494 ucs_status_t ucp_atomic_cswap32(ucp_ep_h ep, uint32_t compare, uint32_t swap,
495  uint64_t remote_addr, ucp_rkey_h rkey,
496  uint32_t *result);
497 
498 
529 ucs_status_t ucp_atomic_cswap64(ucp_ep_h ep, uint64_t compare, uint64_t swap,
530  uint64_t remote_addr, ucp_rkey_h rkey,
531  uint64_t *result);
532 
533 
568 
569 
591  ucp_address_t **address_p,
592  size_t *address_length_p);
593 
594 
623 ucs_status_ptr_t ucp_ep_close_nb(ucp_ep_h ep, unsigned mode);
624 
625 
653 ucs_status_ptr_t ucp_ep_flush_nb(ucp_ep_h ep, unsigned flags,
655 
656 
685  ucp_am_callback_t cb, void *arg,
686  uint32_t flags);
687 
688 
715  const void *buffer, size_t count,
716  ucp_datatype_t datatype,
717  ucp_send_callback_t cb, unsigned flags);
718 
719 
760 ucs_status_ptr_t ucp_stream_send_nb(ucp_ep_h ep, const void *buffer, size_t count,
762  unsigned flags);
763 
764 
808 ucs_status_ptr_t ucp_stream_recv_nb(ucp_ep_h ep, void *buffer, size_t count,
809  ucp_datatype_t datatype,
811  size_t *length, unsigned flags);
812 
813 
856 ucs_status_ptr_t ucp_tag_send_nb(ucp_ep_h ep, const void *buffer, size_t count,
857  ucp_datatype_t datatype, ucp_tag_t tag,
859 
860 
942 ucs_status_t ucp_tag_send_nbr(ucp_ep_h ep, const void *buffer, size_t count,
943  ucp_datatype_t datatype, ucp_tag_t tag, void *req);
944 
945 
979 ucs_status_ptr_t ucp_tag_send_sync_nb(ucp_ep_h ep, const void *buffer, size_t count,
980  ucp_datatype_t datatype, ucp_tag_t tag,
982 
983 
1024 ucs_status_ptr_t ucp_tag_recv_nb(ucp_worker_h worker, void *buffer, size_t count,
1025  ucp_datatype_t datatype, ucp_tag_t tag,
1027 
1028 
1061 ucs_status_t ucp_tag_recv_nbr(ucp_worker_h worker, void *buffer, size_t count,
1062  ucp_datatype_t datatype, ucp_tag_t tag,
1063  ucp_tag_t tag_mask, void *req);
1064 
1065 
1102  size_t count, ucp_datatype_t datatype,
1103  ucp_tag_message_h message,
1105 
1106 
1137 ucs_status_t ucp_put_nbi(ucp_ep_h ep, const void *buffer, size_t length,
1138  uint64_t remote_addr, ucp_rkey_h rkey);
1139 
1140 
1186 ucs_status_ptr_t ucp_put_nb(ucp_ep_h ep, const void *buffer, size_t length,
1187  uint64_t remote_addr, ucp_rkey_h rkey,
1189 
1190 
1220 ucs_status_t ucp_get_nbi(ucp_ep_h ep, void *buffer, size_t length,
1221  uint64_t remote_addr, ucp_rkey_h rkey);
1222 
1223 
1268 ucs_status_ptr_t ucp_get_nb(ucp_ep_h ep, void *buffer, size_t length,
1269  uint64_t remote_addr, ucp_rkey_h rkey,
1271 
1272 
1283 typedef enum {
1290 
1291 
1316 ucs_status_t ucp_atomic_post(ucp_ep_h ep, ucp_atomic_post_op_t opcode, uint64_t value,
1317  size_t op_size, uint64_t remote_addr, ucp_rkey_h rkey);
1318 
1319 
1330 typedef enum {
1339 
1340 
1392  uint64_t value, void *result, size_t op_size,
1393  uint64_t remote_addr, ucp_rkey_h rkey,
1395 
1396 
1428 ucs_status_ptr_t ucp_worker_flush_nb(ucp_worker_h worker, unsigned flags,
1430 
1431 
1457 };
1458 
1459 
1460 END_C_DECLS
1461 
1462 #endif
Tuning parameters for the UCP endpoint.
Definition: ucp_def.h:683
ucs_status_ptr_t ucp_ep_modify_nb(ucp_ep_h ep, const ucp_ep_params_t *params)
Modify endpoint parameters.
void ucp_rkey_buffer_release(void *rkey_buffer)
Release packed remote key buffer.
UCP receive information descriptor.
Definition: ucp.h:1719
struct ucp_mem * ucp_mem_h
UCP Memory handle.
Definition: ucp_def.h:167
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.
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.
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:493
uint64_t ucp_datatype_t
UCP Datatype Identifier.
Definition: ucp_def.h:278
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:448
Definition: ucp_compat.h:1287
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.
ucs_status_t ucp_atomic_cswap64(ucp_ep_h ep, uint64_t compare, uint64_t swap, uint64_t remote_addr, ucp_rkey_h rkey, uint64_t *result)
Blocking atomic conditional swap (cswap) operation for 64 bit values.
struct ucp_context * ucp_context_h
UCP Application Context.
Definition: ucp_def.h:60
void * ucp_request_alloc(ucp_worker_h worker)
Definition: ucp_compat.h:1441
Definition: ucp_compat.h:1331
ucs_status_t ucp_request_test(void *request, ucp_tag_recv_info_t *info)
int ucp_request_is_completed(void *request)
ucs_status_t ucp_put(ucp_ep_h ep, const void *buffer, size_t length, uint64_t remote_addr, ucp_rkey_h rkey)
Blocking remote memory put operation.
Definition: ucp_compat.h:1336
ucs_status_t ucp_atomic_fadd64(ucp_ep_h ep, uint64_t add, uint64_t remote_addr, ucp_rkey_h rkey, uint64_t *result)
Blocking atomic fetch and add operation for 64 bit integers.
ucp_atomic_fetch_op_t
Atomic operation requested for ucp_atomic_fetch.
Definition: ucp_compat.h:1330
Definition: ucp_compat.h:1332
Definition: ucp_compat.h:1286
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.
Definition: ucp_compat.h:23
ucs_status_t ucp_atomic_cswap32(ucp_ep_h ep, uint32_t compare, uint32_t swap, uint64_t remote_addr, ucp_rkey_h rkey, uint32_t *result)
Blocking atomic conditional swap (cswap) operation for 32 bit values.
void * arg
Definition: ucp_compat.h:25
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.
ucs_status_t ucp_get(ucp_ep_h ep, void *buffer, size_t length, uint64_t remote_addr, ucp_rkey_h rkey)
Blocking remote memory get operation.
ucs_status_t
Status codes.
Definition: status.h:45
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.
struct ucp_address ucp_address_t
UCP worker address.
Definition: ucp_def.h:112
ucs_status_t ucp_atomic_add32(ucp_ep_h ep, uint32_t add, uint64_t remote_addr, ucp_rkey_h rkey)
Blocking atomic add operation for 32 bit integers.
void(* ucp_send_callback_t)(void *request, ucs_status_t status)
Completion callback for non-blocking sends.
Definition: ucp_def.h:319
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_ep_flush(ucp_ep_h ep)
void ucp_request_release(void *request)
ucp_atomic_post_op_t
Atomic operation requested for ucp_atomic_post.
Definition: ucp_compat.h:1283
ucs_status_ptr_t ucp_disconnect_nb(ucp_ep_h ep)
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.
struct ucp_recv_desc * ucp_tag_message_h
UCP Message descriptor.
Definition: ucp_def.h:268
ucp_ep_close_mode
Close UCP endpoint modes.
Definition: ucp_compat.h:1440
ucp_listener_accept_callback_t cb
Definition: ucp_compat.h:24
void ucp_ep_destroy(ucp_ep_h ep)
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.
ucs_status_t ucp_atomic_swap32(ucp_ep_h ep, uint32_t swap, uint64_t remote_addr, ucp_rkey_h rkey, uint32_t *result)
Blocking atomic swap operation for 32 bit values.
void(* ucp_listener_accept_callback_t)(ucp_ep_h ep, void *arg)
A callback for accepting client/server connections on a listener ucp_listener_h.
Definition: ucp_def.h:390
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_compat.h:1285
Definition: ucp_compat.h:1334
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_compat.h:1284
void * ucs_status_ptr_t
Status pointer.
Definition: status.h:106
uint64_t ucp_tag_t
UCP Tag Identifier.
Definition: ucp_def.h:257
Definition: ucp_compat.h:1288
Definition: ucp_compat.h:1335
Definition: ucp_compat.h:1333
struct ucp_worker * ucp_worker_h
UCP Worker.
Definition: ucp_def.h:246
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.
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.
ucs_status_t ucp_atomic_swap64(ucp_ep_h ep, uint64_t swap, uint64_t remote_addr, ucp_rkey_h rkey, uint64_t *result)
Blocking atomic swap operation for 64 bit values.
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.
ucs_status_t ucp_worker_flush(ucp_worker_h worker)
Flush outstanding AMO and RMA operations on the worker.
struct ucp_ep * ucp_ep_h
UCP Endpoint.
Definition: ucp_def.h:92
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.
Definition: ucp_compat.h:1337
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.
Definition: ucp_compat.h:1454
struct ucp_listener_accept_handler ucp_listener_accept_handler_t
ucs_status_t ucp_atomic_add64(ucp_ep_h ep, uint64_t add, uint64_t remote_addr, ucp_rkey_h rkey)
Blocking atomic add operation for 64 bit integers.
struct ucp_rkey * ucp_rkey_h
UCP Remote memory handle.
Definition: ucp_def.h:152
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:613
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.
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_t ucp_atomic_fadd32(ucp_ep_h ep, uint32_t add, uint64_t remote_addr, ucp_rkey_h rkey, uint32_t *result)
Blocking atomic fetch and add operation for 32 bit integers.
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.