| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
fix(topk): A2/A3 rank-0输入增加L0防御校验(#3968) Co-authored-by: doufloat<baijinxiang@huawei.com> # message auto-generated for no-merge-commit merge: !6808 merge fix/topk-rank0-guard into master fix(topk): A2/A3 rank-0输入增加L0防御校验(#3968) Created-by: doufloat Commit-by: doufloat Merged-by: cann-robot Description: ## 描述 **问题** TopkCommon 在构造输出形状和访问最后轴之前没有 rank-0 防御。A2/A3 使用相同的 DAV_2201 非 RegBase 路径,self 为 rank-0 时 GetDim(dimNum - 1) 会形成无效的最后轴访问,后续可能触发设备侧异常。 **兼容性取舍** - A2/A3:同属 DAV_2201 路径,实测 rank-0、k=1 无法正常完成,增加前置防御。 - A5:RegBase/DAV_3510 路径与 A2/A3 不同,实测 rank-0、k=0/1 可正常返回;为保持 A5 现有兼容行为,本 PR 不拦截 A5。 - 本修改限定在 TopkCommon 的 L0 防御,只对 NpuArch::DAV_2201 生效,rank>=1 路径不变。 **边界说明** aclnnTopkV2GetWorkspaceSize 的公共 ACLNN wrapper 不在本仓;第一段统一返回 161002 的检查需要在对应 ACLNN 代码中完成。本 PR 只负责阻止 A2/A3 的 L0 负索引访问,不能替代 wrapper 的第一段校验。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3968 ## 测试 - A2:fp32/fp16/bf16 rank-0 k=1 实测失败;int32 rank-0 k=1 也失败,错误表现不同。 - A5:Ascend950PR 上 fp32/fp16/bf16/int32 rank-0 k=0/1 实测均为 gws=0, exec=0, sync=0;k=1 回读 value=1/index=0,k=2 返回 161002。 - 兼容性:A5 不满足 DAV_2201 条件,因此保持现有 rank-0 行为;合法 rank>=1 路径不改变。 See merge request: cann/ops-math!6808 | 5 天前 | |
TopkV2算子支持小k场景下的双调排序 Co-authored-by: caoyan_huawei<caoyan11@huawei.com> # message auto-generated for no-merge-commit merge: !4683 merge cy_br_gpu_index_814 into master TopkV2算子支持小k场景下的双调排序 Created-by: caoyan_huawei Commit-by: caoyan_huawei Merged-by: cann-robot Description: # 主要描述 TopKV2算子在小k情况下支持双调排序算法。本次修改引入了 sortPolicy(排序策略)字段,并新增 top_k_small_size_sort.h 实现 Bitonic Small TopK 路径,在sorted=true且小 k 值(2 ≤ k ≤ 32)场景下使用双调排序(Bitonic Sort)网络对 TopK 候选结果做最终结果输出。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2898 ## 测试 UT,ST,二级冒烟测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4683 | 2 个月前 |