Closed
[Requirement|需求建议]: AngleV2算子新增ascend960dt平台适配 #4559
miaojingjingAdd on 5 days agoClosed at 4 days ago
5 days ago Added label: requirement
miaojingjing
5 days ago Comments:
5 days ago Comments:
/assign @miaojingjing


5 days ago Assign miaojingjing as responsible person
4 days ago Close issue
4 days ago changed custom state from 进行中 to 已完成
4 days ago Added label: resolved
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
一、背景信息 (必填)
AngleV2需要在现有平台支持基础上增加ascend960dt适配。当前 PR 前的代码尚未在 OpDef 中注册ascend960dt,缺少该平台对应的 binary 与 simplified key 配置;BF16 原生比较 kernel 分发仅覆盖__NPU_ARCH__ == 3510,op_kernel UT 编译列表也未包含 960DT。本需求通过补齐 Host 平台注册和 binary 配置、扩展 BF16 kernel 分发以及完善 BF16 UT 数据与 tiling 生成,为
AngleV2在 960DT 上的编译和验证提供对应实现。二、价值/作用 (必填)
AngleV2增加明确的ascend960dtOpDef 平台注册及 10 组 binary 映射配置。__NPU_ARCH__ == 9201)能够进入与 950(__NPU_ARCH__ == 3510)一致的 BF16AngleV2<bfloat16_t>分发路径,同时保持 2201 的既有 BF16 实现不变。ascend960dt纳入 op_kernel UT 编译范围,并补齐 BF16 输入、golden 和 tiling 数据生成逻辑,为后续平台验证提供测试基础。三、设计方案 (必填)
3.1 使能方式(涉及哪些框架:如Aclnn直调、Pytorch训练等)
本需求不涉及 aclnn、PyTorch 或其他框架接入代码变更。改动范围为
AngleV2的 OpDef 平台注册、op_host binary/simplified key 配置、Ascend C kernel 分发,以及 op_kernel UT 编译和测试数据生成。3.2 总体设计
3.2.1 算子支持的数据类型
960DT 复用 A5 OpDef 配置,输入
x支持 BF16、FP16、FP32、COMPLEX64、BOOL、UINT8、INT8、INT16、INT32、INT64;输出y对 BF16/FP16 分别保持 BF16/FP16,其余上述输入类型输出 FP32。输入与输出均为required、ND并启用AutoContiguous。新增的 960DT binary 配置具体包含以下映射;所有条目均为
shape: [-2]和format_match_mode: FormatAgnostic:3.2.2 host侧设计
angle_v2_def.cpp中通过AddConfig("ascend960dt", aicore_a5_config)复用ascend950的 A5 配置,保留动态编译静态、动态格式、动态 rank 和动态 shape 支持标志。op_host/config/ascend960dt/angle_v2_binary.json,包含以下 10 个 binary 条目:AngleV2_5cfa8f3b14716c3317bcd193933a3613AngleV2_1946086cc5d1bc19a4d66b5bd48e62cdAngleV2_bf16AngleV2_a8c107f79de7b47ce419f0ec015539f7AngleV2_boolAngleV2_uint8AngleV2_int8AngleV2_int16AngleV2_int32AngleV2_int64angle_v2_simplified_key.ini,配置[AngleV2] default=0。3.2.3 kernel侧设计
__NPU_ARCH__ == 3510扩展为(__NPU_ARCH__ == 3510) || (__NPU_ARCH__ == 9201)。KEY_DTYPE_BF16(tiling key10)调用AngleV2N::AngleV2<bfloat16_t>;2201 仍调用AngleV2N::AngleV2Bf16<bfloat16_t, bfloat16_t>,其他 dtype 分发不变。AddOpTestCase的 SoC 列表扩展为ascend910b;ascend950;ascend960dt。torch.angle(inputX.float()).to(torch.bfloat16),输入和 golden 以 int16 视图写文件。bytesPerData = 15,与 FP16 共用ALIGN_NUM = 16和dataPerRepeat = 128的计算路径。test_case_bf16:单 block、tiling key10,设置totalLength=16、formerNum=1、tailNum=47、formerLength=16、tailLength=0、alignNum=16、totalLengthAligned=16、tileLength=12160、dataPerRepeat=128。3.3 支持硬件
ascend960dt,kernel 侧对应__NPU_ARCH__ == 9201。ascend950的 A5 OpDef 配置及__NPU_ARCH__ == 3510的 BF16 分发路径。ascend910b、ascend950、ascend960dt。__NPU_ARCH__ == 2201BF16 路径及其他平台的 OpDef 注册不因本需求改变。3.4 算子约束限制
AngleV2,不扩展其他算子。required、ND、AutoContiguous约束;960DT binary 条目使用动态 shape[-2]和FormatAgnostic,未新增其他数据格式。AngleV2Bf16实现。💡 备注(选填)
git diff --check通过。关联 PR:https://gitcode.com/cann/ops-math/pull/7018