| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(median): add Median/NanMedian and align NaN/signed-zero ordering Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !5104 merge median into master feat(median): add Median/NanMedian and align NaN/signed-zero ordering Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增 Ascend 950 Median/NanMedian 算子,并复用 KthValue 的多调度选择框架,避免为中位数复制完整排序实现。 主要改动: - 新增 Median/NanMedian 的 OpDef、L0 API、InferShape、arch35 Tiling、AICore kernel、simplified key、golden、UT 和 TTK 用例。 - 支持 float16、float32、bfloat16、int8/16/32/64、uint8/16/32/64;values 保持输入 dtype,indices 为 int64,约简维保留为 1。 - 在 KthValue tiling data 中增加 STATIC、PROPAGATE_NAN、IGNORE_NAN 三种模式: - Median 对浮点 NaN 采用传播语义; - NanMedian 按非 NaN 数量动态计算 lower-median rank; - 整数输入沿用静态 k 快路径,不增加 NaN 扫描。 - 抽取统一 KthValue kernel dispatch,使 insertion、two-stage、merge、radix-select 和非末轴 small-axis 等 schedule 可由三个算子共享。 - 为多核动态 rank 路径补充对齐的 per-core count workspace,并保持原算法 workspace 布局。 - 完善 Sort/KthValue 公共逻辑中的 canonical NaN key、重复值与 signed-zero 稳定源顺序;同步补充 Sort、KthValue、TopKV2 golden 和回归用例。 详细设计、语义和约束见关联 Issue。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/2968 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - Median/NanMedian/KthValue/Sort 累计677个ST用例通过 - 二级冒烟通过 - aclnnMedianDim,aclnnNanMedianDim 的门槛用例均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5104 | 8 天前 | |
fix(build): 跳过仅有信息库无 op_kernel 的算子的 kernel 编译 Co-authored-by: xutianze<xutianze2@huawei.com> # message auto-generated for no-merge-commit merge: !4900 merge fix-skip-kernel-for-defonly-op into master fix(build): 跳过仅有信息库无 op_kernel 的算子的 kernel 编译 Created-by: songkai111 Commit-by: xutianze Merged-by: cann-robot Description: ## 描述 --pkg 出包模式下编译仅定义算子信息库、没有 kernel 实现的算子(如 bitcast)时,kernel 编译链路会报错。本次修改在 kernel 二进制编译阶段跳过这类算子,并补充缺失的算子信息格式支持: ### 改动原因 - cmake/gen_ops_info.cmake 按 SoC 编译算子的循环中,对不存在 op_kernel 目录的算子执行 find ${OP_DIR}/op_kernel 会报"目录不存在"。 - scripts/util/parse_ini_to_json.py 的 FORMAT_LIST 缺少 FRACTAL_NZ_C0_8(CANN 原生支持的 ACL_FORMAT_FRACTAL_NZ_C0_8),使用该格式的算子 ops-info 校验不通过。 - scripts/kernel/binary_script/gen_opcinfo_from_opinfo.py 对 opFile.value=Null(仅有信息库、无 kernel 实现)的算子会残留 dynamic/Null.py 条目导致编译失败。 ### 改动方法 1. **cmake/gen_ops_info.cmake**:按 SoC 编译算子的循环中,对不存在 op_kernel 目录的算子直接 continue 跳过 kernel 二进制编译,与 get_op_type_and_validate 中已有的 op_kernel 目录判断保持一致,避免 find ${OP_DIR}/op_kernel 报目录不存在,并与 cann/ops-nn 仓的既有行为对齐。 2. **scripts/util/parse_ini_to_json.py**:FORMAT_LIST 补充 FRACTAL_NZ_C0_8;同时按 ruff 格式重排文件(修复 pre-commit trailing-whitespace/ruff)。 3. **scripts/kernel/binary_script/gen_opcinfo_from_opinfo.py**:opFile.value=Null/None 表示算子无 kernel 实现,不再写入 kernel 编译 csv,避免残留 dynamic/Null.py 条目;同时按 ruff 格式重排(修复 pre-commit ruff)。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/2785 ## 测试 本机 CANN 9.1.0 验证: text # 仅 bitcast(无 op_kernel)→ 构建成功,包内 ops-info 正常注册 Bitcast,无 kernel 二进制 $ bash build.sh --pkg --ops=bitcast --soc=ascend950 -j16 构建成功 # bitcast + abs 混合 → 构建成功,abs kernel 二进制正常生成,混合编译不受影响 $ bash build.sh --pkg --ops=bitcast,abs --soc=ascend950 -j16 构建成功 # pre-commit 全量 hook 通过 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4900 | 16 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 天前 | ||
| 16 天前 |