Repository navigation
UCT/IB/MLX5/RC: Implement get_sgl_zcopy - #11763
Conversation
|
🤖 Starting review — findings will be posted here when done. |
|
Residual note (not a finding): op->length is unsigned (32-bit) while total is size_t, so a single SGL GET whose aggregate size exceeds 4 GB would truncate the read-credit release via uct_rc_ep_get_zcopy_completion_handler. Pre-existing limitation of the send_op length field, only reachable with non-default TX_NUM_GET_BYTES plus very large aggregate transfers; does not block this PR. |
|
🤖 Starting review — findings will be posted here when done. |
|
Residual (non-blocking): the previously-noted |
|
🤖 CI Triage Agent — TL;DR: The Full analysisSummary: Root cause: In Evidence from the log: Implicated commit: File: Suggested fix: Annotate the variable so it survives stats-disabled builds, matching the existing style in the same function: - size_t total;
+ size_t UCS_V_UNUSED total;Verify locally with a stats-disabled configure ( Related: PR #11763 (branch |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Review complete — no issues found. |
|
🤖 Starting review — findings will be posted here when done. |
|
Verified as correct (no action): Fence handling for GET: Verified as correct (no action): Verified as correct (no action): The refactor of PUT into Verified as correct (no action): iface_query_v2, the ops table wiring, and the plugin dispatch for Residual (already noted in prior reviews, not re-raised): The |
| { | ||
| uct_rc_iface_send_op_t *op; | ||
|
|
||
| op = uct_rc_txqp_init_send_comp(iface, handler, comp, flags, length); |
There was a problem hiding this comment.
seems we support sgl op without completion. Where do we return resources then when comp is NULL?
There was a problem hiding this comment.
seems we support sgl op without completion.
Yes, just like regular IOV.
Where do we return resources then when comp is NULL?
TX credits return via CQ polling, no op needed. Read credits need the op, so with comp == NULL they leak, same as regular get_zcopy.
I suggest to fix both in a follow-up rather than in this PR.
There was a problem hiding this comment.
Following @jeynman's comment, SGL GET now always creates a send op with a dedicated handler, so read credits are returned even when comp == NULL. The same leak in regular get_zcopy is still there.
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Starting review — findings will be posted here when done. |
|
🤖 Starting review — findings will be posted here when done. |
| total = uct_rc_mlx5_base_ep_sgl_zcopy_post( | ||
| ep, buffers, lengths, memhs, remote_addrs, rkeys, count, | ||
| MLX5_OPCODE_RDMA_READ, fence_flag, 0, | ||
| uct_rc_ep_get_zcopy_completion_handler, |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
| uct_ib_mlx5_txwq_ring_doorbell(txwq, ctrl, txwq->sw_pi, 1); | ||
| uct_rc_mlx5_txwq_add_psn(txwq, IBV_QPT_RC, num_packets); | ||
|
|
||
| if (comp_always) { |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
🤖 Starting review — findings will be posted here when done. |
| uct_rc_mlx5_send_op_is_put_zcopy(op) || | ||
| uct_rc_mlx5_send_op_is_get_bcopy(op) || | ||
| uct_rc_mlx5_send_op_is_get_zcopy(op) || | ||
| uct_rc_mlx5_send_op_is_get_sgl_zcopy(op) || |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
|
🤖 Starting review — findings will be posted here when done. |
What?
Implement
uct_ep_get_sgl_zcopyfor RC mlx5, reportUCT_IFACE_FLAG_V2_GET_SGL_ZCOPYandmax_get_sgl_zcopy_count, and add the external plugin hooks.Why?
Enables SGL support in
ucp_get_nbxover RC, asput_sgl_zcopydoes for the write direction (#11677, #11735).How?
Posts one RDMA READ WQE per element in a single doorbell, following
put_sgl_zcopy.