ops-math 仓库的 im2col、matrix_diag、roll、grouped_bias_add_grad、reduce_var、reduce_std_v2 六个算子此前已支持 ascend910b/ascend910_93/ascend310p/ascend950/ascend350 等平台,尚未支持 ascend960dt 平台。本需求为上述六个算子新增 ascend960dt 平台支持,使其可在 Ascend960DT 芯片上完成编译与调用。
补齐六个基础算子(2 个转换类 + 4 个数学类)在 ascend960dt 新平台上的覆盖。
aclnn 接口直调:通过 op_api 复用现有实现,使 aclnnIm2col / aclnnRoll / aclnnGroupedBiasAddGrad / aclnnVar(aclnnVarMean)/ aclnnStd 接口在 ascend960dt 平台可用。 其中 matrix_diag 无 aclnn API(仓内无 op_api 目录),仅提供 kernel / geir 通路。
aclnnIm2col
aclnnRoll
aclnnGroupedBiasAddGrad
aclnnVar
aclnnVarMean
aclnnStd
六个算子在 ascend960dt 上沿用各自既有的 dtype 支持列表(格式统一为 ND):
im2col_def.cpp
matrix_diag_def.cpp
roll_def.cpp
grouped_bias_add_grad_def.cpp
reduce_var_def.cpp
reduce_std_v2_def.cpp
this->AICore().AddConfig("ascend960dt", <config>);
config950
CMakeLists.txt
SUPPORT_COMPUTE_UNIT
"ascend960dt"
SUPPORT_TILING_DIR
"arch35"
op_host/config/ascend960dt/
*_binary.json
*_simplified_key.ini
[OpName]
default=0
simplified_key_mode=0
scripts/kernel/binary_config/
compute_units
ascend960dt
compile_options
["-mllvm -trunc-to-buildin-type-only", "-mllvm -cce-aicore-dcci-before-kernel-end=false"]
["-mllvm -cce-aicore-dcci-before-kernel-end=false"]
auto_sync=false
matrix_diag_tiling_arch35.cpp
TilingPrepare4MatrixDiag
isAscendC
Ops::Base::IsRegbaseSocVersion(context)
IsRegbaseSocVersion(context) || PlatformAscendC(platformInfo).GetCurNpuArch() == NpuArch::DAV_9201
grouped_bias_add_grad
tests/ut/op_host/arch35/test_grouped_bias_add_grad_tiling.cpp
67108865 → 134217729
33554433 → 67108865
603979777 → 1207959553
六个算子均沿用现有 arch35 kernel 实现,无 kernel 源码改动(本次提交未触及 op_kernel/)。ascend960dt 复用与 ascend950/ascend350 相同的 kernel 二进制编译产物生成路径,仅通过配置层新增平台支持。
Ascend960DT(SOC: Ascend960DT_968B7,NpuArch: DAV_9201。
💡 备注(选填)
一、背景信息 (必填)
ops-math 仓库的 im2col、matrix_diag、roll、grouped_bias_add_grad、reduce_var、reduce_std_v2 六个算子此前已支持 ascend910b/ascend910_93/ascend310p/ascend950/ascend350 等平台,尚未支持 ascend960dt 平台。本需求为上述六个算子新增 ascend960dt 平台支持,使其可在 Ascend960DT 芯片上完成编译与调用。
二、价值/作用 (必填)
补齐六个基础算子(2 个转换类 + 4 个数学类)在 ascend960dt 新平台上的覆盖。
三、设计方案 (必填)
3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
aclnn 接口直调:通过 op_api 复用现有实现,使
aclnnIm2col/aclnnRoll/aclnnGroupedBiasAddGrad/aclnnVar(aclnnVarMean)/aclnnStd接口在 ascend960dt 平台可用。其中 matrix_diag 无 aclnn API(仓内无 op_api 目录),仅提供 kernel / geir 通路。
3.2 总体设计
3.2.1 算子支持的数据类型
六个算子在 ascend960dt 上沿用各自既有的 dtype 支持列表(格式统一为 ND):
3.2.2 host侧设计
im2col_def.cpp、matrix_diag_def.cpp、roll_def.cpp、grouped_bias_add_grad_def.cpp、reduce_var_def.cpp、reduce_std_v2_def.cpp)新增一行this->AICore().AddConfig("ascend960dt", <config>);,复用与 ascend950/ascend350 相同的 aicore config(grouped_bias_add_grad 复用config950)。CMakeLists.txt的SUPPORT_COMPUTE_UNIT增加"ascend960dt",SUPPORT_TILING_DIR对应增加"arch35"(tiling 目录沿用 arch35,无新增目录)。op_host/config/ascend960dt/目录:*_binary.json:六个算子各一份(im2col / matrix_diag / roll / grouped_bias_add_grad / reduce_std_v2 / reduce_var)。*_simplified_key.ini:五个(matrix_diag 无),内容为[OpName]+default=0(即simplified_key_mode=0)。scripts/kernel/binary_config/):六个算子的compute_units增加ascend960dt,并同步补充ascend960dt的compile_options:["-mllvm -trunc-to-buildin-type-only", "-mllvm -cce-aicore-dcci-before-kernel-end=false"]["-mllvm -cce-aicore-dcci-before-kernel-end=false"]auto_sync=false)matrix_diag_tiling_arch35.cpp的TilingPrepare4MatrixDiag中,isAscendC判定由Ops::Base::IsRegbaseSocVersion(context)扩展为IsRegbaseSocVersion(context) || PlatformAscendC(platformInfo).GetCurNpuArch() == NpuArch::DAV_9201,使 ascend960dt 走 AscendC tiling 分支。grouped_bias_add_grad的 tiling UT(tests/ut/op_host/arch35/test_grouped_bias_add_grad_tiling.cpp)同步更新预期 tilingKey(CUT_G_MODE67108865 → 134217729、CUT_H_MODE33554433 → 67108865;INT64 groupIdx603979777 → 1207959553),并做 clang-format 整改。3.2.3 kernel侧设计
六个算子均沿用现有 arch35 kernel 实现,无 kernel 源码改动(本次提交未触及 op_kernel/)。ascend960dt 复用与 ascend950/ascend350 相同的 kernel 二进制编译产物生成路径,仅通过配置层新增平台支持。
3.3 支持硬件
Ascend960DT(SOC: Ascend960DT_968B7,NpuArch: DAV_9201。
3.4 算子约束限制
💡 备注(选填)