已开启
支持采用HcommChannelDrain实现channel的阻塞完成功能调用 #2771
YantingLiu创建于 8 天前
支持采用HcommChannelDrain实现channel的阻塞完成功能调用 #2771
已开启
YantingLiu创建于 8 天前
YantingLiu
8 天前

描述

适配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
合并受阻
YYantingLiu
8 天前 创建了 pull request,commit 7421f531
atomgit-bot
atomgit-bot
8 天前 评论:

变更摘要

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

主要改动

  • BatchSendRecv FENCE 分支改用 Drain: 在 InsTempBatchSendRecvDpu::DPUKernelRunFENCE 分支中,将 HcommChannelFenceOnThread 替换为 HcommChannelDrainOnThread,当返回 HCCL_E_NOT_SUPPORT 时打印错误日志(提示更新 HCOMM)并返回该错误码,否则继续执行 HcommFenceOnThread
  • 数据搬运封装改用 Drain: 在 dpu_alg_data_trans_wrapper.ccSendRecvWriteSendWriteRecvWrite 三个接口中,均以 HcommChannelDrainOnThread 取代原 HcommChannelFenceOnThread,并采用一致的 HCCL_E_NOT_SUPPORT 错误处理与日志输出。
  • NHR 批量传输去重通道 Drain: 在 DpuBatchTransfer 中,将发送通道与接收通道(samePeer 时仅一次的去重逻辑保留)的 Fence 调用替换为 Drain,注释同步由 "Fence" 更新为 "Drain"。
  • Host NIC 收发算子改用 Drain: InsTempRecvHostNicDpu::DPUKernelRunInsTempSendHostNicDpu::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 天前 评论:

代码审查

✅ 未发现问题

likedislike
CANN-robotCANN-robot成员
8 天前 添加了label:cann-cla/no
CANN-robot
CANN-robot成员
8 天前 评论:

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

⚠️ This PR does not yet meet the following requirements:lgtm (requires ≥ 2 person(s) per module)、approve (requires ≥ 1 person(s) per module)

Module Approval Details

module lgtm status approve status
src ❌ (0/2)(You can also ask: 杨邵华, 欧阳茜, 文学敏, 颜业峰, 张兴平) ❌ (0/1)(You can also ask: 李标智, 颜业峰, 文学敏)
test/st/algorithm ❌ (0/2)(You can also ask: 陈轲, 施秉辰, 欧阳茜, 李琳, 程祥乐) ❌ (0/1)(You can also ask: 詹海峰, 崔正, 吴昊堃, 余浩)

💡 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
此处折叠了198条消息 查看更多
CANN-robotCANN-robot成员
10 小时前 删除了label:cann-cla/yes
CANN-robotCANN-robot成员
10 小时前 添加了label:cann-cla/yes
CANN-robotCANN-robot成员
10 小时前 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
10 小时前 添加了label:ci-pipeline-passed
Bbz_lee成员
8 小时前 解决了最后一个问题