Merged
【社区任务】 Equal 算子 A2/A3 实现 #5425
zed123214Add on Sep 8
【社区任务】 Equal 算子 A2/A3 实现 #5425
Merged
Pull Request has been successfully merged by CANN-robot.
(Thank you for zed123214's contribution.)Sep 8 Associated issue: [Requirement|需求建议]: 【社区任务】Equal算子Ascend C A2/A3实现
atomgit-bot
Sep 8 Comments:
Sep 8 Comments:
变更摘要
本 PR 为 Equal 算子新增面向 Ascend A2/A3 的直接 Ascend C 实现(对应 equal_def.cpp 中 AICore 配置由仅 ascend910b 扩展为同时注册 ascend910_93)。核心改动是将原基于 big/small core 拆分、经减法/取绝对值等近似判等的 kernel 重写为按调度模式与广播模式分发的 KernelEqual<T, SCHEDULE_MODE>,并配套重写 host 端 Tiling 与 EqualTilingData 结构,以覆盖同形、标量及通用广播路径;op_api 层相应收敛为直接经 l0op::Equal 调用自研 AICore kernel,不再通过 NotEqual/LogicalNot 组合实现。PR 同时更新 README、A2/A3 产品支持说明及 aclnn Equal 文档(依据 PR 描述)。
主要改动
- 内核重写为广播感知的模板实现(
op_kernel/equal.h、op_kernel/equal.cpp):KernelEqual<T, SCHEDULE_MODE>的Init改为直接接收EqualTilingData,依据op_kernel/equal_tiling_data.h新增的EqualBroadcastMode枚举(EQUAL_BROADCAST_CONTIGUOUS、X1_SCALAR、X2_SCALAR、GENERAL、SANDWICH、TAIL_REUSE)选择计算路径;Process按ELEMENTWISE_TPL_SCH_MODE_0/1分别走连续/广播流程,int64_t通过GatherMask拆分高低 32 位字分别比较再相乘合并,各类 dtype 改用Compare/Select直接判等。 - Host 端 Tiling 全面重写(
op_host/equal_tiling.cpp):新增BroadcastInfo结构,实现广播 shape 压缩(相邻同状态维合并)、stride 计算与模式判定,按 dtype/模式计算totalLength、blockLength、tailBlockLength、tileLength、blockNum并填充新的EqualTilingData字段,同时新增TrySetSandwichMode、TrySetTailReuseMode等针对通用广播的优化路径,最终通过context->SetTilingKey(GET_TPL_TILING_KEY(scheduleMode))向 kernel 下发调度模式。 - 算子定义与 shape 推导改为广播语义(
op_host/equal_def.cpp、op_host/equal_infershape.cpp):输入x1/x2/输出y的支持 dtype 统一重构为 10 类列表(新增DT_INT16、DT_INT64、DT_BOOL等);InferShapeEqual由「将输出 shape 置为 x1 shape」改为调用Ops::Base::InferShape4Broadcast完成广播推形。 - op_api 层收敛到
l0op::Equal直算路径(op_api/aclnn_eq_scalar.cpp、op_api/aclnn_eq_tensor.cpp、op_api/equal.cpp):删除 scalar 侧GetCastedDouble、IsDoubleEqual等组合比较辅助函数,删除描述Contiguous→Cast→Equal→Cast→ViewCopy多段组合流程的注释并注明连续与广播输入均由自研 AICore kernel 统一处理;Equal的 AICore 支持 dtype 列表扩展(新增DT_INT64、DT_INT16、DT_BOOL等)并补充输出张量分配失败检查,inplace 入口新增selfRef/other空态一致性校验;equal.h的 include guard 与头文件引用同步收敛到experimental/math/equal目录。


Incorrect?
atomgit-bot
Sep 8 Comments:
Sep 8 Comments:
Sep 8 Added label: cann-cla/yes
75 messages are collapsed here。 See more
Sep 14 Added label: ci-pipeline-passed
Sep 14 Merged pull request
Sep 15 Modify description of pull request
Sep 15 Modify description of pull request
Sep 15 Modify description of pull request
描述
新增 Equal 算子面向 Ascend A2/A3 的直接 Ascend C 实现,完善广播推形与 Tiling,覆盖同形、标量及通用广播路径;补充 A2/A3 支持说明和 aclnn 示例。
关联的Issue
Closes #3032
测试
文档更新
更新 README、A2/A3 产品支持说明及 aclnn Equal 文档。
类型标签