已合并
支持采用HcommChannelDrain实现channel的阻塞完成功能调用 #2771
YantingLiu创建于 8月26日
支持采用HcommChannelDrain实现channel的阻塞完成功能调用 #2771
已合并
YantingLiu创建于 8月26日
YantingLiu
8月26日

描述

适配A5 Host CPU Channel的数据面Drain能力。

本PR仅修改HCCL仓:将Host-NIC DPU的Send、Recv、BatchSendRecv及公共数据传输模板中,用于等待Channel任务完成的HcommChannelFenceOnThread替换为HcommChannelDrainOnThread。

主要改动:

  • Send、Recv、BatchSendRecv及DPU公共数据传输流程改用Channel Drain。
  • DpuBatchTransfer分别对TX/RX Channel执行Drain;TX/RX Handle相同时只执行一次。
  • 保留原有HcommFenceOnThread(0)调用,PCIe Flush流程保持不变。
  • 新增HcommChannelDrainOnThreadWithCompat统一处理Drain返回值。
  • 当Drain返回HCCL_E_PTR时,提示当前HCOMM可能尚未支持Host Channel Drain,并透传原错误码,不触发core。
  • 在HCCL的HCOMM动态加载层补充HcommChannelDrainOnThread弱声明及弱桩,使使用未声明该接口的旧HCOMM头文件进行编包时能够通过编译。运行时使用Host Channel Drain仍要求配套HCOMM提供对应接口和实现。
  • 不新增运行时符号能力判断,不改变其他非Host-NIC DPU业务路径。

涉及调用点:

  • InsTempBatchSendRecvDpu
  • InsTempSendHostNicDpu
  • InsTempRecvHostNicDpu
  • SendRecvWrite
  • SendWrite
  • RecvWrite
  • DpuBatchTransfer TX/RX Channel

关联的Issue

NA

测试

  1. 上板验证:hccl allgather reduce nhr等打流验证
  2. rdv

文档更新

类型标签

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 YantingLiu 的贡献)
YYantingLiu
8月26日 创建了 pull request,commit 7421f531
atomgit-bot
atomgit-bot
8月26日 评论:

变更摘要

该 PR(标题"适配drian")主要将 DPU 侧主机通道的同步语义从"Fence"切换为"Drain":在多个 DPU/Host NIC 算子模板中,将 HcommChannelFenceOnThread 调用替换为 HcommChannelDrainOnThread,并对 HCCL_E_NOT_SUPPORT 返回值做显式错误日志与返回处理,同时为测试桩补充了 HcommChannelDrainOnThread 的实现。该改动主要影响 BatchSendRecv、Send/Recv 及 NHR 批量传输等算子的主机通道同步流程。

主要改动

  • BatchSendRecv FENCE 分支改用 Drain: 在 InsTempBatchSendRecvDpu::DPUKernelRun 的 FENCE 分支中,将 HcommChannelFenceOnThread 替换为 HcommChannelDrainOnThread,当返回 HCCL_E_NOT_SUPPORT 时打印错误日志(提示更新 HCOMM)并返回该错误码,否则继续执行 HcommFenceOnThread。
  • 数据搬运封装改用 Drain: 在 dpu_alg_data_trans_wrapper.cc 的 SendRecvWrite、SendWrite、RecvWrite 三个接口中,均以 HcommChannelDrainOnThread 取代原 HcommChannelFenceOnThread,并采用一致的 HCCL_E_NOT_SUPPORT 错误处理与日志输出。
  • NHR 批量传输去重通道 Drain: 在 DpuBatchTransfer 中,将发送通道与接收通道(samePeer 时仅一次的去重逻辑保留)的 Fence 调用替换为 Drain,注释同步由 "Fence" 更新为 "Drain"。
  • Host NIC 收发算子改用 Drain: InsTempRecvHostNicDpu::DPUKernelRun 与 InsTempSendHostNicDpu::DPUKernelRun 中,原先对 channels.at(rankIdx)[0] 的 HcommChannelFenceOnThread 均替换为 HcommChannelDrainOnThread,并增加 HCCL_E_NOT_SUPPORT 的错误日志与返回处理。
  • 补充测试桩实现: 在 hccl_stub.cc 中新增 HcommChannelDrainOnThread 桩函数,忽略入参并打印 "not support" 警告后返回 0,以支撑测试链路对 Drain 接口的调用。
likedislike
不准确?
atomgit-bot
atomgit-bot
8月26日 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
CANN-robotCANN-robot成员
8月26日 添加了label:cann-cla/no
CANN-robot
CANN-robot成员
8月26日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
src ✅ 李标智, 严正行 (2/2) ✅ 李标智 (1/1)
test/st/algorithm ✅ 吴昊堃, 严正行 (2/2) ✅ 吴昊堃 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

YantingLiu, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
此处折叠了203条消息 查看更多
严正行
严正行成员
9月4日 评论:

/lgtm

likedislike
bz_lee成员
9月4日 评论:

/approve

likedislike
whk_24
whk_24成员
9月4日 评论:

/approve

likedislike
CANN-robotCANN-robot成员
9月4日 添加了label:lgtmapproved
CANN-robotCANN-robot成员
9月4日 合入了pull request