Skip to content

Commit

Permalink
UCX/RNDV/CUDA: RNDV protocol improvements for CUDA
Browse files Browse the repository at this point in the history
  • Loading branch information
bureddy committed Sep 2, 2020
1 parent cac4887 commit 869bf03
Show file tree
Hide file tree
Showing 6 changed files with 194 additions and 106 deletions.
4 changes: 4 additions & 0 deletions src/ucp/core/ucp_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,10 @@ static ucs_config_field_t ucp_config_table[] = {
"RNDV fragment size \n",
ucs_offsetof(ucp_config_t, ctx.rndv_frag_size), UCS_CONFIG_TYPE_MEMUNITS},

{"RNDV_PIPELINE_SEND_THRESH", "inf",
"RNDV size threshold to enable sender side pipeline for mem type\n",
ucs_offsetof(ucp_config_t, ctx.rndv_pipeline_send_thresh), UCS_CONFIG_TYPE_MEMUNITS},

{"MEMTYPE_CACHE", "y",
"Enable memory type (cuda/rocm) cache \n",
ucs_offsetof(ucp_config_t, ctx.enable_memtype_cache), UCS_CONFIG_TYPE_BOOL},
Expand Down
2 changes: 2 additions & 0 deletions src/ucp/core/ucp_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ typedef struct ucp_context_config {
size_t seg_size;
/** RNDV pipeline fragment size */
size_t rndv_frag_size;
/** RNDV pipline send threshold */
size_t rndv_pipeline_send_thresh;
/** Threshold for using tag matching offload capabilities. Smaller buffers
* will not be posted to the transport. */
size_t tm_thresh;
Expand Down
15 changes: 9 additions & 6 deletions src/ucp/core/ucp_request.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,12 +154,15 @@ struct ucp_request {
} proxy;

struct {
uint64_t remote_address; /* address of the sender's data buffer */
uintptr_t remote_request; /* pointer to the sender's request */
ucp_request_t *rreq; /* receive request on the recv side */
ucp_rkey_h rkey; /* key for remote send buffer */
ucp_lane_map_t lanes_map; /* used lanes map */
ucp_lane_index_t lane_count; /* number of lanes used in transaction */
uint64_t remote_address; /* address of the sender's data buffer */
uintptr_t remote_request; /* pointer to the sender's request */
ucp_request_t *rreq; /* receive request on the recv side */
ucp_rkey_h rkey; /* key for remote send buffer */
ucp_lane_map_t lanes_map_avail; /* used lanes map */
ucp_lane_map_t lanes_map_all; /* actual lanes map */
uint8_t lanes_count; /* actual lanes count */
uint8_t rkey_index[UCP_MAX_LANES];

} rndv_get;

struct {
Expand Down
3 changes: 1 addition & 2 deletions src/ucp/tag/offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -561,8 +561,7 @@ ucs_status_t ucp_tag_offload_sw_rndv(uct_pending_req_t *self)
rndv_rts_hdr = ucs_alloca(rndv_hdr_len);
packed_len = ucp_tag_rndv_rts_pack(rndv_rts_hdr, req);
ucs_assert((rndv_rts_hdr->address != 0) || !UCP_DT_IS_CONTIG(req->send.datatype) ||
!ucp_rndv_is_get_zcopy(req->send.mem_type,
ep->worker->context->config.ext.rndv_mode));
!ucp_rndv_is_get_zcopy(req, ep->worker->context));
return uct_ep_tag_rndv_request(ep->uct_eps[req->send.lane],
req->send.msg_proto.tag.tag,
rndv_rts_hdr, packed_len, 0);
Expand Down
Loading

0 comments on commit 869bf03

Please sign in to comment.