-
Notifications
You must be signed in to change notification settings - Fork 487
UCT/IB: Split dp_ordering flag for DV/DevX #10813
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
/azp run |
Azure Pipelines successfully started running 5 pipeline(s). |
/azp run |
Azure Pipelines successfully started running 5 pipeline(s). |
@yosefe please review |
/azp run |
Azure Pipelines successfully started running 5 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also, can we add some test for it, that runs with UCX_IB_MLX5_DEVX=no ?
} | ||
|
||
static ucs_status_t | ||
uct_ib_mlx5dv_check_ddp(struct ibv_context *ctx, uct_ib_mlx5_md_t *md); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
since this function is small, maybe just move it here? instead of forward declaration
int rc; | ||
int dc; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we can make those uint8_t as well
uct_rc_mlx5_dp_ordering_ooo_init(uct_ib_mlx5_md_t *md, | ||
uct_rc_mlx5_iface_common_t *iface, | ||
uct_ib_mlx5_dp_ordering_t dp_ordering_cap, | ||
int ddp_supported_dv, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe rename dp_ordering_cap param to dp_ordering_cap_devx
uint8_t dp_ordering; | ||
uint8_t dp_ordering_devx; | ||
uint8_t dp_ordering_force; | ||
int ddp_enabled_dv; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
uint8_t
if ((config->ddp_enable == UCS_YES) && !ddp_supported_dv) { | ||
ucs_error("%s/%s: ddp is not supported for DV", | ||
uct_ib_device_name(&md->super.dev), tl_name); | ||
return UCS_ERR_INVALID_PARAM; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
here we would fail even if UCT_IB_MLX5_MD_FLAG_DEVX is set, and we don't need to fail in this case.
IMO this function should check first if UCT_IB_MLX5_MD_FLAG_DEVX is not set, and in such case handle "dv" flow and set config.dp_ordering_devx/dp_ordering_force to stub values. Otherwise, initialize the devx fields like today and set ddp_enabled_dv to 0.
iface->config.ddp_enabled_dv = (config->ddp_enable == UCS_NO) ? | ||
0 : | ||
ddp_supported_dv; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
iface->config.ddp_enabled_dv = (config->ddp_enable == UCS_NO) ? | |
0 : | |
ddp_supported_dv; | |
iface->config.ddp_enabled_dv = (config->ddp_enable != UCS_NO) && ddp_supported_dv; |
What?
Create different flags to store dp_ordering support for DevX and DV API
Why?
In case we use both DevX and DV API for different objects and OOO semantics was selected, we need to make sure it's supported for both.