已关闭
[Requirement|需求建议]: A5 UB 单算子场景支持2D和Batch异步拷贝 #372
czways创建于  4月16日关闭于  5月22日
czways
czways成员
4月16日 创建

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

Backgroud(背景信息)

  1. 针对该需求的是要要采用 UB Doorbell模式 对应的SQE_TYPE是RT_DAVID_SQE_TYPE_UBDMA
  2. 在进行异步拷贝task初始化时,需要通过调用驱动接口CreateAsyncDmaWqe2D/CreateAsyncDmaWqeBatch下发wqe, 驱动会返回本次处理了多少内存拷贝
  3. 由于一次2D拷贝需要的WQE可能超过jetty的剩余可用深度,因此调用驱动CreateAsyncDmaWqe2D/CreateAsyncDmaWqeBatch接口返回的fixedSize代表本次2D/Batch拷贝累计已下发了多少size数据量对应的wqe
  4. 我们这个需求在实现时需要根据fixedSize,判断本次2D异步拷贝对应的wqe是否全部下发到JFS队列,判断方法为width*height是否大于fixedSize, 对于Batch异步场景, 数组元素size是否大于拷贝的数组元素个数,如果大于,代表还有剩余数据没有组装wqe,
  5. 我们根据调用驱动CreateAsyncDmaWqe2D/CreateAsyncDmaWqeBatch接口返回的jettyId,functionId,Pi等字段构造 UB Doorbell对应的SQE_TYPE是RT_DAVID_SQE_TYPE_UBDMA的sqe下发到RTSQ
  6. 如果基于步骤4的判断还有剩余的数据没有组装wqe,我们需要在本次的2D异步拷贝过程中进行一次流同步,等待前面的任务完成,这样在任务资源回收流程中调用DestroyAsyncDmaWqe2D/DestroyAsyncDmaWqeBatch,
    传入之前调用驱动CreateAsyncDmaWqe2D/CreateAsyncDmaWqeBatch返回的pi值,回收已经下发并且已经执行完的WQE, 然后再次调用DestroyAsyncDmaWqe2D/DestroyAsyncDmaWqeBatch,传入之前返回的fixedSize,让驱动为剩余数据组装wqe, 然后我们再下发UBDMA SQE,如此循环处理,直到用户传入的2D拷贝数据都下发完WQE为止,所以这里需要循环操作

Origin(信息来源)

NA

Benefit / Necessity (价值/作用)

Design(设计方案)

likedislike
czwaysczways成员
4月16日 issue类型由 任务 改变为 需求
czways
czways成员
4月16日 评论:

/assign

likedislike
CANN-robotCANN-robot成员
4月16日 将 czways 设为负责人
czwaysczways成员
4月16日 关联了pull request:2d batch async cpy adpater in ub eager mode
czwaysczways成员
4月29日 修改了issue 的描述
wangtao成员
5月22日 评论:

@czways
请刷新需求进展,如果已完成,请关闭issue

likedislike
czwaysczways成员
5月22日 issue状态由 待办的 改变为 已完成
czwaysczways成员
5月22日 关闭了 issue
CANN-robotCANN-robot成员
5月22日 添加了label:resolved