已关闭
[Requirement|需求建议]: 【社区任务】BiasAdd 算子(Ascend 910B AscendC 实现) #2021
GodOnlyKn0w创建于 6月22日关闭于 7月8日
GodOnlyKn0w
6月22日 评论:
6月22日 评论:
/assign @gcw_5x5Ew5Ms


6月22日 将 gcw_5x5Ew5Ms 设为负责人
GGodOnlyKn0w
6月22日 关联了pull request:feat(experimental/math): add BiasAdd (Ascend 910B AscendC BiasAdd)
6月22日 关联了pull request:feat(experimental/math): add BiasAdd (Ascend 910B AscendC BiasAdd)
7月8日 关闭了 issue
7月8日 添加了label:resolved
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
一、背景信息(必填)
BiasAdd 为逐元素广播加算子(y = x + bias,bias 沿 C 维广播)。本需求贡献其面向 Atlas A2(Ascend 910B)的 AscendC(C++)实现,放置于 experimental/math。
二、价值/作用(必填)
面向 910B 的结构化调度:按 shape 结构属性(total、C 是否 32B 对齐、innerSize、cBlocks)在 host 侧运行时分派多路 kernel(tiny/segment/aligned/unaligned),兼顾性能与泛化。
关键优化:大 C 非对齐(NHWC innerSize=1、通道非 32B 对齐)场景,逐元素标量广播改为向量 Copy+GatherMask UB 广播,消除标量串行化、使 MTE 带宽饱和。
验证:代表性 shape 数值/性能验证,并经 aclnnBiasAdd 在 910B 设备 functional 通过。
三、设计方案(必填)
3.1 使能:aclnnBiasAdd 单算子直调;图模式经 op_graph 接入。
3.2 总体:数据类型 FLOAT/FLOAT16/BFLOAT16/INT32;host 三层调度(family→second-order→backend)写入 TilingData;kernel 按 schMode 多路分派。
3.3 硬件:Atlas A2 训练/推理系列(Ascend 910B)。
3.4 约束:bias 长度 = x 在 data_format 指定 C 维大小;data_format ∈ {NCHW,NHWC,NDHWC,NCDHW}。
③ 新建 PR:https://gitcode.com/gcw_5x5Ew5Ms/ops-math/merge_requests/new?source_branch=feat-experimental-bias-add → 目标 CANN/ops-math : master → 标题 [experimental/math] add BiasAdd (Ascend 910B AscendC BiasAdd) → 正文:
描述
新增 experimental/math/bias_add —— Atlas A2(910B)AscendC BiasAdd。y = x + bias(沿 C 维广播)。dtype: float/float16/bfloat16/int32;data_format: NCHW/NHWC/NDHWC/NCDHW。host 侧按 shape 结构多路分派;大 C 非对齐用向量 Copy+GatherMask UB 广播替代标量。
关联的Issue
cann/ops-math#<新Issue号>
测试
本地编译通过;装 custom opp,经 aclnnBiasAdd 在 910B 设备 functional 验证数值正确;代表性 shape 性能验证。
文档更新
新增算子 README.md。
类型标签
done
新特性