31#include <ucp/api/ucp.h>
32#include <unordered_map>
62 ucp_send_nbx_callback_t
cb;
85 unsigned prog_boff_max ,
86 int prog_itr_max,
int rdesc_rel_max, ucs_thread_mode_t thread_mode,
87 size_t user_req_size,
size_t user_req_alignment,
size_t pbuf_max_size,
88 size_t pbuf_max_chunk_size,
size_t pbuf_max_count,
size_t pbuf_init_count,
89 size_t mmp_max_obj_size,
bool leak_check);
93 bool ep_add(
int target, ucp_address_t *addr,
int remote_dev_index);
94 bool ep_get(
int target,
int remote_dev_index, ucp_ep_h *ep)
const;
108 size_t header_size,
const void *payload,
size_t payload_size,
109 ucs_memory_type_t memtype);
114 bool setup_worker_efd();
115 bool ep_close(ucp_ep_h ep);
116 bool needs_progress()
const;
117 bool progress_with_wakeup();
118 bool progress_without_wakeup();
119 static void *pbuf_chunk_alloc(
size_t size,
void *arg);
120 static void pbuf_chunk_release(
void *chunk,
void *arg);
124 bool initialized{
false};
125 bool have_residual_events{
false};
131 unsigned prog_boff_max;
134 ucs_thread_mode_t thread_mode;
135 size_t pbuf_max_size;
139 SpinLock req_mp_spinlock;
140 SpinLock pbuf_mp_spinlock;
141 std::queue<void *> am_rdesc_q;
142 SpinLock am_rdesc_q_spinlock;
143 SpinLock mmp_spinlock;
144 std::unordered_map<void *, ucp_mem_h> pbuf_mp_mem_hs;
145 std::unordered_map<int, std::unordered_map<int, ucp_ep_h>> eps;
146 size_t max_am_header;
148 atomic<uint64_t> pcount{0};
149 unsigned prog_boff_count{0};
156 bool init(
const std::unordered_map<std::string, std::string> &ev_map);
158 bool mem_map(
const ucp_mem_map_params_t *params, ucp_mem_h *mem_h_ptr)
const;
168 bool initialized{
false};
169 ucp_context_h context;
170 ucp_context_attr_t context_attr;
171 std::unordered_map<int, std::unordered_map<int, ucp_ep_h>> eps;
Definition cuda_internal.h:392
Definition ucp_context.h:152
size_t get_ucp_req_size() const
Definition ucp_context.h:161
ucp_context_h get_ucp_context() const
Definition ucp_context.h:160
uint64_t supported_memtypes() const
Definition ucp_context.h:162
bool init(const std::unordered_map< std::string, std::string > &ev_map)
bool mem_unmap(ucp_mem_h mem_h) const
UCPContext(int ep_nums_est=-1)
bool mem_map(const ucp_mem_map_params_t *params, ucp_mem_h *mem_h_ptr) const
Definition ucp_context.h:40
bool set_am_handler(unsigned am_id, ucp_am_recv_callback_t cb, void *args)
OpType
Definition ucp_context.h:49
@ EP_FLUSH
Definition ucp_context.h:52
@ AM_SEND
Definition ucp_context.h:50
@ PUT
Definition ucp_context.h:51
void mmp_release(void *buf)
Type
Definition ucp_context.h:43
@ WORKER_RX
Definition ucp_context.h:45
@ WORKER_TX
Definition ucp_context.h:44
@ WORKER_LAST
Definition ucp_context.h:46
const UCPContext * get_context() const
Definition ucp_context.h:102
void * pbuf_get(size_t size)
bool am_send_fast_path(ucp_ep_h ep, unsigned am_id, const void *header, size_t header_size, const void *payload, size_t payload_size, ucs_memory_type_t memtype)
bool submit_req(Request *req)
ucp_worker_h get_ucp_worker() const
Definition ucp_context.h:103
void * mmp_get(size_t size)
bool ep_add(int target, ucp_address_t *addr, int remote_dev_index)
UCPWorker(const UCPContext *context, Type type, size_t am_alignment, bool use_wakeup, unsigned prog_boff_max, int prog_itr_max, int rdesc_rel_max, ucs_thread_mode_t thread_mode, size_t user_req_size, size_t user_req_alignment, size_t pbuf_max_size, size_t pbuf_max_chunk_size, size_t pbuf_max_count, size_t pbuf_init_count, size_t mmp_max_obj_size, bool leak_check)
size_t get_max_am_header() const
Definition ucp_context.h:101
void request_release(void *req)
bool ep_get(int target, int remote_dev_index, ucp_ep_h *ep) const
void return_am_rdesc(void *rdesc)
void pbuf_release(void *buf)
Definition activemsg.h:38
Definition ucp_context.h:54
unsigned id
Definition ucp_context.h:66
ucp_rkey_h rkey
Definition ucp_context.h:72
void * args
Definition ucp_context.h:58
ucs_memory_type_t memtype
Definition ucp_context.h:61
OpType op_type
Definition ucp_context.h:55
void * header
Definition ucp_context.h:67
ucp_ep_h ep
Definition ucp_context.h:56
struct Realm::UCP::UCPWorker::Request::@41::@44 rma
size_t payload_size
Definition ucp_context.h:60
struct Realm::UCP::UCPWorker::Request::@41::@43 am
uint64_t remote_addr
Definition ucp_context.h:73
size_t header_size
Definition ucp_context.h:68
ucp_send_nbx_callback_t cb
Definition ucp_context.h:62
uint32_t flags
Definition ucp_context.h:57
void * payload
Definition ucp_context.h:59