| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
threshold_v2算子新增A5实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !4998 merge threshold_v2 into master threshold_v2算子新增A5实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> threshold_v2算子新增A5实现 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2728 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!4998 | 5 个月前 | |
fix: 加固 LambNextMV 与 MaxPoolExt2 输入契约、边界溢出与特殊值语义 Co-authored-by: wyy<2137553008@qq.com> # message auto-generated for no-merge-commit merge: !12850 merge master into master fix: 加固 LambNextMV 与 MaxPoolExt2 输入契约、边界溢出与特殊值语义 Created-by: wangyuyan_44 Commit-by: wyy Merged-by: cann-robot Description: ## 描述 本 PR 围绕 LambNextMV(lamb_next_m_v)与 MaxPoolExt2(max_pool_ext2)补齐输入契约校验、边界/溢出防护与特殊值语义,修复异常输入可能进入 kernel 导致越界读写、tiling 截断或精度不一致的问题,并补充 ascend350 平台配置与文档。 ### LambNextMV - 将公共广播规划 BuildLambBrcPlan 的边界校验收敛到 lamb_brc_tiling_plan.h:校验输出 rank ≤ LAMB_BRC_MAX_DIM、原始维度/折叠后维度在 uint32 表示域内、相邻轴折叠乘法 int64 不溢出、元素总数 uint64 不溢出;LambBrcCollapse 改为返回状态码,任一越界直接 GRAPH_FAILED。 - InferShape 新增 rank ≤ 8 校验;InferDataType 要求 13 个输入 dtype 一致且仅支持 DT_FLOAT/DT_FLOAT16,与 tiling 侧口径统一。 - kernel 在 tilingData.totalNum == 0 时直接返回,跳过 UB 缓冲铺设与 FillScalarSlots,修复空 Tensor 触发 VECTOR_CORE_EXCEPTION 的问题。 - tiling data 新增 innerChunk、innerChunkCnt 字段,并补充 tiling 注册容量与 POD 对齐说明。 - 更新 README,补充动态 shape/动态 rank、空 Tensor 与 GE 图模式样例构建说明。 ### MaxPoolExt2 - proto 移除 DT_DOUBLE、DT_QINT8,与 OpDef/kernel 实际支持面统一;InferDataType 增加 dtype 白名单校验。 - tiling 新增:输出 dtype 必须与输入一致;origin/storage format 必须为 FORMAT_ND;data_format 仅允许 NHWC/NCHW;ksize/strides 空间维必须 > 0 且 ≤ INT32_MAX;输入元素总数用 __int128 校验不超过 INT64_MAX。 - kernel 将浮点归约初值由 -FLT_MAX 改为 -inf 位模式,并去掉 isnan 分支,按“忽略 NaN、全 NaN 窗口输出 -inf”的语义取最大值,与 README/golden 对齐。 - 新增 ascend350 平台配置。 - 更新 README:明确 ND format 约束、ksize/strides 空间轴、输出 shape/dtype、NaN/-inf 特殊值语义、动态 shape 说明,并更新 docs/zh/op_list.md 的平台支持标记。 ### 配套调整 - MaxPoolExt2 golden 移除旧 third_party 实现,修正全 NaN/全 -inf 窗口,增加按用例名确定性的特殊值注入并改为 binary_equal 容差。 - 两个 GEIR 示例修复宿主缓冲泄漏与 Session/AddGraph 重载二义性。 - MaxPoolExt2 tiling UT 统一 origin/storage format 为 ND,并新增非法 format、元素总数溢出、ksize 越界等期望失败用例。 ## 关联的Issue - 关联 Issue #7579 ## 测试 - 编译:ops-nn 构建通过,CI 流水线通过(ci-pipeline-passed)。 - UT:LambNextMV、MaxPoolExt2 Host UT 全量执行通过;MaxPoolExt2 新增非法 format、元素总数溢出、ksize 越界等异常用例通过。 - GEIR:根据本地测试记录,test_geir_lamb_next_m_v、test_geir_max_pool_ext2 编译运行通过;MaxPoolExt2 更新 golden 后 L0 用例通过(含 NaN/-inf 注入)。其中,MaxPoolExt2 在隔离加载私装 custom 包的环境下,GEIR 51/51 通过。 - GEIR 环境条件:测试通过临时 OPP 目录避开共享 CANN 中同名内置算子的注册/推导逻辑,不修改共享 CANN。未隔离环境仍存在同名算子加载冲突,本次结果不代表该共存问题已解决。 - 边界验证:LambNextMV 的 rank > 8、uint32 越界、折叠/元素总数溢出、非法或不一致 dtype 输入被 Host 拒绝;合法空 Tensor 正常返回,kernel 跳过 UB 缓冲铺设与 FillScalarSlots。MaxPoolExt2 的非 ND、非法 dtype、ksize/strides 越界、元素总数溢出均被 Host 拒绝。 ## 文档更新 - 更新 optim/lamb_next_m_v/README.md、pooling/max_pool_ext2/README.md 及 docs/zh/op_list.md。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12850 | 4 天前 |