已关闭
[Requirement|需求建议]: aclgraph UB 扩流适配 #600
zhut66创建于  6月8日关闭于  6月10日
zhut66成员
6月8日 创建

Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.

Backgroud(背景信息)

aclgraph UB 扩流适配
支持aclgraph中 stream 数量扩展到64k, task数量扩展到32k, 针对ubdma 任务进行适配
核心目标:为 aclgraph 场景实现 Jetty(异步 DMA 队列)的预申请、池化管理和复用机制,提升图重复执行性能。
关键组件:
JettyPool:底层资源池,管理 H2D/D2D 两类 jetty,上限 2k 个
JettyManager:流级别管理器,维护 stream→jetty 映射和 Capture 上下文
StreamCaptureJettyContext:管理 host WQE buffer 和 SQE 位置记录
StreamCaptureJettyHandler:处理 WQE 生成、jetty 绑定、SQE 刷新

Origin(信息来源)

aclgraph UBDMA 需求,来自 SE 确认的 UB 互连场景下异步拷贝方案评审结论。

Benefit / Necessity (价值/作用)

支持aclgraph中 stream 数量扩展到64k, task数量扩展到32k

Design(设计方案)

三阶段流程

  • Capture Begin:stream 首次收到异步拷贝任务时,GetOrCreateStreamJettyContext 创建 context 并通过 ReserveJetty 预申请标准 jetty(FREE 状态入池)。Pool 满时直接返回成功,不触发回收。每次 WQE 下发通过 CreateAndAppendWqe 生成并追加到 buffer,超出 capacity 时触发 GrowBuffer 扩容。
  • Capture End:FillNopWqeOnCaptureEnd 对未填满的 buffer 填充 NOP WQE(NOP_count = capacity - filledWqeCount),RoundUpCapacity 将 capacity 对齐到 2 的幂次并为额外 buffer 填充 NOP。
  • Graph Reply:BindJettyForUbdma 遍历所有 stream,对每个 stream 的 H2D/D2D 类型分别调用 BindJetty。标准 jetty 通过 AcquireJettyWithRetry(FREE→BOUND),大深度 jetty 通过 CreateLargeDepthJetty。绑定后 SyncWqeBufferToDevice 同步 WQE 到设备 JFS,UpdateUbdmaSqeWithJettyInfo 刷新 SQE 中的 dieId/funcId/jettyId/pi。

四层职责分离:

  1. JettyPool(jetty_pool.h/cc):底层资源管理,维护 h2dJettyPool_/d2dJettyPool_/largeJettyPool_ 三个 vector,直接调用驱动 API(AsyncDmaJettyCreate/Destroy/Query)。std::mutex poolLock_ 保护内部 vector 操作。
  2. JettyManager(jetty_manager.h/cc):流级别管理层,以 (streamId, JettyType) 为 key 管理 StreamJettyContext 映射。std::recursive_mutex managerLock_ 保护 map 操作。包含 AcquireJettyWithRetry 回收重试逻辑。
  3. StreamJettyHandler(stream_jetty_handler.h/cc):静态方法层,负责 Capture 阶段 WQE 生成(HandleUbDmaTask/CreateAndAppendWqe)、Capture End NOP 填充(FillNopWqeOnCaptureEnd)、Graph Reply WQE 同步(SyncWqeBufferToDevice)和 SQE 刷新(UpdateUbdmaSqeWithJettyInfo)。
  4. StreamJettyContext(stream_jetty_context.h/cc):数据层,管理 Host WQE buffer(每个 chunk 2048×64 字节)、filledWqeCount、capacity、taskWqeCounts。
likedislike
Zzhut66成员
6月8日 添加了label:requirement
Zzhut66成员
6月8日 将 zhut66 设为负责人
Zzhut66成员
6月8日 关联了pull request:【PR】: aclgraph software sq for ub
Zzhut66成员
6月8日 修改标题为 “[Requirement|需求建议]: aclgraph UB 扩流适配”,原标题为“[Requirement|需求建议]: ”
ykl999
ykl999成员
6月9日 评论:

请在代码上库后关闭对应issue

likedislike
CANN-robotCANN-robot成员
6月10日 关闭了 issue
CANN-robotCANN-robot成员
6月10日 添加了label:resolved
ykl999ykl999成员
6月20日 删除了关联的pull request:【PR】: aclgraph software sq for ub