图模式下算子输出 dtype 由 InferDataType 推导函数在构图/编译期确定,是 graph_develop_guide.md 要求的图模式交付件。ops-math 仓库中本批 26 个算子此前仅有 InferShape 交付件,缺少 InferDataType 交付件(op_graph/<op>_graph_infer.cpp);其 dtype 推导语义在 canndev v1.0 旧式 IMPLEMT_COMMON_INFERFUNC 实现中已存在,需以 v2.0 仓 IMPL_OP(Op).InferDataType(f) 交付件形态补齐。
graph_develop_guide.md
op_graph/<op>_graph_infer.cpp
IMPLEMT_COMMON_INFERFUNC
IMPL_OP(Op).InferDataType(f)
补齐后 26 个算子在图模式(GE 构图 / ATC 离线编译)下可在编译期正确推导输出 dtype,满足图模式交付件完整性要求,与仓内 add、truncate_mod、logical_or 等已具备 InferDataType 能力的算子对齐。
图模式(GE 构图 / ATC 离线编译);不改变 aclnn 直调路径行为。
沿用各算子现有支持的数据类型;推导规则迁移自 canndev v1.0 IMPLEMT_COMMON_INFERFUNC 的类型推导语义,按输出 dtype 推导规则分四类:
ops::InferDataTypeOutputSameAsInput
新增 op_graph/<op>_graph_infer.cpp 共 26 个文件,经 IMPL_OP(Op).InferDataType(f) 注册;CMake 无需改动(构建宏 GLOB_RECURSE op_graph/*.cpp 自动收编)。
GLOB_RECURSE op_graph/*.cpp
无 kernel 代码改动。
InferDataType 为 host 侧纯推导逻辑,不新增硬件限制,沿用各算子现有平台支持范围。
InferDataType 仅做纯推导,不增加输入 dtype 一致性校验:混合 dtype 组合沿用既有防线,由 tiling 侧 dtype 组合查表在编译期拦截;非法组合(Promote 提升结果 DT_UNDEFINED)不做后置校验,均与仓内 add/axpy/sub 等存量算子行为一致。
关联 PR:https://gitcode.com/cann/ops-math/pull/5904
/assign @hahaha22
一、背景信息 (必填)
图模式下算子输出 dtype 由 InferDataType 推导函数在构图/编译期确定,是
graph_develop_guide.md要求的图模式交付件。ops-math 仓库中本批 26 个算子此前仅有 InferShape 交付件,缺少 InferDataType 交付件(op_graph/<op>_graph_infer.cpp);其 dtype 推导语义在 canndev v1.0 旧式IMPLEMT_COMMON_INFERFUNC实现中已存在,需以 v2.0 仓IMPL_OP(Op).InferDataType(f)交付件形态补齐。二、价值/作用 (必填)
补齐后 26 个算子在图模式(GE 构图 / ATC 离线编译)下可在编译期正确推导输出 dtype,满足图模式交付件完整性要求,与仓内 add、truncate_mod、logical_or 等已具备 InferDataType 能力的算子对齐。
三、设计方案 (必填)
3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
图模式(GE 构图 / ATC 离线编译);不改变 aclnn 直调路径行为。
3.2 总体设计
3.2.1 算子支持的数据类型
沿用各算子现有支持的数据类型;推导规则迁移自 canndev v1.0
IMPLEMT_COMMON_INFERFUNC的类型推导语义,按输出 dtype 推导规则分四类:ops::InferDataTypeOutputSameAsInput(truncate_mod/invert 同款);3.2.2 host侧设计
新增
op_graph/<op>_graph_infer.cpp共 26 个文件,经IMPL_OP(Op).InferDataType(f)注册;CMake 无需改动(构建宏GLOB_RECURSE op_graph/*.cpp自动收编)。3.2.3 kernel侧设计
无 kernel 代码改动。
3.3 支持硬件
InferDataType 为 host 侧纯推导逻辑,不新增硬件限制,沿用各算子现有平台支持范围。
3.4 算子约束限制
InferDataType 仅做纯推导,不增加输入 dtype 一致性校验:混合 dtype 组合沿用既有防线,由 tiling 侧 dtype 组合查表在编译期拦截;非法组合(Promote 提升结果 DT_UNDEFINED)不做后置校验,均与仓内 add/axpy/sub 等存量算子行为一致。
四、算子清单(共 26 个)
关联 PR:https://gitcode.com/cann/ops-math/pull/5904