| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: NormalizeBBox 算子 Ascend950 重实现 无aclnn Co-authored-by: raoliang_sac<raoliang4@huawei.com> # message auto-generated for no-merge-commit merge: !8130 merge feat/normalize_bbox_no_aclnn into master feat: NormalizeBBox 算子 Ascend950 重实现 无aclnn Created-by: raoliang_sac Commit-by: raoliang_sac Merged-by: cann-robot Description: ## 变更说明 NormalizeBBox 算子 Ascend950(arch35 RegBase)重实现,仅支持 GEIR 图模式通路,不提供 aclnn 接口。 ### 算子功能 将目标检测预选框的绝对像素坐标,按对应图像的高(height)与宽(width)逐 batch 归一化到 [0, 1] 区间。每个框由 4 个坐标构成,y 系坐标除以 height、x 系坐标除以 width。 计算公式: 对第 b 个 batch,令 h = shapeHw[b, 0]、w = shapeHw[b, 1](int32 转 float): y[b,i] = boxes[b,i] / [h, w, h, w] ### 实现内容 - **op_host**:算子原型定义(def)、InferShape/InferDataType、RegBase Tiling(多核切分 + UB 规划) - **op_kernel(arch35)**:Ascend950 RegBase 内核,支持 fp16/fp32/bf16 三种 dtype,normal/reversed 两种 layout - **op_graph**:GEIR proto 声明(含 DT_BF16,对齐 950 实现) - **golden**:tests/assets/golden.py(numpy 复刻 cast 链,随 PR 上库) - **UT**:infershape UT(9 case,含 -1/-2 动态 shape)+ tiling UT(41 case,含负向校验) - **GEIR 测试**:examples/arch35/test_geir_normalize_bbox.cpp(真机 RunGraph 验证) - **文档**:README.md + docs/zh/op_list.md 条目 ### 产品支持 | 产品 | 支持 | |------|------| | Ascend 950PR/Ascend 950DT | √ | | Atlas A3 训练/推理系列产品 | √(built-in TBE) | | Atlas A2 训练/推理系列产品 | √(built-in TBE) | | Atlas 200I/500 A2 推理产品 | √(built-in TBE) | | Atlas 推理系列产品 | √(built-in TBE) | | Atlas 训练系列产品 | √(built-in TBE) | 注:Ascend950 为本 PR 新实现的 RegBase 内核;A2/A3/推理/训练系列由 canndev built-in TBE 实现支持。 ### 验证结果 | 测试项 | 规模 | 结果 | |--------|------|------| | ophost UT | 50 case | 50/50 PASS | | kernel UT | - | PASS | | 单算子出包 | --pkg --soc=ascend950 | SUCCESS | | 冒烟测试 | run_example graph(NPU 真机) | PASS,精度正确 | | pre-commit | 格式/拼写/OAT | PASS | | 文档链接 | MD 链接有效性 | PASS | ### 关联 Issue #4347 See merge request: cann/ops-nn!8130 | 2 个月前 |