| Files | Last commit | Last update |
|---|---|---|
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
修改产品名 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11348 merge master into master 修改产品名 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改产品名 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 仅涉及md文档更新,不涉及测试 ## 文档更新 修改所有md文件的产品名称 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11348 | 1 month ago | |
feat:算子适配ascend350 Co-authored-by: wuyan<wuyan23@huawei.com> # message auto-generated for no-merge-commit merge: !12101 merge master into master feat:算子适配ascend350 Created-by: rrely11 Commit-by: wuyan Merged-by: cann-robot Description: ## 描述 本 PR 为以下算子适配 ascend350 平台:在 host 侧 *_def.cpp 中新增 ascend350 的 AICore 配置(复用 ascend950 的 RegBase/AICore 配置),并为新增平台补充 binary 配置: - foreach_add_scalar_list - foreach_div_scalar - arg_max_grad - batch_norm3_d_grad - inplace_apply_centered_rms_prop 主要改动: 1. 各算子 op_host/*_def.cpp 增加 this->AICore().AddConfig("ascend350", ...); 2. 各算子 op_host/CMakeLists.txt 与 op_kernel/CMakeLists.txt 的 COMPUTE_UNIT / SUPPORT_COMPUTE_UNIT、SUPPORT_TILING_DIR 增加 ascend350 arch35; 3. 新增 op_host/config/ascend350/*_binary.json(foreach_add_scalar_list、foreach_div_scalar、arg_max_grad、batch_norm3_d_grad); 4. scripts/kernel/binary_config/ascendc_config.json 更新 ForeachAddScalarList 的 compute_units,增加 ascend350; 5. 清理部分文件的尾随空白并补全文件末尾换行。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12101 | 22 days ago | |
[Fix] BroadcastGradientArgs InferShape rank 校验放宽为 0D/1D 并修复 rank-0 未初始化读取 Co-authored-by: HelloWord-LuXin<luxin67@h-partners.com> # message auto-generated for no-merge-commit merge: !11756 merge fix-broadcast-gradient-rank-lte1 into master [Fix] BroadcastGradientArgs InferShape rank 校验放宽为 0D/1D 并修复 rank-0 未初始化读取 Created-by: HelloWord-LuXin Commit-by: HelloWord-LuXin Merged-by: cann-robot Description: ## 背景 上一笔合入(!9111,关联 issue #5073)为 BroadcastGradientArgs 的 InferShape 增加了输入 shape tensor 的 rank 校验,要求 x1/x2 必须为 1D,修复了 rank-2 输入静默返回成功的问题。但该约束对 rank-0(标量)输入同样拒绝,而 rank-0 输入在语义上可解释为"空 dim 列表"(对应标量参与广播的场景,如 BroadcastGradientArgs([], [1, 2])),且**不校验时的 rank-0 不是普通的逻辑错误,而是内存安全问题**,因此本 MR 将校验放宽为 0D/1D,并对 rank-0 路径做显式的、定义良好的处理。 ## 问题分析 ### 根因:gert::Shape::GetDim 对空 shape 不设防 gert::Shape::GetDim(idx) 仅在 idx >= kMaxDimNum 时返回 kInvalidDimValue,**不校验 idx < dim_num_**(见 CANN exe_graph/runtime/shape.h)。因此对 rank-0 的 shape 调用 GetDim(0) 读到的是 dims_[0] 的未初始化/残留值,属于未定义行为。 ### 实测验证(原始无校验代码 + ASAN) 用修复前的代码实测 rank-0 输入,得到三种结局: | 场景 | 实测结果 | 危害 | |---|---|---| | 内存恰好清零(如新建对象值初始化) | 返回 SUCCESS,输出"碰巧正确" | UB 被掩盖,纯靠内存运气 | | dims_[0] 残留脏数据 | 静默越界读相邻堆内存,仍返回 SUCCESS,结果碰巧"像对的" | 最危险:无任何报错 | | ASAN 填充堆(模拟真实脏内存) | x1_len 为巨值 → BroadcastGradientArgsTensorCheck 读野指针 → **SEGV 段错误** | 进程崩溃 | 崩溃栈:BroadcastGradientArgsTensorCheck (infershape.cpp:36) ← InferShape4BroadcastGradientArgsImpl (:104) ← InferShape4BroadcastGradientArgs (:156)。 ### 同款隐患存在于 InferShapeRange InferShapeRange4BroadcastGradientArgs 中 x1_range->GetMax()->GetDim(0) 对 rank-0 range 输入存在同样的未初始化读取,会将 outMax 污染为垃圾值(实测读到栈上残留地址值)。此问题为存量问题,本 MR 一并修复。 ## 变更内容 ### 1. op_host/broadcast_gradient_args_infershape.cpp **InferShape 入口:rank 校验放宽 + 结构化日志** cpp // 修改前 if (x1_shape->GetDimNum() != 1 || x2_shape->GetDimNum() != 1) { OP_LOGE(context->GetNodeName(), "x1 and x2 shape tensors must be 1D, got rank %zu and %zu", ...); return ge::GRAPH_FAILED; } // 修改后 if (x1_shape->GetDimNum() > 1 || x2_shape->GetDimNum() > 1) { std::string incorrectDims = std::to_string(x1_shape->GetDimNum()) + ", " + std::to_string(x2_shape->GetDimNum()); OP_LOGE_FOR_INVALID_SHAPEDIMS_WITH_REASON(context->GetNodeName(), "x1, x2", incorrectDims.c_str(), "x1 and x2 shape tensors must be 0D or 1D"); return ge::GRAPH_FAILED; } 错误日志改用社区标准的 OP_LOGE_FOR_INVALID_SHAPEDIMS_WITH_REASON(EZ0013)结构化宏(全仓 609 个文件在用,参考 conv_forward_infershape.cpp),统一句式并上报结构化错误信息。 **InferShape impl:rank-0 显式按长度 0 处理** cpp // 修改前 size_t x1_shape_len = x1_shape->GetDim(0); // rank-0 时读未初始化 dims_[0] // 修改后 size_t x1_shape_len = (x1_shape->GetDimNum() == 0U) ? 0U : static_cast<size_t>(x1_shape->GetDim(0)); **InferShapeRange:同款保护** cpp // 修改前 int64_t x1Max = x1_range->GetMax()->GetDim(0); // 修改后 int64_t x1Max = (x1_range->GetMax()->GetDimNum() == 0U) ? 0 : x1_range->GetMax()->GetDim(0); ### 2. tests/ut/op_host/test_broadcast_gradient_args_infershape.cpp 新增 2 个回归用例: - BroadcastGradientArgs_rank_zero_inputs:x1 标量 + x2={1,2} → 返回成功,y1=[2]、y2=[1](与 TF 语义一致:标量梯度需在全部轴上 reduce,x2 首轴为 1 需 reduce) - rt2_shaperange_test_rank_zero:在 rank-0 的 max range shape 上通过 SetDim(0, 999) 注入残留脏 dim,模拟真实运行时缓冲区脏内存。修复前 outMax 被未初始化值污染,修复后正确取 x2 的 5 ## 范围与兼容性 - 仅修改 InferShape / InferShapeRange(同一文件);tiling(broadcast_gradient_args_tiling_arch35.cpp)与 aclnn(aclnn_broadcast_gradient_args.cpp)仍保持 1D 限制,rank-0 输入无法通过 tiling 到达 kernel,端到端行为安全 - 合法 1D 输入的输出 shape/dtype 推导逐位不变(UT 验证);rank-2 输入仍被拦截,仅错误日志句式变化 - 不改变接口与 ABI ## 测试结果 bash build.sh -u --ophost -f <filelist> -j16(本地,cann-9.0.0-beta.2): - nn_op_host_ut 全部 **23/23 通过**(含 2 个新增 rank-0 用例、既有 rank-1/rank-2 用例及 tiling 全部用例) - 开启 ASCEND_SLOG_PRINT_TO_STDOUT=1 实测拦截日志,输出为标准 EZ0013 句式,信息完整且 dims 顺序与 x1/x2 对应: Parameters x1, x2 of BroadcastGradientArgs have incorrect shape dims 2, 1. Reason: x1 and x2 shape tensors must be 0D or 1D. - 负向验证 1:临时移除 InferShapeRange 保护 → rt2_shaperange_test_rank_zero 确定性失败(outMax 读到栈上垃圾值),证明用例有效 - 负向验证 2:用修复前代码 + ASAN 构建 → 普通 rank-0 用例即触发 SEGV(BroadcastGradientArgsTensorCheck 越界读),复现问题分析中的崩溃路径 ## 关联 Issue - https://gitcode.com/cann/ops-nn/issues/5073 (上一笔 rank 校验修复) See merge request: cann/ops-nn!11756 | 27 days ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
feat(scatter/scatter_nd/segment_sum/bucketize_v2): 新增 ascend960支持 Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !11416 merge 960dt into master feat(scatter/scatter_nd/segment_sum/bucketize_v2): 新增 ascend960支持 Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 为 Scatter/ScatterNd/SegmentSum/BucketizeV2 新增 Ascend960DT(A6/arch92,NpuArch DAV_9201)平台支持,950/350/mc62 行为不变。 - **Scatter**:各 SoC 共用单一内核入口,A6 专属 DMA 分支经 #if __NPU_ARCH__ == 9201 编译期门禁生效(SIMD 偏移计算 + ScatterDataCopy 写回,tiling key 101/201); - **ScatterNd**:arch35/arch92 双入口经 op_kernel/CMakeLists.txt 按 SoC 映射(A5 走 arch35,A6 入口额外引入 arch92 DMA 模板,按 isScatterDataCopy 运行时分派 ScatterNdDma);TilingData 尾部追加 DMA 字段(既有字段偏移不变); - **SegmentSum/BucketizeV2**:注册 ascend960dt,复用 950 的 AICore 配置与 arch35 tiling,新增 960dt binary 配置; ## 关联的Issue 关联 Issue #6327 ## 测试 - 编译:960dt能够正常编译,950/350不受影响 - 测试:960dt各kernel功能正常 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11416 | 23 days ago | |
feat(unique): add Regbase values-only AI Core support Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !10993 merge feature_op_unique into master feat(unique): add Regbase values-only AI Core support Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为 aclnnUnique / aclnnUnique2 增加 Regbase values-only AI Core 路径,在单次 Kernel 调用中完成排序与去重,减少不必要的索引搬运和中间存储。 - 新增 arch35 Tiling、Kernel 和动态输出 shape 回传,接入 ACLNN 分流。 - 整理算子 L0、原型及 Ascend 950/350 构建注册;调整共享 radix 和 UniqueConsecutive 的大输入计算。 - 新增 ACLNN/Kernel 测试用例、golden 和 GEIR 示例。 新路径仅处理不返回 inverse/counts 且满足准入条件的调用,其余场景沿用既有路径;GE/ONNX 仍使用 AICPU。详细 Tiling 与 Kernel 设计见关联 Issue。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6187 ## 测试 - 二级冒烟通过 - UniqueWithCountsAndSorting 和 KthValue 各自 300+ kernel ST通过 - aclnnUnique aclnnUnique2 各自 170+ aclnn用例通过 - onnx geir 通路兼容性验证通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10993 | 1 month ago | |
feat: ThresholdV2 与 ConcatOffset 算子适配 ascend350/ascend960pr/ascend960dt Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !11280 merge f0928 into master feat: ThresholdV2 与 ConcatOffset 算子适配 ascend350/ascend960pr/ascend960dt Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 为 ThresholdV2(activation/threshold_v2)与 ConcatOffset(index/concat_offset)两个算子扩展芯片支持,新增适配 ascend350、ascend960pr、ascend960dt 产品型号。 **改动原因**:新芯片需要在算子定义、编译单元与 tiling 配置中显式声明支持,否则算子不会为这些芯片生成 kernel 及二进制配置。 **改动方法**: - activation/threshold_v2 - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 新增 ascend350、ascend960pr、ascend960dt,SUPPORT_TILING_DIR 统一映射到 arch35。 - op_host/threshold_v2_def.cpp:为 ascend350、ascend960pr、ascend960dt 注册 AICore().AddConfig。 - op_kernel/CMakeLists.txt:COMPUTE_UNITS 补充 ascend350 ascend960pr ascend960dt。 - 新增 op_host/config/{ascend350,ascend960pr,ascend960dt}/threshold_v2_binary.json(沿用 arch35/ascend950 tiling 配置)。 - index/concat_offset - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 新增 ascend960pr、ascend960dt(ascend350 原已支持),SUPPORT_TILING_DIR 同步补齐为 4 个 arch35。 - op_host/concat_offset_def.cpp:为 ascend960pr、ascend960dt 注册 AICore().AddConfig。 - 新增 op_kernel/CMakeLists.txt,声明 ascend950 ascend350 ascend960pr ascend960dt 编译单元。 - 新增 op_host/config/{ascend960pr,ascend960dt}/concat_offset_binary.json。 ## 关联的Issue - #6258 https://gitcode.com/cann/ops-nn/issues/6258 ## 测试 - 本 PR 为芯片适配配置变更,未新增/修改测试用例。 ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11280 | 1 month ago | |
docs: DataFormatDimMap参数说明改为枚举值并明确x取值范围 Co-authored-by: babeiee<125106023003@njust.edu.cn> # message auto-generated for no-merge-commit merge: !11870 merge docs/data-format-dim-map-readme-len-desc into master docs: DataFormatDimMap参数说明改为枚举值并明确x取值范围 Created-by: babeiee Commit-by: babeiee Merged-by: cann-robot Description: ## 描述 修正 DataFormatDimMap 算子 README.md 参数说明,解决两个问题: 1. **src_format/dst_format 改为枚举值**:原描述"格式字符串长度支持1~5"会被理解为任意1~5个字符的字符串均可用,导致生成"N"、"H"、"NH"这类错误format。现将参数说明和约束说明改为明确的枚举取值:"NCHW"、"NHWC"(4维)、"NCDHW"、"NDHWC"(5维),并显式声明不支持其他字符串。 2. **明确x取值范围与格式维度数的对应**:x取值范围为[-N, N),N为src_format的维度数(4维格式N=4,5维格式N=5),即x取值范围为[-4, 4)或[-5, 5),避免"格式长度"表述产生歧义。 同时保留:两者需包含相同字符集(同为4维或同为5维格式)、负数索引回绕语义(-1表示最后一维)等约束。 ## 关联的Issue 无 ## 测试 - 仅文档修改,不涉及代码变更,无需运行算子测试。 - 已通过仓库 pre-commit hooks 检查。 ## 文档更新 - 更新 index/data_format_dim_map/README.md:参数说明表中 x、src_format、dst_format 的描述,以及约束说明章节。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11870 | 28 days ago | |
修复 Embedding 二维 indices 的输出形状推导 Co-authored-by: KaranocaVe<karanocave@qq.com> # message auto-generated for no-merge-commit merge: !11750 merge fix/2026-10-12-ops-nn-embedding-infershape-rank2-dim-order-01 into master 修复 Embedding 二维 indices 的输出形状推导 Created-by: KaranocaVe Commit-by: KaranocaVe Merged-by: cann-robot Description: ## 修复 Embedding 二维 indices 的输出形状推导 ### 问题 Embedding Host InferShape 将 embedding width 固定写入输出第二维。二维 indices 时会覆盖 indices 的第二维并遗漏输出末维,错误返回成功。 ### 修复 将 weight 的最后一维写入 output[rank(indices)],并增加二维 indices 的 Host InferShape 回归测试。 ### 验证 定向 EmbeddingTest.* 共 2 项通过:一维输出 [9, 10],二维输出 [2, 3, 10]。 关联 Issue: https://gitcode.com/cann/ops-nn/issues/6512 See merge request: cann/ops-nn!11750 | 22 days ago | |
feat(embeddingbag): 适配Ascend960系列芯片 Co-authored-by: Apricityh<wangxu359@huawei.com> # message auto-generated for no-merge-commit merge: !12312 merge feat/embedding_bag_ascend960_support into master feat(embeddingbag): 适配Ascend960系列芯片 Created-by: Apricityh Commit-by: Apricityh Merged-by: cann-robot Description: ## 描述 Embedingbag算子DV121蓝区反合 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6903 ## 测试 950/960编译出包验证,david冒烟、二级冒烟、950门槛用例,960eslmodel各分支用例验证 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12312 | 22 days ago | |
index及foreach算子支持ascend960dt Co-authored-by: wang-shilong32<wangshilong23@huawei.com> # message auto-generated for no-merge-commit merge: !12244 merge feat/op960dt-4-index-foreach into master index及foreach算子支持ascend960dt Created-by: wang-shilong32 Commit-by: wang-shilong32 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> index及foreach算子支持ascend960dt: embedding/embedding_bag/embedding_dense_grad(_v2)/masked_scatter_with_position/foreach_add_list ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6872 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟测试,本地编译验证。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12244 | 23 days ago | |
index及foreach算子支持ascend960dt Co-authored-by: wang-shilong32<wangshilong23@huawei.com> # message auto-generated for no-merge-commit merge: !12244 merge feat/op960dt-4-index-foreach into master index及foreach算子支持ascend960dt Created-by: wang-shilong32 Commit-by: wang-shilong32 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> index及foreach算子支持ascend960dt: embedding/embedding_bag/embedding_dense_grad(_v2)/masked_scatter_with_position/foreach_add_list ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6872 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 冒烟测试,本地编译验证。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12244 | 23 days ago | |
修改产品名 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11348 merge master into master 修改产品名 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改产品名 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 仅涉及md文档更新,不涉及测试 ## 文档更新 修改所有md文件的产品名称 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11348 | 1 month ago | |
算子gather_elements支持Ascend960 Co-authored-by: sikaiwei<sikaiwei1@h-partners.com> # message auto-generated for no-merge-commit merge: !11397 merge gather_elements_arch92 into master 算子gather_elements支持Ascend960 Created-by: sikaiwei Commit-by: sikaiwei Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend960新增支持算子gather_elements ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6743 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 基础功能用例、冒烟均已通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11397 | 23 days ago | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 27 days ago | |
gather_nd/reverse_v2/scatter_nd_update 新增 ascend960 支持 Co-authored-by: xingtaowu<wuxingtao3@h-partners.com> # message auto-generated for no-merge-commit merge: !11288 merge dev_0928 into master gather_nd/reverse_v2/scatter_nd_update 新增 ascend960 支持 Created-by: xingtaowu Commit-by: xingtaowu Merged-by: cann-robot Description: ## 描述 为 gather_nd、scatter_nd_update、reverse_v2 三个算子新增 ascend960dt(Ascend 960)芯片支持。 ## 改动原因 Ascend 960 芯片推出,需要上述算子适配新平台,扩大算子可用硬件范围。 ## 改动方法 - gatherNd: 1. op_host/gather_nd_def.cpp 新增 ascend960dt 算子配置与类型列表; 2. op_host/arch35 新增 SIMD DMA tiling 子场景; 3. op_kernel /arch35 新增 gather_nd_simd_dma.h模板; 4. 新增 ascend960dt 编译配置(gather_nd_binary.json、gather_nd_simplified_key.ini); - scatterNdUpdate: 1. op_graph/scatter_nd_update_proto.h 新增 hifloat4 类型注册; 2. op_host/scatter_nd_update_def.cpp 新增 ascend960dt 算子配置与类型列表; 3. 新增 ascend960dt 编译配置(scatter_nd_update_binary.json、scatter_nd_update_simplified_key.ini); - reverseV2: 1. op_host/reverse_v2_def.cpp 新增 ascend960dt 算子配置与类型列表; 2. 新增 ascend960dt 编译配置(reverse_v2_binary.json、reverse_v2_simplified_key.ini); - scripts: ascendc_config.json 为 reverseV2/scatterNdUpdate/gatherNd 增加 ascend960dt compute_unit; <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6798 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 编译通过,用例批跑通过。 obp冒烟、david冒烟 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 无 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11288 | 24 days ago | |
Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Co-authored-by: 张鑫<zhangxin660@h-partners.com> # message auto-generated for no-merge-commit merge: !11408 merge REG_OP_Gather into master Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Created-by: z30075199 Commit-by: 张鑫 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend960适配gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6762 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 批跑用例ok 冒烟ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11408 | 23 days ago | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 4 months ago | |
Revert "fix(index): validate empty self and handle empty indices" Co-authored-by: fazhenyao<fazhenyao@h-partners.com> # message auto-generated for no-merge-commit merge: !12387 merge revert/index-empty-self-invalid into master Revert "fix(index): validate empty self and handle empty indices" Created-by: fazhenyao123 Commit-by: fazhenyao Merged-by: cann-robot Description: ## 描述 回退已合入 master 的 PR [#12074:fix(index): validate empty self and handle empty indices](https://gitcode.com/cann/ops-nn/pull/12074),撤销其对 aclnnIndex 空 self 和全空 indices 场景的处理,恢复该 PR 合入前的接口行为。 - 移除 self 为空且 out 非空时返回 ACLNN_ERR_PARAM_INVALID 的新增校验。 - 恢复 self->IsEmpty() || out->IsEmpty() 的空张量早退条件:参数检查通过后,任一为空即设置 workspaceSize = 0 并返回 ACLNN_SUCCESS。 - 移除 allIndicesEmpty 检测、全空索引下的输出 shape 校验,以及通过 Contiguous + ViewCopy 复制 self 到 out 的特殊分支。 - 将 l2_test_self_empty_fp32 的预期恢复为 ACLNN_SUCCESS,删除原 PR 新增的 self/out 同为空及全空索引相关 UT。 - 同步回退接口文档中的新增错误码场景和约束说明。 ## 关联的Issue 原 PR 关联 Issue [#6304](https://gitcode.com/cann/ops-nn/issues/6304)。本 PR 为上述修复的回退,相关空输入问题仍需后续处理。 ## 测试 - 当前 PR 页面显示 41 项流水线检查均已通过,最新流水线:[CI 执行记录](https://gitcode.com/CANN/ops-nn/actions/runs/4bd36f4c6f3c4698860fc5f1c51c6e48)。 - 本次仅补充 PR 描述,未额外执行本地编译、UT 或设备精度测试。 ## 文档更新 回退 index/index/docs/aclnnIndex.md 中由 #12074 新增的两项错误码场景及对应约束,使文档与回退后的实现一致。 ## 类型标签 - [x] 其他:回退 PR #12074 - [x] 文档更新 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!12387 | 22 days ago | |
fix(index_check): re-land red-line and admission fixes with minimal scope (without 950 binary json) Co-authored-by: Bright0313<liwenbo84@huawei.com> # message auto-generated for no-merge-commit merge: !11381 merge reland/indexcheck-fixes-v2 into master fix(index_check): re-land red-line and admission fixes with minimal scope (without 950 binary json) Created-by: Bright0313 Commit-by: Bright0313 Merged-by: cann-robot Description: ## 描述 按**最小必要范围**重新提交 PR #10445 的缺陷修复(8 文件,+137/-90)。每处修改均可追溯至有编号的检视(ascendc-code-review)或准入扫描(ops-admission-scan)发现;**不含** config/ascend950/index_check_binary.json,并按导师对兼容性交付算子的整改指引撤除了无 finding 支撑的改动。 ## 逐文件改动与目的 | 文件 | 改动 | 解决的问题(发现编号/依据) | |---|---|---| | op_kernel/index_check.h | ① 4 处 ascendc_assert→Trap() ② bounds 经 DataCopyPad 搬入 UB 后 LocalTensor 读取(新增 boundsTableBuf_,构造顺序 InitParams→InitBuffers→InitBounds)③ TensorList 地址表改裸指针模式 ④ int64 实例 5 个向量队列 if constexpr 条件化(不分配) | ① **编码红线 P1(检视 FAIL 80%)**:ascendc_assert 在 NDEBUG 下展开为空,Release 编译越界检测退化为 no-op,算子唯一功能失效 ② **红线 API-1(FAIL 80%)**:生产代码 3 处 GlobalTensor::GetValue(API 黑名单,GM 逐元素访问性能极差)③ 同 API-1 ④ **红线 TIL-3(FAIL 80%)**:int64 实例向量队列分配后零读写,占 UB 预算 71.4%,maxBatchSize 被压至 1/3.5 | | op_kernel/index_check.cpp | TILING_KEY_IS(0)/(1) 宏分发简化为模板直分 | TIL-3 配套:int64 恒走标量路径后宏分支不可达(死分支) | | op_host/index_check_tiling.cpp | ① TilingIndexCheck/TilingPrepareForIndexCheck 入口 context 判空前移 ② bounds 一维/长度校验(GetDimNum()!=1 \|\| GetDim(0)!=tensorId_ 拒绝)③ int64 预算 28B→8B/元素(indicesDtype_)④ SetBlockDim 返回值检查 ⑤ ubSize 无符号下溢修复(原 ubSizePlatform - SCALE_SPACE 在平台 UB<20480 时下溢为极大值,使下限检查失效)⑥ Arch35 硬编码日志去除 ⑦ 未用 include 清理 | ① **红线 RL-6/GEN-1.1(FAIL 70%)**:OP_LOGD(context->GetNodeName()) 在判空前解引用 ② **共性问题 11 维度+15.4(扫描 FAIL)**:spec 声明 rank_range:[1,1] 代码未实现,2-D bounds 元素数巧合时边界语义错位 ③ TIL-3 配套(maxBatchSize 8336→29184)④ **红线 TOPK-1(FAIL 85%)**:SetBlockDim 失败后 tiling 仍返 SUCCESS,kernel 按错误核数启动→部分索引静默漏检 ⑤ 基线真实缺陷 ⑥ SEC-8.4 ⑦ GEN-2.3 | | op_host/index_check_tiling.h | 魔鬼数字 8 → MAX_TENSOR_NUM 常量 | GEN-4.2(检视发现) | | op_api/index_check.cpp | ① 入口判空补 executor;IsAiCoreSupport 逐张量判空 ② bounds->Size() 传 %zu 加 static_cast<size_t>(2 处)③ 超限日志补上限值 ④ MAX_DIM_LEN→MAX_TENSOR_NUM(名实一致)、常量小驼峰 ⑤ 删 2 个未用 include | ① GEN-1.1(SUSP 70%):空指针 UB ② SEC-1.3:C 标准 varargs UB ③ SEC-8.4:排障日志缺关键值 ④ GEN-4.3/style1.4 ⑤ GEN-2.3 | | README.md | ① 950PR/950DT 行 ×→√ ② 补 4 条约束声明(rank≤8、列表非空、空张量跳过、空列表双路径行为) | ① **共性问题 15.1 双向核查**:def.cpp AddConfig("ascend950") 存在而文档标 ×(真实失配)② **共性问题 15.4(扫描 FAIL)**:4 个代码约束资料未声明 | | op_host/index_check_infershape.cpp<br>op_graph/index_check_graph_infer.cpp | 块注释 /* */ → //(各 1 行) | style 2.3(检视发现) | ## 明确不做的项及理由 | 项 | 理由 | |---|---| | 950 binary json(#10445 曾引入,#11349 已回退) | 手写 json 的 bin_filename 与 950 构建产物(哈希命名)不符且覆盖自动生成机制;无源 json 时构建自动生成正确配置(已验证) | | 运行时 format 校验(CheckFormat) | 共性问题 10 格式为 **REVIEW** 项:约束由 OpDef 注册 + binary json 元数据在框架层强制(同仓 80+ 算子同惯例),书面确认即可,不改码 | | tiling 逐张量 dtype 一致性/format 校验 | DType 驱动类,兼容性交付算子按整改指引不整改;op_api 层已有同校验 | | dim<0/溢出/bound<=0 防御校验、既有日志语法润色、scatter_elements UT | 无 finding 支撑(防御性自加)或不属本算子范围,按最小范围原则撤除 | | 共性问题 15.1 A2/A3 部分 | **误报豁免**:扫描规则对旧芯片仅查 canndev ini,本算子 A2/A3 支持声明于 def.cpp AddConfig(新轨注册),证据链见 Issue #5888 | | 共性问题 15.3 | **误报豁免**:L0-only 算子无公开 aclnn API,仓内 11 个同类 L0 算子同惯例无 aclnn 文档 | ## 验证 | 项 | 结果 | |---|---| | build.sh --ops=index_check --soc=ascend910_93 --pkg | ✅ 通过 | | build.sh --ops=index_check --soc=ascend950 --pkg(无源 json) | ✅ 通过,kernel/config/ascend950/index_check.json 自动生成、binInfo 指向真实产物 | | pre-commit(clang-format/codespell/OAT) | ✅ 全绿 | | 原始修复的精度回归(TTK 207 条 × 5+ 轮、Release 真机 VEC_ERROR) | 见 #10445 / Issue #5888(本次保留项代码未变) | ## 关联 - 原 PR:#10445 回退 PR:#11349 问题追踪:Issue #5888 See merge request: cann/ops-nn!11381 | 1 month ago | |
feat: index_fill、avg_pool、avg_pool_v2算子新增ascend960芯片支持 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !11274 merge dev_zl_2026_0928 into master feat: index_fill、avg_pool、avg_pool_v2算子新增ascend960芯片支持 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 为 index_fill、avg_pool、avg_pool_v2 三个算子新增 ascend960dt(Ascend 960)芯片支持。 ### 改动原因 Ascend 960 芯片推出,需要上述算子适配新平台,扩大算子可用硬件范围。 ### 改动方法 - index_fill: - op_graph/index_fill_proto.h 新增 hifloat4、float4_e2m1、float4_e1m2 类型注册(METADEF_VERSION_NUM >= 90300000 宏防护); - op_host/index_fill_def.cpp 新增 ascend960dt 算子配置与类型列表; - op_host/arch35 新增 SIMD DMA tiling 子场景(index_fill_tiling_simd_dma.cpp/.h),tiling_common 新增 hifloat4/fp4 支持校验(CheckSupportForHif4,FP4 按 int8 搬运、尾轴减半); - op_kernel 新增 arch92 内核(index_fill_apt.cpp、index_fill_simd_dma.h),arch35 内核新增 fp4Mode 与 fp4 值打包处理; - 新增 ascend960dt 编译配置(index_fill_binary.json、index_fill_simplified_key.ini); - 新增 geir 图模式示例(examples/test_geir_index_fill.cpp)。 - avg_pool / avg_pool_v2: - op_host 新增 ascend960dt 算子配置与编译配置(avg_pool.json / avg_pool_v2_binary.json、*_simplified_key.ini); - op_kernel/arch35 新增 SUPPORT_MERGE_MODE 与 AddWithMergeMode(arch 9201/9202 使用 Reg::Add MERGING 模式),avg_pool_big_kernel_nhwc.h 改用该模板。 - scripts: - ascendc_config.json 为 IndexFill/AvgPool/AvgPoolV2 增加 ascend960dt compute_unit; - ascendc_impl_build.py 增加 hifloat4 类型映射,parse_ini_to_json.py 增加 hifloat4 类型。 ## 关联的Issue - #6758 ## 测试 - 编译通过,geir 示例(test_geir_index_fill.cpp)编译并运行成功(build.sh --run_example index_fill graph)。 - obp冒烟、david冒烟 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11274 | 22 days ago | |
feat(index): index_fill_d、inplace_index_fill、scatter_add_with_sorted 新增 Ascend 960 支持 Co-authored-by: CherryRanH<ranhe2@huawei.com> # message auto-generated for no-merge-commit merge: !11592 merge feat/ascend960-index-ops into master feat(index): index_fill_d、inplace_index_fill、scatter_add_with_sorted 新增 Ascend 960 支持 Created-by: CherryRanH Commit-by: CherryRanH Merged-by: cann-robot Description: ## 描述 本 PR 为 index 目录下三个算子新增 Ascend 960产品支持,保持 ascend350/ascend950 现有内容与行为不变,仅增量添加 960 内容。具体改动如下: **1. index_fill_d / inplace_index_fill(纯配置接入)** - op_host/*_def.cpp:新增 AddConfig("ascend960dt")(index_fill_d 另含 ascend960pr),保留原有 950/350 配置 - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 960 计算单元,tiling 仍复用 arch35 目录 - 新增 op_host/config/ascend960dt|ascend960pr/ 配置:binary.json 与 ascend950 保持一致 **2. scatter_add_with_sorted(新增 SIMD_DMA 确定性模板)** - kernel 侧:新增 op_kernel/arch92/ 目录,存放新模板 scatter_add_with_sorted_simd_dma.h、scatter_add_with_sorted_determ_workspace_dma.h(GatherDMA/ScatterDMA 确定性累加实现) - struct.h:新增 TPL_MODE_SIMD_DMA=3 模板注册、2 组 ASCENDC_TPL_SEL 组合及 ScatterAddWithSortedSimdDMATilingData 结构(原 0/1/2 模式取值不变) - tiling 侧:大量复用现有 simd tiling 类,新增 DMA 分核/UB tiling/二分估行等逻辑,通过 tiling_base 中 isAscend96_(NpuArch::DAV_9201 运行期架构判断)隔离,钩入 DoOpTiling/GetTilingKey/SetTilingData/DumpTilingInfo,原 350/950 路径逻辑零修改(diff 为纯新增) - 配置:新增 config/ascend960dt/(binary.json 与 950 一致) ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6900 ## 测试 950/350/960编译出包验证,david冒烟、obp冒烟、950门槛用例,960eslmodel用例验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11592 | 22 days ago | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 4 months ago | |
[fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Co-authored-by: NUAAwqy<162230229@nuaa.edu.cn> # message auto-generated for no-merge-commit merge: !11488 merge fix/issue-6381-nbsp-non-cpp-license-headers into master [fix] 修正 14 个 CMakeLists.txt/Python 文件许可头中的 NBSP(U+00A0) Created-by: NUAA_wqy Commit-by: NUAAwqy Merged-by: cann-robot Description: ## 描述 **现状问题**:14 个非 C/C++ 文件(6 个 CMakeLists.txt + 8 个 Python)的许可头写成 #<NBSP>This program is free software, ...,即注释符 # 后直接是一个 NBSP(U+00A0) 再跟正文,而本仓 14900+ 个文件 写的是 # This program is free software, ...。与 #6335(C/C++ 文件版)是同一判据、不同文件集,按原文精确匹配的 许可/合规扫描同样认不出这 14 个头。 **改动方法**:每个文件把许可头里的 #<NBSP>This program is free software 替换为 # This program is free software (仅在文件前 1200 字节内首次出现处替换)。 **影响面**:14 个文件各 1 行,各只改 1 个不可见字符。 ## 变更类型 - [ ] 🐛 Bug修复 - [ ] ✨ 新特性 - [ ] 🚀 性能优化 - [x] 🧹 代码/许可规范修复,请描述:许可头中 NBSP 的合规修复(C/C++ 之外的剩余文件) ## 关联的Issue #6381 ## 测试 已完成的测试用例和场景: 1. 对 git ls-files 中全部 .py/.txt/.cmake/.sh 扫描 #\xc2\xa0This program is free software,命中 **14** 个文件并完成替换。 2. 逐文件 git diff 确认每处变更都是 #<NBSP> → # 的单个字符替换,git diff --shortstat 为 14 files changed, 14 insertions(+), 14 deletions(-)。 3. 8 个 Python 文件逐文件 python -m py_compile 通过(PYCOMPILE_OK)。 4. 复扫修改后文件前 1200 字节:该 NBSP 写法剩余 0 处。 补充的UT用例:无(不涉及算子计算逻辑)。 ## 文档更新 NA ## 合入检查 - [x] 已阅读 CONTRIBUTING.md,commit message 含类型标签与 DCO 签名(Signed-off-by) - [x] 代码/文档遵循项目整体风格,改动最小且聚焦于该 Issue - [x] 已完成本地验证,验证方法见"测试"章节 ## DCO Signed-off-by: NUAAwqy <162230229@nuaa.edu.cn> See merge request: cann/ops-nn!11488 | 21 days ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
bug_fix(IndexPutWithSortV2): 修复IndexPutWithSortV2算子tiling中判断索引轴是否连续的逻辑 Co-authored-by: surezz<zhangyuwei31@huawei.com> # message auto-generated for no-merge-commit merge: !12220 merge index_put_with_sort_v2_bug_fix_new into master bug_fix(IndexPutWithSortV2): 修复IndexPutWithSortV2算子tiling中判断索引轴是否连续的逻辑 Created-by: surezz Commit-by: surezz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> IndexPutWithSortV2 非连续索引轴判断错误,导致模板选择及 values 步长异常 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6881 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟,二级冒烟,相关场景bug用例测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12220 | 22 days ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
修改产品名 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11348 merge master into master 修改产品名 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 修改产品名 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 仅涉及md文档更新,不涉及测试 ## 文档更新 修改所有md文件的产品名称 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11348 | 1 month ago | |
inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt Co-authored-by: xiaodong666<yuanxiaodong6@huawei.com> # message auto-generated for no-merge-commit merge: !11639 merge dv121_to_master into master inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt Created-by: xiaodong666 Commit-by: xiaodong666 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#6780](https://gitcode.com/cann/ops-nn/issues/6780) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例和冒烟的验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11639 | 23 days ago | |
inplace_index_add_with_sorted 算子新增 ascend960dt 平台支持 Co-authored-by: liaohuming<liaohuming@huawei.com> # message auto-generated for no-merge-commit merge: !11364 merge master into master inplace_index_add_with_sorted 算子新增 ascend960dt 平台支持 Created-by: liaohuming Commit-by: liaohuming Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 为inplace_index_add_with_sorted算子新增 ascend960dt 平台支持,使其可在 Ascend960DT 芯片上完成编译与调用。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6745 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11364 | 26 days ago | |
feat(index): index_fill_d、inplace_index_fill、scatter_add_with_sorted 新增 Ascend 960 支持 Co-authored-by: CherryRanH<ranhe2@huawei.com> # message auto-generated for no-merge-commit merge: !11592 merge feat/ascend960-index-ops into master feat(index): index_fill_d、inplace_index_fill、scatter_add_with_sorted 新增 Ascend 960 支持 Created-by: CherryRanH Commit-by: CherryRanH Merged-by: cann-robot Description: ## 描述 本 PR 为 index 目录下三个算子新增 Ascend 960产品支持,保持 ascend350/ascend950 现有内容与行为不变,仅增量添加 960 内容。具体改动如下: **1. index_fill_d / inplace_index_fill(纯配置接入)** - op_host/*_def.cpp:新增 AddConfig("ascend960dt")(index_fill_d 另含 ascend960pr),保留原有 950/350 配置 - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 960 计算单元,tiling 仍复用 arch35 目录 - 新增 op_host/config/ascend960dt|ascend960pr/ 配置:binary.json 与 ascend950 保持一致 **2. scatter_add_with_sorted(新增 SIMD_DMA 确定性模板)** - kernel 侧:新增 op_kernel/arch92/ 目录,存放新模板 scatter_add_with_sorted_simd_dma.h、scatter_add_with_sorted_determ_workspace_dma.h(GatherDMA/ScatterDMA 确定性累加实现) - struct.h:新增 TPL_MODE_SIMD_DMA=3 模板注册、2 组 ASCENDC_TPL_SEL 组合及 ScatterAddWithSortedSimdDMATilingData 结构(原 0/1/2 模式取值不变) - tiling 侧:大量复用现有 simd tiling 类,新增 DMA 分核/UB tiling/二分估行等逻辑,通过 tiling_base 中 isAscend96_(NpuArch::DAV_9201 运行期架构判断)隔离,钩入 DoOpTiling/GetTilingKey/SetTilingData/DumpTilingInfo,原 350/950 路径逻辑零修改(diff 为纯新增) - 配置:新增 config/ascend960dt/(binary.json 与 950 一致) ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6900 ## 测试 950/350/960编译出包验证,david冒烟、obp冒烟、950门槛用例,960eslmodel用例验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11592 | 22 days ago | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 27 days ago | |
fix(inplace_sub): inplaceSub算子检视意见闭环 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !12298 merge master into master fix(inplace_sub): inplaceSub算子检视意见闭环 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复InplaceSub 950实现的跨核同步调度和有符号整数减法溢出,并补充对应回归用例及解决Golden在TensorFlow测试中的Torch导入冲突 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ST UT 泛化测试均通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12298 | 23 days ago | |
feat: 增加 ascend350 平台支持(22 个算子) Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !11038 merge adapt-ascend350 into master feat: 增加 ascend350 平台支持(22 个算子) Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 为 22 个算子增加 ascend350(arch35)平台支持,并将 Threshold 的 aclnn 接口 SocVersion BF16 判断重构为 NpuArch 判断。 算子列表(22 个): - activation: Relu6D、SoftplusGrad、Threshold - index: InplaceUpdate、ScatterNonAliasingAdd、SparseSegmentSumGrad - loss: SmoothL1Loss、SmoothL1LossGrad - norm: LpNormUpdate - optim: FusedMulApplyMomentum、FusedMulApplyMomentumExtern、SparseApplyAdadelta、SparseApplyFtrl、SparseApplyFtrlV2、SparseApplyProximalAdagrad、SparseApplyRMSProp - pooling: Dilation2D - quant: ActULQClampMaxGrad、ActULQClampMinGrad、ActsULQInputGrad、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis 改动内容: 1. CMakeLists:SUPPORT_COMPUTE_UNIT 追加 ascend350,SUPPORT_TILING_DIR 追加 arch35; 2. op_host/*_def.cpp:追加 AICore().AddConfig("ascend350", ...); 3. op_kernel/CMakeLists:COMPUTE_UNITS 追加 ascend350; 4. 3 个算子复制 op_host/config/ascend950/*.json 到 ascend350/(ScatterNonAliasingAdd、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis); 5. Threshold op_api/aclnn_threshold.cpp:GetDtypeSupportList 的 SocVersion 判断重构为 NpuArch 判断。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6131 ## 测试 <!--TODO--> ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11038 | 23 days ago | |
fix: 修复 Median 和 NanMedian 负 subnormal 的 NaN 计数 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !12490 merge fix/median-subnormal-nan-count into master fix: 修复 Median 和 NanMedian 负 subnormal 的 NaN 计数 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 Ascend 950 Median / NanMedian 在多核 radix 路径中将负 subnormal 误计为 NaN,导致中位数及索引错误的问题。输入本身无需包含 NaN,正确中位数也不一定是 subnormal。 PreProcess 会原地将输入转换为 radix key。原先随后调用的 OnRadixInputLoaded 读取已转换的数据,例如 FP32 0x80000001 对应 key 0x7ffffffe,按浮点解释即为 NaN,影响 Median 的 NaN 传播和 NanMedian 的中位秩计算。 本次将 OnRadixInputLoaded 移到 PreProcess 之前,针对原始输入统计 NaN,并说明调用顺序的原因。复用已有计算、同步与 buffer;KthValue / Unique 的该 hook 为空操作。Median 和 NanMedian 的库内 ST CSV 各增加一条 FP32 负 subnormal 零容差回归用例,shape 为 (1,1,151992)、dim=-1。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/7143 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本机 Ascend950DT_9574,TTK v3.0.0(8b3f093),release kernel 直调,显式加载各算子 golden 插件。 | 验证范围 | 结果 | |---|---| | Median 全量 | 417/417 通过 | | NanMedian 全量 | 427/427 通过 | | 上述全量中的新增 subnormal | 各 152 条,共 304 条,均通过;覆盖 FP32/FP16/BF16 的适用浮点模板 schId 0–11 | | KthValue 共享代码回归 | 366/366 通过,含 15 条新增 subnormal | | UniqueWithCountsAndSorting 共享代码回归 | 有效参考下 254/254 通过,含 12 条新增 subnormal;values-only 通路,校验 values 和动态 shape | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12490 | 21 days ago | |
docs(index): 修正 LinearIndex 系列参数定义 Co-authored-by: fazhenyao<fazhenyao@h-partners.com> # message auto-generated for no-merge-commit merge: !11773 merge fix-linear-index-readme-params into master docs(index): 修正 LinearIndex 系列参数定义 Created-by: fazhenyao123 Commit-by: fazhenyao Merged-by: cann-robot Description: ## 描述 修正 LinearIndex README 参数表与算子定义不一致的问题: - 将误写的 stride、indices_list、value_size 替换为实际输入 indices、shape - 将 shape 和输出 index 的数据类型修正为 INT32 - 补充可选属性 axis 和 combine 及默认值 目标分支:master 基线提交:c6213e2856e723ab3aff6550ffaeee4f9765e0da ## 关联的Issue - #6357 ## 测试 - git diff --check - 静态比对 README 与 linear_index_def.cpp、linear_index.cpp - 远端 Git Hooks 检查通过 - 当前环境未安装 pre-commit 和 codespell,未运行本地完整 pre-commit ## 文档更新 - 更新 index/linear_index/README.md 参数说明 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11773 | 30 days ago | |
feat(index): 新增LinearIndexV2的Ascend960平台支持 Co-authored-by: CherryRanH<ranhe2@huawei.com> # message auto-generated for no-merge-commit merge: !11385 merge master into master feat(index): 新增LinearIndexV2的Ascend960平台支持 Created-by: CherryRanH Commit-by: CherryRanH Merged-by: cann-robot Description: ## 描述 按代码回蓝格式合入960需求内容,950/350实现保持原有arch35不动: linear_index_v2(无960专属实现,复用arch35 kernel与tiling,仅新增平台注册): - def.cpp新增ascend960dt/ascend960pr AddConfig,复用950 aicoreConfig,350保持不动 - 新增config/ascend960dt、config/ascend960pr二进制配置 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6957 ## 测试 950/350/960编译出包验证,david冒烟、obp冒烟、950门槛用例,960eslmodel用例验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11385 | 22 days ago | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 21 days ago | |
feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !11516 merge codex/index-960-adaptation into master feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 为 ScatterElementsV2、RepeatInterleave、MaskedScatter 接入 Ascend 960dt/960pr,使芯片注册、二进制配置、编译入口和 ACLNN 平台分流形成完整适配链路;同时补齐 MaskedScatter 广播所需的 MaskedScatterWithPosition。 参考 [PR #11274](https://gitcode.com/cann/ops-nn/pull/11274) 的 add_kernel_sources(COMPUTE_UNITS ...) 编译选择策略,复用现有 kernel 和 arch35 tiling,不增加算法模板。960 binary 配置沿用当前 master 的 950 契约,保留 Scatter 的 include_self 属性。 - 使用 master 已有的 960dt/pr 公共构建入口,补齐四个算子的 OpDef、binary 配置和 kernel 入口选择。 - 架构判断限定在各算子的 .cpp 内,按 DAV_9201/DAV_9202 识别 960dt/pr;公共 aclnn_util.h、根 CMakeLists.txt 和 build.sh 均无 PR 差异。 - 960 Scatter 走 ScatterElementsV2 通用路径;ScatterAdd、ScatterAddWithSorted、ScatterUpdate 快捷路径仍受原平台条件限制。 - 复用的 arch35 kernel 不处理 include_self=false,因此 960 ScatterReduce 的 add/mul 组合在该参数为 false 时明确返回参数错误,覆盖 inplace/out-of-place 两入口。min/max/mean 保留原有 fallback,本 PR 不声明已验证其 960 支持。 迁移来源:ops-nn-dev/cann_out@f487ac66d1f4523f53886864a14b504fdf1a5357。适配保留目标仓当前实现,不回退到源分支的旧 API 或旧接口契约。 ## 关联的Issue 暂无关联 Issue。编译适配方式参考 PR #11274。 ## 测试 ### 950 编译回归 使用 CANN 9.2.0,目标 Ascend950PR_9599,通过本次源码编译的 Host tiling 库执行实际 asc_opc 编译: | 算子 | binary 配置数 | 结果 | | --- | ---: | --- | | ScatterElementsV2 | 20 | 全部通过 | | RepeatInterleave | 24 | 全部通过 | | MaskedScatter | 4 | 全部通过 | | MaskedScatterWithPosition | 10 | 全部通过 | - 58/58 个配置编译完成,逐项确认 .o 和配套 JSON 均存在且非空,编译日志无错误。 - 正式 ophost_nn、opapi_nn 库编译链接通过。平台判断移到算子内部后,已重新编译并链接 950 的 opapi_nn,并重跑全部相关 API UT,结果保持一致;kernel 源码和编译配置未改变。 - 与未修改基线 8987daa9698bc68c50435b699361beb3f6071ae7 比较,四个算子的 950 OpDef 生成信息,以及 kernel 入口、simplified key、auto_sync、编译选项、impl_mode 均一致。 - 仓库 CMake 配置检查确认 950/350/910B 的入口和 tiling 映射不变,960dt/pr 的新入口与 arch35 映射符合预期。 ### API UT - 新增 5 个测试全部通过,覆盖 DAV_9201/DAV_9202 的 BF16、scalar repeats、普通/expanded index、MaskedScatter 广播与空 source,以及 ScatterReduce 的 include_self 组合。 - 相关全量 API UT:104/106 通过。未修改基线为 99/101 通过,失败的是同样两个旧用例:l2_repeat_interleave_test.l2_repeat_interleave_test_09、l2_repeat_interleave_int_test.l2_repeat_interleave_int_test_09,均返回 161002 而断言期待成功。 - API UT 验证参数和 workspace 构建,不代表设备数值或性能验证。 - bash -n build.sh、git diff --check 通过;独立代码审查的已发现问题均已修复并复核。 ### 尚未完成的验证 本机 CANN 9.2.0 的 SDK 支持列表不含 ascend960dt/pr,两者均在 CMake 配置阶段被明确拒绝。因此 960 kernel 实编译和设备验证仍需支持 960 的工具链完成;未修改 SDK 白名单或伪造平台配置。 ## 文档更新 无。适配范围和验证边界记录于本 PR 描述。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11516 | 23 days ago | |
feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !11516 merge codex/index-960-adaptation into master feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 为 ScatterElementsV2、RepeatInterleave、MaskedScatter 接入 Ascend 960dt/960pr,使芯片注册、二进制配置、编译入口和 ACLNN 平台分流形成完整适配链路;同时补齐 MaskedScatter 广播所需的 MaskedScatterWithPosition。 参考 [PR #11274](https://gitcode.com/cann/ops-nn/pull/11274) 的 add_kernel_sources(COMPUTE_UNITS ...) 编译选择策略,复用现有 kernel 和 arch35 tiling,不增加算法模板。960 binary 配置沿用当前 master 的 950 契约,保留 Scatter 的 include_self 属性。 - 使用 master 已有的 960dt/pr 公共构建入口,补齐四个算子的 OpDef、binary 配置和 kernel 入口选择。 - 架构判断限定在各算子的 .cpp 内,按 DAV_9201/DAV_9202 识别 960dt/pr;公共 aclnn_util.h、根 CMakeLists.txt 和 build.sh 均无 PR 差异。 - 960 Scatter 走 ScatterElementsV2 通用路径;ScatterAdd、ScatterAddWithSorted、ScatterUpdate 快捷路径仍受原平台条件限制。 - 复用的 arch35 kernel 不处理 include_self=false,因此 960 ScatterReduce 的 add/mul 组合在该参数为 false 时明确返回参数错误,覆盖 inplace/out-of-place 两入口。min/max/mean 保留原有 fallback,本 PR 不声明已验证其 960 支持。 迁移来源:ops-nn-dev/cann_out@f487ac66d1f4523f53886864a14b504fdf1a5357。适配保留目标仓当前实现,不回退到源分支的旧 API 或旧接口契约。 ## 关联的Issue 暂无关联 Issue。编译适配方式参考 PR #11274。 ## 测试 ### 950 编译回归 使用 CANN 9.2.0,目标 Ascend950PR_9599,通过本次源码编译的 Host tiling 库执行实际 asc_opc 编译: | 算子 | binary 配置数 | 结果 | | --- | ---: | --- | | ScatterElementsV2 | 20 | 全部通过 | | RepeatInterleave | 24 | 全部通过 | | MaskedScatter | 4 | 全部通过 | | MaskedScatterWithPosition | 10 | 全部通过 | - 58/58 个配置编译完成,逐项确认 .o 和配套 JSON 均存在且非空,编译日志无错误。 - 正式 ophost_nn、opapi_nn 库编译链接通过。平台判断移到算子内部后,已重新编译并链接 950 的 opapi_nn,并重跑全部相关 API UT,结果保持一致;kernel 源码和编译配置未改变。 - 与未修改基线 8987daa9698bc68c50435b699361beb3f6071ae7 比较,四个算子的 950 OpDef 生成信息,以及 kernel 入口、simplified key、auto_sync、编译选项、impl_mode 均一致。 - 仓库 CMake 配置检查确认 950/350/910B 的入口和 tiling 映射不变,960dt/pr 的新入口与 arch35 映射符合预期。 ### API UT - 新增 5 个测试全部通过,覆盖 DAV_9201/DAV_9202 的 BF16、scalar repeats、普通/expanded index、MaskedScatter 广播与空 source,以及 ScatterReduce 的 include_self 组合。 - 相关全量 API UT:104/106 通过。未修改基线为 99/101 通过,失败的是同样两个旧用例:l2_repeat_interleave_test.l2_repeat_interleave_test_09、l2_repeat_interleave_int_test.l2_repeat_interleave_int_test_09,均返回 161002 而断言期待成功。 - API UT 验证参数和 workspace 构建,不代表设备数值或性能验证。 - bash -n build.sh、git diff --check 通过;独立代码审查的已发现问题均已修复并复核。 ### 尚未完成的验证 本机 CANN 9.2.0 的 SDK 支持列表不含 ascend960dt/pr,两者均在 CMake 配置阶段被明确拒绝。因此 960 kernel 实编译和设备验证仍需支持 960 的工具链完成;未修改 SDK 白名单或伪造平台配置。 ## 文档更新 无。适配范围和验证边界记录于本 PR 描述。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11516 | 23 days ago | |
删除查看源码 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !12004 merge master into master 删除查看源码 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 删除查看源码 ## 关联的Issue 关联Issue [#6694](https://gitcode.com/cann/ops-nn/issues/6694) ## 测试 无需测试 ## 文档更新 删除文档中的查看源码链接 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12004 | 27 days ago | |
fix: 修复 Median 和 NanMedian 负 subnormal 的 NaN 计数 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !12490 merge fix/median-subnormal-nan-count into master fix: 修复 Median 和 NanMedian 负 subnormal 的 NaN 计数 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 Ascend 950 Median / NanMedian 在多核 radix 路径中将负 subnormal 误计为 NaN,导致中位数及索引错误的问题。输入本身无需包含 NaN,正确中位数也不一定是 subnormal。 PreProcess 会原地将输入转换为 radix key。原先随后调用的 OnRadixInputLoaded 读取已转换的数据,例如 FP32 0x80000001 对应 key 0x7ffffffe,按浮点解释即为 NaN,影响 Median 的 NaN 传播和 NanMedian 的中位秩计算。 本次将 OnRadixInputLoaded 移到 PreProcess 之前,针对原始输入统计 NaN,并说明调用顺序的原因。复用已有计算、同步与 buffer;KthValue / Unique 的该 hook 为空操作。Median 和 NanMedian 的库内 ST CSV 各增加一条 FP32 负 subnormal 零容差回归用例,shape 为 (1,1,151992)、dim=-1。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/7143 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本机 Ascend950DT_9574,TTK v3.0.0(8b3f093),release kernel 直调,显式加载各算子 golden 插件。 | 验证范围 | 结果 | |---|---| | Median 全量 | 417/417 通过 | | NanMedian 全量 | 427/427 通过 | | 上述全量中的新增 subnormal | 各 152 条,共 304 条,均通过;覆盖 FP32/FP16/BF16 的适用浮点模板 schId 0–11 | | KthValue 共享代码回归 | 366/366 通过,含 15 条新增 subnormal | | UniqueWithCountsAndSorting 共享代码回归 | 有效参考下 254/254 通过,含 12 条新增 subnormal;values-only 通路,校验 values 和动态 shape | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12490 | 21 days ago | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 4 months ago | |
fix: 修复 Median 和 NanMedian 负 subnormal 的 NaN 计数 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !12490 merge fix/median-subnormal-nan-count into master fix: 修复 Median 和 NanMedian 负 subnormal 的 NaN 计数 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 Ascend 950 Median / NanMedian 在多核 radix 路径中将负 subnormal 误计为 NaN,导致中位数及索引错误的问题。输入本身无需包含 NaN,正确中位数也不一定是 subnormal。 PreProcess 会原地将输入转换为 radix key。原先随后调用的 OnRadixInputLoaded 读取已转换的数据,例如 FP32 0x80000001 对应 key 0x7ffffffe,按浮点解释即为 NaN,影响 Median 的 NaN 传播和 NanMedian 的中位秩计算。 本次将 OnRadixInputLoaded 移到 PreProcess 之前,针对原始输入统计 NaN,并说明调用顺序的原因。复用已有计算、同步与 buffer;KthValue / Unique 的该 hook 为空操作。Median 和 NanMedian 的库内 ST CSV 各增加一条 FP32 负 subnormal 零容差回归用例,shape 为 (1,1,151992)、dim=-1。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/7143 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 本机 Ascend950DT_9574,TTK v3.0.0(8b3f093),release kernel 直调,显式加载各算子 golden 插件。 | 验证范围 | 结果 | |---|---| | Median 全量 | 417/417 通过 | | NanMedian 全量 | 427/427 通过 | | 上述全量中的新增 subnormal | 各 152 条,共 304 条,均通过;覆盖 FP32/FP16/BF16 的适用浮点模板 schId 0–11 | | KthValue 共享代码回归 | 366/366 通过,含 15 条新增 subnormal | | UniqueWithCountsAndSorting 共享代码回归 | 有效参考下 254/254 通过,含 12 条新增 subnormal;values-only 通路,校验 values 和动态 shape | ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12490 | 21 days ago | |
fix(non_zero): 适配 GE 图模式并补充 arch22 tiling UT Co-authored-by: xiafengkou<luojiangtao4@huawei.com> # message auto-generated for no-merge-commit merge: !12323 merge master into master fix(non_zero): 适配 GE 图模式并补充 arch22 tiling UT Created-by: xiafengkou Commit-by: xiafengkou Merged-by: cann-robot Description: ## 描述 修复 NonZero 算子(arch22 / A2、A3)在 GE 图模式(含 jit_compile=True 的整网训练默认路径)下的执行缺陷,并补齐图模式所需的 dtype 变体与 tiling 布局。 ### 改动原因 1. 图模式下 GE 的 NonZeroFusionPass 会将 NonZero 输出改写为 int32 + 后置 Cast,而 op_def / binary 仅声明 int64 输出变体,导致 FE 探测 op store 时被拒、静默回落内置 legacy 实现,tiling 布局错配产生错误结果。 2. 原 tiling 结构体约 200B,超出 GE JIT 路径对该算子的 128B 容量约束,执行期直接失败。 ### 改动方法 - **注册补齐**:non_zero_def.cpp 与 ascend910b/ascend910_93 的 non_zero_binary.json 同步新增 12 条变体(6 输入 dtype × int32/int64 输出),与内置 / arch35 对齐。 - **tiling 压缩**:将 tiling 结构体压缩为 15×int64 = 120B 以适配 128B 约束;删除冗余字段,transpose 改为 bit0=输出布局、bit1=输出 int32 位编码,xElemSize 用符号位编码 bf16。 - **kernel 适配**:实现 transpose 双布局直写、int32/int64 输出分支;WriteOutShape 恒定按 int64 协议写出 [0x80000002, dim0, dim1],与输出值位宽解耦。 ## 关联的Issue ## 测试 - **ATK 精度**:V1(aclnnNonzero)200/200 通过、V2(aclnnNonzeroV2)220/220 通过。 - **三模式矩阵回归**:eager / ge0(jit_compile=False)/ ge1 共 30/30 用例通过。 - **UT**:新增 tests/ut/op_host/arch22/test_non_zero_tiling.cpp,覆盖切核策略与 tiling 字段编码全路径。 ## 文档更新 本次改动不涉及文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!12323 | 21 days ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 21 days ago | |
feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !11516 merge codex/index-960-adaptation into master feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 为 ScatterElementsV2、RepeatInterleave、MaskedScatter 接入 Ascend 960dt/960pr,使芯片注册、二进制配置、编译入口和 ACLNN 平台分流形成完整适配链路;同时补齐 MaskedScatter 广播所需的 MaskedScatterWithPosition。 参考 [PR #11274](https://gitcode.com/cann/ops-nn/pull/11274) 的 add_kernel_sources(COMPUTE_UNITS ...) 编译选择策略,复用现有 kernel 和 arch35 tiling,不增加算法模板。960 binary 配置沿用当前 master 的 950 契约,保留 Scatter 的 include_self 属性。 - 使用 master 已有的 960dt/pr 公共构建入口,补齐四个算子的 OpDef、binary 配置和 kernel 入口选择。 - 架构判断限定在各算子的 .cpp 内,按 DAV_9201/DAV_9202 识别 960dt/pr;公共 aclnn_util.h、根 CMakeLists.txt 和 build.sh 均无 PR 差异。 - 960 Scatter 走 ScatterElementsV2 通用路径;ScatterAdd、ScatterAddWithSorted、ScatterUpdate 快捷路径仍受原平台条件限制。 - 复用的 arch35 kernel 不处理 include_self=false,因此 960 ScatterReduce 的 add/mul 组合在该参数为 false 时明确返回参数错误,覆盖 inplace/out-of-place 两入口。min/max/mean 保留原有 fallback,本 PR 不声明已验证其 960 支持。 迁移来源:ops-nn-dev/cann_out@f487ac66d1f4523f53886864a14b504fdf1a5357。适配保留目标仓当前实现,不回退到源分支的旧 API 或旧接口契约。 ## 关联的Issue 暂无关联 Issue。编译适配方式参考 PR #11274。 ## 测试 ### 950 编译回归 使用 CANN 9.2.0,目标 Ascend950PR_9599,通过本次源码编译的 Host tiling 库执行实际 asc_opc 编译: | 算子 | binary 配置数 | 结果 | | --- | ---: | --- | | ScatterElementsV2 | 20 | 全部通过 | | RepeatInterleave | 24 | 全部通过 | | MaskedScatter | 4 | 全部通过 | | MaskedScatterWithPosition | 10 | 全部通过 | - 58/58 个配置编译完成,逐项确认 .o 和配套 JSON 均存在且非空,编译日志无错误。 - 正式 ophost_nn、opapi_nn 库编译链接通过。平台判断移到算子内部后,已重新编译并链接 950 的 opapi_nn,并重跑全部相关 API UT,结果保持一致;kernel 源码和编译配置未改变。 - 与未修改基线 8987daa9698bc68c50435b699361beb3f6071ae7 比较,四个算子的 950 OpDef 生成信息,以及 kernel 入口、simplified key、auto_sync、编译选项、impl_mode 均一致。 - 仓库 CMake 配置检查确认 950/350/910B 的入口和 tiling 映射不变,960dt/pr 的新入口与 arch35 映射符合预期。 ### API UT - 新增 5 个测试全部通过,覆盖 DAV_9201/DAV_9202 的 BF16、scalar repeats、普通/expanded index、MaskedScatter 广播与空 source,以及 ScatterReduce 的 include_self 组合。 - 相关全量 API UT:104/106 通过。未修改基线为 99/101 通过,失败的是同样两个旧用例:l2_repeat_interleave_test.l2_repeat_interleave_test_09、l2_repeat_interleave_int_test.l2_repeat_interleave_int_test_09,均返回 161002 而断言期待成功。 - API UT 验证参数和 workspace 构建,不代表设备数值或性能验证。 - bash -n build.sh、git diff --check 通过;独立代码审查的已发现问题均已修复并复核。 ### 尚未完成的验证 本机 CANN 9.2.0 的 SDK 支持列表不含 ascend960dt/pr,两者均在 CMake 配置阶段被明确拒绝。因此 960 kernel 实编译和设备验证仍需支持 960 的工具链完成;未修改 SDK 白名单或伪造平台配置。 ## 文档更新 无。适配范围和验证边界记录于本 PR 描述。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11516 | 23 days ago | |
feat: cross_entropy_sum_exp_and_index_logit 与 repeat_interleave_grad 新增Ascend960平台支持 Co-authored-by: wkyan<yanwenkai@huawei.com> # message auto-generated for no-merge-commit merge: !10813 merge v121 into master feat: cross_entropy_sum_exp_and_index_logit 与 repeat_interleave_grad 新增Ascend960平台支持 Created-by: jzj007 Commit-by: wkyan Merged-by: cann-robot Description: ## 描述 为 cross_entropy_sum_exp_and_index_logit 与 repeat_interleave_grad 两个算子新增 ascend960dt(arch35)芯片平台支持,使其可在 ascend960dt 上完成算子定义注册、host/kernel 编译与二进制 kernel 配置生成。本次改动为平台适配,未修改 kernel 计算逻辑,复用 arch35 tiling 与 kernel 实现。 ### cross_entropy_sum_exp_and_index_logit 1. loss/cross_entropy_sum_exp_and_index_logit/CMakeLists.txt:SUPPORT_COMPUTE_UNIT 新增 ascend960dt,SUPPORT_TILING_DIR 追加 arch35,复用 arch35 tiling。 2. op_host/cross_entropy_sum_exp_and_index_logit_def.cpp:新增 this->AICore().AddConfig("ascend960dt", config_950)。 3. op_kernel/CMakeLists.txt:add_kernel_sources 的 COMPUTE_UNITS 新增 ascend960dt,复用 arch35/cross_entropy_sum_exp_and_index_logit.cpp。 4. 新增 op_host/config/ascend960dt/cross_entropy_sum_exp_and_index_logit_binary.json,含 float32、bfloat16 两套二进制 kernel 配置(输入 vocab_parallel_logits/target/global_logits_max,输出 predicted_logits/sum_exp_logits/exp_logits/target_offset/target_mask,含 vocab_start_index/vocab_end_index 属性)。 ### repeat_interleave_grad 1. index/repeat_interleave_grad/CMakeLists.txt:SUPPORT_COMPUTE_UNIT 新增 ascend960dt,SUPPORT_TILING_DIR 追加 arch35;add_kernel_sources 的 COMPUTE_UNITS 新增 ascend960dt。 2. op_host/repeat_interleave_grad_def.cpp:新增 this->AICore().AddConfig("ascend960dt", config_91095)。 3. 新增 op_host/config/ascend960dt/repeat_interleave_grad_binary.json,含 float16/bfloat16/float32(repeats 支持 int32/int64)共 6 套二进制 kernel 配置。 4. scripts/kernel/binary_config/ascendc_config.json:RepeatInterleaveGrad 的 compute_units 新增 ascend960dt。 ## 关联的Issue - 关联 Issue:https://gitcode.com/cann/ops-nn/issues/6767 ## 测试 本次改动为芯片平台适配(CMake 编译配置、算子定义注册、binary 配置),未修改 kernel 计算逻辑,复用 arch35 tiling 与 kernel 实现。需在 ascend960dt 环境完成编译及算子泛化、二级冒烟验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!10813 | 23 days ago | |
feat: ReverseSequence、ForeachAddScalarList、ForeachDivScalar算子新增ascend960平台支持 Co-authored-by: t00850857<tanxin44@huawei.com> # message auto-generated for no-merge-commit merge: !11911 merge master-v121 into master feat: ReverseSequence、ForeachAddScalarList、ForeachDivScalar算子新增ascend960平台支持 Created-by: tan_xin Commit-by: tan_xin;t00850857 Merged-by: cann-robot Description: ## 描述 为 ReverseSequence、ForeachAddScalarList、ForeachDivScalar 三个算子新增 ascend960dt 平台支持,使其可在 ascend960dt(NpuArch DAV_9201)芯片上完成编译与调用。主要改动: ### 算子定义与编译配置 - 三个算子 op_host 定义文件通过 AICore().AddConfig("ascend960dt", ...) 注册平台配置 - reverse_sequence CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 增加 "ascend960dt",tiling 目录沿用 arch35 - 新增 ascend960dt 平台二进制编译配置(3 个 *_binary.json)与 reverse_sequence_simplified_key.ini(simplified_key_mode=0);ForeachAddScalarList 覆盖 x∈{float16,float32,int32,bfloat16} 4 种组合,ForeachDivScalar 覆盖 x∈{float16,float32,bfloat16} 3 种组合 - ascendc_config.json 中 ReverseSequence、ForeachAddScalarList、ForeachDivScalar 的 compute_units 增加 ascend960dt ## 关联的Issue - #6669 ## 测试 - 新增 ascend960 平台 binary 编译配置,需在 ascend960 平台完成编译与 ReverseSequence、ForeachAddScalarList、ForeachDivScalar 算子功能验证 ## 文档更新 - 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!11911 | 27 days ago | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !11169 merge nn_all into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用相比于1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6919 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!11169 | 23 days ago | |
feat(scatter/scatter_nd/segment_sum/bucketize_v2): 新增 ascend960支持 Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !11416 merge 960dt into master feat(scatter/scatter_nd/segment_sum/bucketize_v2): 新增 ascend960支持 Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 为 Scatter/ScatterNd/SegmentSum/BucketizeV2 新增 Ascend960DT(A6/arch92,NpuArch DAV_9201)平台支持,950/350/mc62 行为不变。 - **Scatter**:各 SoC 共用单一内核入口,A6 专属 DMA 分支经 #if __NPU_ARCH__ == 9201 编译期门禁生效(SIMD 偏移计算 + ScatterDataCopy 写回,tiling key 101/201); - **ScatterNd**:arch35/arch92 双入口经 op_kernel/CMakeLists.txt 按 SoC 映射(A5 走 arch35,A6 入口额外引入 arch92 DMA 模板,按 isScatterDataCopy 运行时分派 ScatterNdDma);TilingData 尾部追加 DMA 字段(既有字段偏移不变); - **SegmentSum/BucketizeV2**:注册 ascend960dt,复用 950 的 AICore 配置与 arch35 tiling,新增 960dt binary 配置; ## 关联的Issue 关联 Issue #6327 ## 测试 - 编译:960dt能够正常编译,950/350不受影响 - 测试:960dt各kernel功能正常 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11416 | 23 days ago | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 22 days ago | |
feat(index): index_fill_d、inplace_index_fill、scatter_add_with_sorted 新增 Ascend 960 支持 Co-authored-by: CherryRanH<ranhe2@huawei.com> # message auto-generated for no-merge-commit merge: !11592 merge feat/ascend960-index-ops into master feat(index): index_fill_d、inplace_index_fill、scatter_add_with_sorted 新增 Ascend 960 支持 Created-by: CherryRanH Commit-by: CherryRanH Merged-by: cann-robot Description: ## 描述 本 PR 为 index 目录下三个算子新增 Ascend 960产品支持,保持 ascend350/ascend950 现有内容与行为不变,仅增量添加 960 内容。具体改动如下: **1. index_fill_d / inplace_index_fill(纯配置接入)** - op_host/*_def.cpp:新增 AddConfig("ascend960dt")(index_fill_d 另含 ascend960pr),保留原有 950/350 配置 - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 960 计算单元,tiling 仍复用 arch35 目录 - 新增 op_host/config/ascend960dt|ascend960pr/ 配置:binary.json 与 ascend950 保持一致 **2. scatter_add_with_sorted(新增 SIMD_DMA 确定性模板)** - kernel 侧:新增 op_kernel/arch92/ 目录,存放新模板 scatter_add_with_sorted_simd_dma.h、scatter_add_with_sorted_determ_workspace_dma.h(GatherDMA/ScatterDMA 确定性累加实现) - struct.h:新增 TPL_MODE_SIMD_DMA=3 模板注册、2 组 ASCENDC_TPL_SEL 组合及 ScatterAddWithSortedSimdDMATilingData 结构(原 0/1/2 模式取值不变) - tiling 侧:大量复用现有 simd tiling 类,新增 DMA 分核/UB tiling/二分估行等逻辑,通过 tiling_base 中 isAscend96_(NpuArch::DAV_9201 运行期架构判断)隔离,钩入 DoOpTiling/GetTilingKey/SetTilingData/DumpTilingInfo,原 350/950 路径逻辑零修改(diff 为纯新增) - 配置:新增 config/ascend960dt/(binary.json 与 950 一致) ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6900 ## 测试 950/350/960编译出包验证,david冒烟、obp冒烟、950门槛用例,960eslmodel用例验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11592 | 22 days ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !11169 merge nn_all into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用相比于1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6919 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!11169 | 23 days ago | |
feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Co-authored-by: yourealize<chenzhanxi1@huawei.com> # message auto-generated for no-merge-commit merge: !11516 merge codex/index-960-adaptation into master feat(index): 适配 ScatterElementsV2、RepeatInterleave 和 MaskedScatter 的 Ascend 960 Created-by: yourealize Commit-by: yourealize Merged-by: cann-robot Description: ## 描述 为 ScatterElementsV2、RepeatInterleave、MaskedScatter 接入 Ascend 960dt/960pr,使芯片注册、二进制配置、编译入口和 ACLNN 平台分流形成完整适配链路;同时补齐 MaskedScatter 广播所需的 MaskedScatterWithPosition。 参考 [PR #11274](https://gitcode.com/cann/ops-nn/pull/11274) 的 add_kernel_sources(COMPUTE_UNITS ...) 编译选择策略,复用现有 kernel 和 arch35 tiling,不增加算法模板。960 binary 配置沿用当前 master 的 950 契约,保留 Scatter 的 include_self 属性。 - 使用 master 已有的 960dt/pr 公共构建入口,补齐四个算子的 OpDef、binary 配置和 kernel 入口选择。 - 架构判断限定在各算子的 .cpp 内,按 DAV_9201/DAV_9202 识别 960dt/pr;公共 aclnn_util.h、根 CMakeLists.txt 和 build.sh 均无 PR 差异。 - 960 Scatter 走 ScatterElementsV2 通用路径;ScatterAdd、ScatterAddWithSorted、ScatterUpdate 快捷路径仍受原平台条件限制。 - 复用的 arch35 kernel 不处理 include_self=false,因此 960 ScatterReduce 的 add/mul 组合在该参数为 false 时明确返回参数错误,覆盖 inplace/out-of-place 两入口。min/max/mean 保留原有 fallback,本 PR 不声明已验证其 960 支持。 迁移来源:ops-nn-dev/cann_out@f487ac66d1f4523f53886864a14b504fdf1a5357。适配保留目标仓当前实现,不回退到源分支的旧 API 或旧接口契约。 ## 关联的Issue 暂无关联 Issue。编译适配方式参考 PR #11274。 ## 测试 ### 950 编译回归 使用 CANN 9.2.0,目标 Ascend950PR_9599,通过本次源码编译的 Host tiling 库执行实际 asc_opc 编译: | 算子 | binary 配置数 | 结果 | | --- | ---: | --- | | ScatterElementsV2 | 20 | 全部通过 | | RepeatInterleave | 24 | 全部通过 | | MaskedScatter | 4 | 全部通过 | | MaskedScatterWithPosition | 10 | 全部通过 | - 58/58 个配置编译完成,逐项确认 .o 和配套 JSON 均存在且非空,编译日志无错误。 - 正式 ophost_nn、opapi_nn 库编译链接通过。平台判断移到算子内部后,已重新编译并链接 950 的 opapi_nn,并重跑全部相关 API UT,结果保持一致;kernel 源码和编译配置未改变。 - 与未修改基线 8987daa9698bc68c50435b699361beb3f6071ae7 比较,四个算子的 950 OpDef 生成信息,以及 kernel 入口、simplified key、auto_sync、编译选项、impl_mode 均一致。 - 仓库 CMake 配置检查确认 950/350/910B 的入口和 tiling 映射不变,960dt/pr 的新入口与 arch35 映射符合预期。 ### API UT - 新增 5 个测试全部通过,覆盖 DAV_9201/DAV_9202 的 BF16、scalar repeats、普通/expanded index、MaskedScatter 广播与空 source,以及 ScatterReduce 的 include_self 组合。 - 相关全量 API UT:104/106 通过。未修改基线为 99/101 通过,失败的是同样两个旧用例:l2_repeat_interleave_test.l2_repeat_interleave_test_09、l2_repeat_interleave_int_test.l2_repeat_interleave_int_test_09,均返回 161002 而断言期待成功。 - API UT 验证参数和 workspace 构建,不代表设备数值或性能验证。 - bash -n build.sh、git diff --check 通过;独立代码审查的已发现问题均已修复并复核。 ### 尚未完成的验证 本机 CANN 9.2.0 的 SDK 支持列表不含 ascend960dt/pr,两者均在 CMake 配置阶段被明确拒绝。因此 960 kernel 实编译和设备验证仍需支持 960 的工具链完成;未修改 SDK 白名单或伪造平台配置。 ## 文档更新 无。适配范围和验证边界记录于本 PR 描述。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11516 | 23 days ago | |
fix: Move scatter_list_infershape.cpp from canndev Co-authored-by: chenjingxiang<chenjingxiang1@huawei.com> # message auto-generated for no-merge-commit merge: !11771 merge remove_files_br into master fix: Move scatter_list_infershape.cpp from canndev Created-by: chenjingxiang Commit-by: chenjingxiang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 将canndev仓scatter_list_infershape.cpp迁移至ops-nn仓 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 不涉及 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 自验证通过  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11771 | 29 days ago | |
docs(scatter_max/min): 按 A2 图模式实测补充芯片维度数据类型说明 Co-authored-by: bartonfang<fangziyang1@huawei.com> # message auto-generated for no-merge-commit merge: !11154 merge docs-scatter-dtype-a2-a5 into master docs(scatter_max/min): 按 A2 图模式实测补充芯片维度数据类型说明 Created-by: bartonfang Commit-by: bartonfang Merged-by: cann-robot Description: ## 背景 PR #9223 为 scatter_max/min/mul/div、scatter_nd_sub 等 README 的“产品支持情况”补充了 A2/A3 标记,但参数说明中的数据类型只有一套(A5/950 首次适配时写入的 FLOAT16/FLOAT32/INT32/INT8/UINT8),未按芯片区分。本次按**图模式实测**确认 A2/A3 的真实支持范围后修正文档。 ## 实测方法 在 A2(910B3,CANN 25.5.1,device 6)上使用图模式:TF GraphDef(对应 TF 的 ScatterMax/Min/Div/Mul/NdSub 算子)→ atc --framework=3 --soc=Ascend910B3 编译 om → aclmdl 加载执行,输出与 CPU 参考对拍。ONNX 可表达的 ScatterElements/ScatterND 用 ONNX→ATC 同样跑通。 ## 实测结果(A2,图模式,✅=编译+执行+对拍通过,✗=ATC/GE 编译失败) | 算子 | FLOAT16 | FLOAT32 | INT32 | INT64 | DOUBLE | INT8 | UINT8 | INT16 | BOOL | |---|---|---|---|---|---|---|---|---|---| | ScatterMax | ✅ | ✅ | ✅ | ✅ | ✅ | ✗ | ✗ | ✗ | ✗ | | ScatterMin | ✅ | ✅ | ✅ | ✅ | ✅ | ✗ | ✗ | ✗ | ✗ | | ScatterDiv | ✅ | ✅ | ✅ | ✗ | ✗ | ✅ | ✅ | ✗ | ✗ | | ScatterMul | ✅ | ✅ | ✅ | ✗ | ✗ | ✅ | ✅ | ✗ | ✗ | | ScatterNdSub | ✅ | ✅ | ✅ | ✗ | ✗ | ✅ | ✅ | ✗ | ✗ | | ScatterElements(ONNX图) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | ScatterND(ONNX图) | ✅ | ✅ | ✅ | 待补 | ✅ | ✅ | ✅ | ✅ | ✅ | (ScatterDiv 的 FLOAT32 在 ATC 编译与执行均成功,与 CPU 参考的差异来自浮点精度,非不支持。) ## 本次改动(2 个文件) - index/scatter_max/README.md - index/scatter_min/README.md 在参数说明表格后补充芯片维度说明: - Ascend 950PR/Ascend 950DT:支持 FLOAT16、FLOAT32、INT32、INT8、UINT8; - Atlas A2/A3:支持 FLOAT16、FLOAT32、INT32、INT64、DOUBLE,**不支持 INT8、UINT8**。 ## 其它算子的处理 - scatter_div / scatter_mul / scatter_nd_sub:实测支持 FLOAT16/FLOAT32/INT32/INT8/UINT8,与 README 表格一致,因此**撤销**了先前基于发布配置加的 A2/A3 限制说明,本次不再改动这三个文件。 - scatter_add/sub、scatter_nd_add/max/min/update、scatter_elements(_v2) 等:README 为 aclnn 接口支持范围(含 AICPU/其它实现兜底),与 kernel 发布列表不是同一口径,建议后续按同样方法逐个实测后再决定是否补充说明。 See merge request: cann/ops-nn!11154 | 1 month ago | |
heaviside等算子workpace分配空间整改 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !12164 merge workspace into master heaviside等算子workpace分配空间整改 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> heaviside等算子将workpace分配空间整改为0 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6902 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12164 | 23 days ago | |
docs(scatter_max/min): 按 A2 图模式实测补充芯片维度数据类型说明 Co-authored-by: bartonfang<fangziyang1@huawei.com> # message auto-generated for no-merge-commit merge: !11154 merge docs-scatter-dtype-a2-a5 into master docs(scatter_max/min): 按 A2 图模式实测补充芯片维度数据类型说明 Created-by: bartonfang Commit-by: bartonfang Merged-by: cann-robot Description: ## 背景 PR #9223 为 scatter_max/min/mul/div、scatter_nd_sub 等 README 的“产品支持情况”补充了 A2/A3 标记,但参数说明中的数据类型只有一套(A5/950 首次适配时写入的 FLOAT16/FLOAT32/INT32/INT8/UINT8),未按芯片区分。本次按**图模式实测**确认 A2/A3 的真实支持范围后修正文档。 ## 实测方法 在 A2(910B3,CANN 25.5.1,device 6)上使用图模式:TF GraphDef(对应 TF 的 ScatterMax/Min/Div/Mul/NdSub 算子)→ atc --framework=3 --soc=Ascend910B3 编译 om → aclmdl 加载执行,输出与 CPU 参考对拍。ONNX 可表达的 ScatterElements/ScatterND 用 ONNX→ATC 同样跑通。 ## 实测结果(A2,图模式,✅=编译+执行+对拍通过,✗=ATC/GE 编译失败) | 算子 | FLOAT16 | FLOAT32 | INT32 | INT64 | DOUBLE | INT8 | UINT8 | INT16 | BOOL | |---|---|---|---|---|---|---|---|---|---| | ScatterMax | ✅ | ✅ | ✅ | ✅ | ✅ | ✗ | ✗ | ✗ | ✗ | | ScatterMin | ✅ | ✅ | ✅ | ✅ | ✅ | ✗ | ✗ | ✗ | ✗ | | ScatterDiv | ✅ | ✅ | ✅ | ✗ | ✗ | ✅ | ✅ | ✗ | ✗ | | ScatterMul | ✅ | ✅ | ✅ | ✗ | ✗ | ✅ | ✅ | ✗ | ✗ | | ScatterNdSub | ✅ | ✅ | ✅ | ✗ | ✗ | ✅ | ✅ | ✗ | ✗ | | ScatterElements(ONNX图) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | ScatterND(ONNX图) | ✅ | ✅ | ✅ | 待补 | ✅ | ✅ | ✅ | ✅ | ✅ | (ScatterDiv 的 FLOAT32 在 ATC 编译与执行均成功,与 CPU 参考的差异来自浮点精度,非不支持。) ## 本次改动(2 个文件) - index/scatter_max/README.md - index/scatter_min/README.md 在参数说明表格后补充芯片维度说明: - Ascend 950PR/Ascend 950DT:支持 FLOAT16、FLOAT32、INT32、INT8、UINT8; - Atlas A2/A3:支持 FLOAT16、FLOAT32、INT32、INT64、DOUBLE,**不支持 INT8、UINT8**。 ## 其它算子的处理 - scatter_div / scatter_mul / scatter_nd_sub:实测支持 FLOAT16/FLOAT32/INT32/INT8/UINT8,与 README 表格一致,因此**撤销**了先前基于发布配置加的 A2/A3 限制说明,本次不再改动这三个文件。 - scatter_add/sub、scatter_nd_add/max/min/update、scatter_elements(_v2) 等:README 为 aclnn 接口支持范围(含 AICPU/其它实现兜底),与 kernel 发布列表不是同一口径,建议后续按同样方法逐个实测后再决定是否补充说明。 See merge request: cann/ops-nn!11154 | 1 month ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !11169 merge nn_all into master 【mc62】tiling侧workspaceSize硬编码16M大小,替换为通过接口获取,ascendcPlatform.GetLibApiWorkSpaceSize(); Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 1. 背景:mc62算子workspace占用相比于1951增大 2. 由于mc62代码和A5是onetrack, 所有workspacesize硬编码为16M, 在mc62上也同样是16M,asc 提供接口,对mc62进行区分,从原来的16M 变成1K,A5和A2大小不变。 3. 修改:算子侧tiling中硬编码为16M大小的workspacesize统一改为用接口获取。 GetLibApiWorkSpaceSize实现如下: const static uint32_t WORK_SPACE_SIZE_910B = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE_950 = 16 * 1024 * 1024; const static uint32_t WORK_SPACE_SIZE = 1024; uint32_t PlatformAscendC::GetLibApiWorkSpaceSize(void) const { auto npuArch = GetCurNpuArch(); if (npuArch == NpuArch::DAV_RESV) { PF_LOGE("get platform failed, CurNpuArch is NpuArch::DAV_RESV"); return -1; } else if (npuArch == NpuArch::DAV_2201) { return WORK_SPACE_SIZE_910B; } else if (npuArch == NpuArch::DAV_3510) { return WORK_SPACE_SIZE_950; } return WORK_SPACE_SIZE; } ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6919 ## 测试 1.单算子框架测试通过 2.二级冒烟通过 文档更新 类型标签 - [x] Bug修复 See merge request: cann/ops-nn!11169 | 23 days ago | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 22 days ago | |
Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Co-authored-by: 张鑫<zhangxin660@h-partners.com> # message auto-generated for no-merge-commit merge: !11408 merge REG_OP_Gather into master Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Created-by: z30075199 Commit-by: 张鑫 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend960适配gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6762 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 批跑用例ok 冒烟ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11408 | 23 days ago | |
Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Co-authored-by: 张鑫<zhangxin660@h-partners.com> # message auto-generated for no-merge-commit merge: !11408 merge REG_OP_Gather into master Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Created-by: z30075199 Commit-by: 张鑫 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend960适配gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6762 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 批跑用例ok 冒烟ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11408 | 23 days ago | |
Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Co-authored-by: 张鑫<zhangxin660@h-partners.com> # message auto-generated for no-merge-commit merge: !11408 merge REG_OP_Gather into master Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Created-by: z30075199 Commit-by: 张鑫 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend960适配gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6762 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 批跑用例ok 冒烟ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11408 | 23 days ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
workspacesize 修改引入,workspaceSize 多加了"_" Co-authored-by: xufeng12121<1074805447@qq.com> # message auto-generated for no-merge-commit merge: !12381 merge bufff into master workspacesize 修改引入,workspaceSize 多加了"_" Created-by: xufeng12121 Commit-by: xufeng12121 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> workspacesize 修改引入,workspaceSize 多加了"_" ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6954 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12381 | 22 days ago | |
heaviside等算子workpace分配空间整改 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !12164 merge workspace into master heaviside等算子workpace分配空间整改 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> heaviside等算子将workpace分配空间整改为0 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6902 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12164 | 23 days ago | |
ScatterMul/Div/Max/Min 排序路径改直排 int64 key,消除 var 首维能力上限 Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !10655 merge feat/scatter-int64-index into master ScatterMul/Div/Max/Min 排序路径改直排 int64 key,消除 var 首维能力上限 Created-by: zl_hw Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!10655 | 1 month ago | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 22 days ago | |
inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt Co-authored-by: xiaodong666<yuanxiaodong6@huawei.com> # message auto-generated for no-merge-commit merge: !11639 merge dv121_to_master into master inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt Created-by: xiaodong666 Commit-by: xiaodong666 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#6780](https://gitcode.com/cann/ops-nn/issues/6780) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例和冒烟的验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11639 | 23 days ago | |
feat(scatter/scatter_nd/segment_sum/bucketize_v2): 新增 ascend960支持 Co-authored-by: zhang-wenbo-beat<zhangwenbo67@huawei.com> # message auto-generated for no-merge-commit merge: !11416 merge 960dt into master feat(scatter/scatter_nd/segment_sum/bucketize_v2): 新增 ascend960支持 Created-by: zhang-wenbo-beat Commit-by: zhang-wenbo-beat Merged-by: cann-robot Description: ## 描述 为 Scatter/ScatterNd/SegmentSum/BucketizeV2 新增 Ascend960DT(A6/arch92,NpuArch DAV_9201)平台支持,950/350/mc62 行为不变。 - **Scatter**:各 SoC 共用单一内核入口,A6 专属 DMA 分支经 #if __NPU_ARCH__ == 9201 编译期门禁生效(SIMD 偏移计算 + ScatterDataCopy 写回,tiling key 101/201); - **ScatterNd**:arch35/arch92 双入口经 op_kernel/CMakeLists.txt 按 SoC 映射(A5 走 arch35,A6 入口额外引入 arch92 DMA 模板,按 isScatterDataCopy 运行时分派 ScatterNdDma);TilingData 尾部追加 DMA 字段(既有字段偏移不变); - **SegmentSum/BucketizeV2**:注册 ascend960dt,复用 950 的 AICore 配置与 arch35 tiling,新增 960dt binary 配置; ## 关联的Issue 关联 Issue #6327 ## 测试 - 编译:960dt能够正常编译,950/350不受影响 - 测试:960dt各kernel功能正常 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11416 | 23 days ago | |
Feature: 为 index 和 pooling 类算子新增 Ascend350 平台支持 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !9754 merge dev_zl_2026_0902 into master Feature: 为 index 和 pooling 类算子新增 Ascend350 平台支持 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 为 index 和 pooling 类算子新增 Ascend350 平台支持。具体变更包括: 1. **新增 Ascend350 平台配置文件**(42 个 JSON):为每个算子新增 op_host/config/ascend350/ 下的二进制配置 JSON 2. **注册 Ascend350 平台**:在各算子 _def.cpp 中添加 his->AICore().AddConfig(ascend350, aicoreConfig) 3. **更新编译配置**:修改各算子 CMakeLists.txt,添加 Ascend350 编译选项;更新 scendc_config.json 中对应算子的 compute_units 列表,将 [ascend950] 扩展为 [ascend950, ascend350] 4. **更新 Fusion Pass 平台判断**:在 bucketize_v2_fusion_pass、inplace_add_fusion_pass、gather_fusion_pass、tensor_scatter_add_fusion_pass、sorted_sparse_segment_mean_grad_fusion_pass 中将 Ascend350 加入平台白名单 涉及算子(35+): - index: bucketize_v2, concat_offset, gather_elements, gather_nd, gather_v2, index_fill, index_fill_d, index_put_v2, inplace_index_add, inplace_index_fill, linear_index_v2, masked_scatter, repeat_interleave, reverse_sequence, reverse_v2, scatter, scatter_add, scatter_add_with_sorted, scatter_elements, scatter_elements_v2, scatter_nd, scatter_nd_add, scatter_nd_max, scatter_nd_min, scatter_nd_update, scatter_sub, scatter_update, segment_sum, sorted_sparse_segment_mean_grad, sparse_segment_mean, sparse_to_dense, unsorted_segment_max, unsorted_segment_min - pooling: avg_pool, avg_pool_v2 - 公共库: scatter_nd_common, unsorted_segment_common, sort_lib ## 关联的Issue - #5651 ## 测试 obp冒烟、david冒烟已通过 ## 文档更新 NA ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9754 | 1 month ago | |
inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt Co-authored-by: xiaodong666<yuanxiaodong6@huawei.com> # message auto-generated for no-merge-commit merge: !11639 merge dv121_to_master into master inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt Created-by: xiaodong666 Commit-by: xiaodong666 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> inplace_index_add、scatter_update、sparse_segment_mean_grad 算子支持 Ascend960dt ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> 关联Issue [#6780](https://gitcode.com/cann/ops-nn/issues/6780) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> st用例和冒烟的验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11639 | 23 days ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Co-authored-by: 张鑫<zhangxin660@h-partners.com> # message auto-generated for no-merge-commit merge: !11408 merge REG_OP_Gather into master Add gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean to Ascend960 Created-by: z30075199 Commit-by: 张鑫 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Ascend960适配gather_v2,scatter_nd_max,scatter_nd_min,sparse_segment_mean算子 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6762 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> 批跑用例ok 冒烟ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11408 | 23 days ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
feat: 增加 ascend350 平台支持(22 个算子) Co-authored-by: wenqi_wu<wenqiwu0628@163.com> # message auto-generated for no-merge-commit merge: !11038 merge adapt-ascend350 into master feat: 增加 ascend350 平台支持(22 个算子) Created-by: wenqi_wu Commit-by: wenqi_wu Merged-by: cann-robot Description: ## 描述 为 22 个算子增加 ascend350(arch35)平台支持,并将 Threshold 的 aclnn 接口 SocVersion BF16 判断重构为 NpuArch 判断。 算子列表(22 个): - activation: Relu6D、SoftplusGrad、Threshold - index: InplaceUpdate、ScatterNonAliasingAdd、SparseSegmentSumGrad - loss: SmoothL1Loss、SmoothL1LossGrad - norm: LpNormUpdate - optim: FusedMulApplyMomentum、FusedMulApplyMomentumExtern、SparseApplyAdadelta、SparseApplyFtrl、SparseApplyFtrlV2、SparseApplyProximalAdagrad、SparseApplyRMSProp - pooling: Dilation2D - quant: ActULQClampMaxGrad、ActULQClampMinGrad、ActsULQInputGrad、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis 改动内容: 1. CMakeLists:SUPPORT_COMPUTE_UNIT 追加 ascend350,SUPPORT_TILING_DIR 追加 arch35; 2. op_host/*_def.cpp:追加 AICore().AddConfig("ascend350", ...); 3. op_kernel/CMakeLists:COMPUTE_UNITS 追加 ascend350; 4. 3 个算子复制 op_host/config/ascend950/*.json 到 ascend350/(ScatterNonAliasingAdd、GroupedDynamicMxQuantWithDualAxis、SwigluBackwardMxQuantWithDualAxis); 5. Threshold op_api/aclnn_threshold.cpp:GetDtypeSupportList 的 SocVersion 判断重构为 NpuArch 判断。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6131 ## 测试 <!--TODO--> ## 文档更新 无需更新文档 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!11038 | 23 days ago | |
DynamicQuant等22个算子支持Ascend960dt Co-authored-by: TH_HW<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !11335 merge backBlue into master DynamicQuant等22个算子支持Ascend960dt Created-by: TH_HW Commit-by: TH_HW Merged-by: cann-robot Description: ## 描述 (+17812 / -2151)为一批 ops-nn 算子补齐 **Ascend 960DT(NPU Arch 9201)** 平台支持,并重构 GeGluV2 arch35 内核、为 Erfinv 增加 inplace 通路。 主要改动如下: 1. **Ascend960DT 平台适配(22 个算子)** - activation:Relu、ReluV2、ReluGrad、ReluGradV2、Sigmoid、SigmoidGrad、PRelu、PReluGradUpdate、SiluGrad、Softplus、Swish、SwishGrad、SwiGluGrad、GeGluV2。 - index:MapIndex、SparseSlice、QuantUpdateScatter。 - quant:Quantize、DynamicQuant、DynamicQuantV2、AntiMxQuant、GroupedDynamicMxQuant。 - 具体做法:CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT / SUPPORT_TILING_DIR 增加 ascend960dt;*_def.cpp 增加 AddConfig("ascend960dt", ...);aclnn/op_api 与 infershape 增加 NpuArch::DAV_9201 / Ascend960DT 分支;kernel 增加 __NPU_ARCH__ == 9201 分支;新增 op_host/config/ascend960dt/ 下的算子二进制配置(共 22 个,如 relu_binary.json、p_relu.json 等);scripts/kernel/binary_config/ascendc_config.json 为相关算子登记 ascend960dt 计算单元与编译选项。 2. **GeGluV2 arch35 内核重构** - 将 arch35 模板按 erf / tanh 两类拆分,并补齐 align、align_last_axis_big、vreduce × fp16/bf16/fp32 变体,统一命名 *_arch35.h。 - tiling 新增 RegBase per-template per-element UB 预算模型(GetRegbasePerElem),并支持 ascend960dt。 - aclnnGeGlu 参数校验重构(CheckShape 支持 0D 输入与 dim 范围校验),新增 ST 用例(all_aclnnGeGlu(.V3).json)并调整 UT。 3. **Erfinv 支持 inplace**:新增 inplace dtype 支持列表与校验(GetInplaceDtypeSupportList / CheckInplaceDtypeValid),并补充 op_api UT。 4. **内核与接口修复** - SparseSlice:9201 路径改用 SetValue 写入 sliceStart/sliceEnd(替代 DataCopy),Reg::Reduce 使用完整命名空间限定。 - QuantUpdateScatter:9201 增加 FLOAT_OVERFLOW_MODE_CTRL 保护。 - ReluV2 infershape:Ascend960DT 不支持 NC1HWC0,UINT1 支持列表加入 Ascend960DT。 - DynamicQuant / Mx 量化:9201 上 fp8 scale 改为 bf16 乘法后再 cast 到 e8m0。 5. **代码规范**:统一 License 头注释格式、补齐文件末尾换行、调整 quant 系列 UT 的 CMakeLists;新增 MapIndex、SparseSlice 的 GE IR 图模式示例。 ## 关联的Issue 无。 ## 测试 - 新增 GeGluV2 ST 用例与 Erfinv inplace UT,补充/调整 GeGluV2 相关 UT。 - 新增 MapIndex / SparseSlice 的 GE IR 示例(examples/test_geir_*.cpp)。 - 通过 ascend960dt 编译与静态检查。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] 新特性 - [ ] Bug修复 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!11335 | 21 days ago | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 22 days ago | |
[CANNBot]新增TensorScatterSub算子 Co-authored-by: xuejinghui<xuejinghui@huawei.com> # message auto-generated for no-merge-commit merge: !11012 merge tensor_scatter_sub_migration into master [CANNBot]新增TensorScatterSub算子 Created-by: xuejinghui Commit-by: xuejinghui Merged-by: cann-robot Description: ## 描述 950新增TensorScatterSub算子 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6302 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 已进行200+ ST用例测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11012 | 1 month ago | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 30 days ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
topktoppsample算子A2/A3合并config整改 Co-authored-by: 陈赵旻熠<chenzhaominyi1@huawei.com> # message auto-generated for no-merge-commit merge: !12334 merge master into master topktoppsample算子A2/A3合并config整改 Created-by: zerosaki_admin Commit-by: 陈赵旻熠 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 对 TopKTopPSample 与 TopKTopPSampleV2 两个算子的 binary 配置文件进行整改,将 A2(ascend910b)与 A3(ascend910_93)两套配置中的 bin_filename 命名统一为不含平台标识的通用名称 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6928](https://gitcode.com/cann/ops-nn/issues/6928) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> atk验证ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12334 | 22 days ago | |
topktoppsample算子A2/A3合并config整改 Co-authored-by: 陈赵旻熠<chenzhaominyi1@huawei.com> # message auto-generated for no-merge-commit merge: !12334 merge master into master topktoppsample算子A2/A3合并config整改 Created-by: zerosaki_admin Commit-by: 陈赵旻熠 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 对 TopKTopPSample 与 TopKTopPSampleV2 两个算子的 binary 配置文件进行整改,将 A2(ascend910b)与 A3(ascend910_93)两套配置中的 bin_filename 命名统一为不含平台标识的通用名称 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#6928](https://gitcode.com/cann/ops-nn/issues/6928) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> atk验证ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12334 | 22 days ago | |
fix(unique): 修复标杆语义与 tiling 整数边界,补齐 eager/GEIR 验证 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !12026 merge master into master fix(unique): 修复标杆语义与 tiling 整数边界,补齐 eager/GEIR 验证 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 Unique 的既有标杆未完整区分 ACLNN、Torch eager 与 GEIR 的输出语义,部分 dtype、无序输出、NaN 和正负零场景会影响比对准确性;UniqueWithCountsAndSorting 的 tiling 还存在无符号运算回绕及窄化转换风险。本 PR 修复上述问题,并补齐通路用例。 - 修复 aclnnUnique / aclnnUnique2 标杆,处理 bool、float64 的首次出现顺序,以及扩展无符号类型、NaN 逆索引、正负零和输出容量语义。bool/float64 fallback 使用向量化处理,避免逐元素 Python 遍历;优先使用 torch.unique,仅对缺少原生支持或语义不一致的场景保留 NumPy fallback。 - 按通路分别提供 golden、third_party 适配和精度标准;third_party 的计时调用直接执行原生 torch.unique,不混入转换、复制或 padding。将 UniqueWithCountsAndSorting 的 kernel/GEIR 标杆统一维护在 tests/assets/golden.py,按通路分别比对有效输出及动态 shape。新增 eager、GEIR 各 58 条用例,CSV 放在 tests/st/arch35,覆盖 dtype、属性组合、多维输入、特殊值和顺序语义。GEIR 保持既有计算通路, - 修复 arch35 tiling 的对齐结果累加、缓冲区大小、尾核长度及 compact tile 调整中的整数边界:在求和和窄化前限制范围,防止资源预算扣减下溢,并保持 tile ID 在 kernel 可表示范围内。新增 Host UT,覆盖规划切换点、超大输入 tile 数及 UB 不足场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6187 ## 测试 | 通路/接口 | 结果 | | --- | --- | | ACLNN aclnnUnique | 655/655 精度 PASS | | ACLNN aclnnUnique2 | 633/633 精度 PASS | | Torch eager | 58/58 精度 PASS | | UniqueWithCountsAndSorting kernel release | 38/38 精度及内存哨兵 PASS | | UniqueWithCountsAndSorting GEIR(静态/动态执行) | 58/58 精度 PASS | ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补齐 eager/GEIR 用例、通路标杆和 tiling 边界 UT。 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12026 | 27 days ago | |
[agent] [Requirement|需求建议]: 补齐 UniqueConsecutive 的 TTK golden 与动态输出验证 Co-authored-by: huang-qiang<huangqiang3@huawei.com> # message auto-generated for no-merge-commit merge: !11148 merge agent/issue-95 into master [agent] [Requirement|需求建议]: 补齐 UniqueConsecutive 的 TTK golden 与动态输出验证 Created-by: huang-qiang Commit-by: huang-qiang Merged-by: cann-robot Description: 由 agent 自动创建。 全部阶段已通过人工确认并真正完成:需求分析、方案设计(P1–P4 均以源码行级证据闭环)、编码实现(golden.py + 60+ 离线断言全过 + torch 交叉核对)、测试验证(pre-commit 全绿、提交到 agent/issue-95、未 push)。真实 NPU ST 精度已按要求标注为待实测。 补齐 UniqueConsecutive 的 TTK golden 与动态输出验证 https://gitcode.com/cann/ops-nn/issues/6868 TASK_COMPLETE See merge request: cann/ops-nn!11148 | 21 days ago | |
将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Co-authored-by: 18811725231<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !9549 merge master into master 将卷积和matmul的ut根据版本隔离开, 整改950 ophost ut Created-by: yang-di52 Commit-by: 18811725231 Merged-by: cann-robot Description: ## 描述 主要修改内容: 1. nn仓完成和legacy common 动态库解耦后,卷积和matmul的不同版本 ophost ut 已经不能混合一起跑了。需要版本隔离 2. ascend950的ut全量编译 失败,需要修改 ## 关联的Issue [https://gitcode.com/cann/ops-nn/issues/5425](https://gitcode.com/cann/ops-nn/issues/5425) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!9549 | 2 months ago | |
fix(unique): 修复标杆语义与 tiling 整数边界,补齐 eager/GEIR 验证 Co-authored-by: ConanHuang<huangxiaobin1@huawei.com> # message auto-generated for no-merge-commit merge: !12026 merge master into master fix(unique): 修复标杆语义与 tiling 整数边界,补齐 eager/GEIR 验证 Created-by: ConanHuang Commit-by: ConanHuang Merged-by: cann-robot Description: ## 描述 Unique 的既有标杆未完整区分 ACLNN、Torch eager 与 GEIR 的输出语义,部分 dtype、无序输出、NaN 和正负零场景会影响比对准确性;UniqueWithCountsAndSorting 的 tiling 还存在无符号运算回绕及窄化转换风险。本 PR 修复上述问题,并补齐通路用例。 - 修复 aclnnUnique / aclnnUnique2 标杆,处理 bool、float64 的首次出现顺序,以及扩展无符号类型、NaN 逆索引、正负零和输出容量语义。bool/float64 fallback 使用向量化处理,避免逐元素 Python 遍历;优先使用 torch.unique,仅对缺少原生支持或语义不一致的场景保留 NumPy fallback。 - 按通路分别提供 golden、third_party 适配和精度标准;third_party 的计时调用直接执行原生 torch.unique,不混入转换、复制或 padding。将 UniqueWithCountsAndSorting 的 kernel/GEIR 标杆统一维护在 tests/assets/golden.py,按通路分别比对有效输出及动态 shape。新增 eager、GEIR 各 58 条用例,CSV 放在 tests/st/arch35,覆盖 dtype、属性组合、多维输入、特殊值和顺序语义。GEIR 保持既有计算通路, - 修复 arch35 tiling 的对齐结果累加、缓冲区大小、尾核长度及 compact tile 调整中的整数边界:在求和和窄化前限制范围,防止资源预算扣减下溢,并保持 tile ID 在 kernel 可表示范围内。新增 Host UT,覆盖规划切换点、超大输入 tile 数及 UB 不足场景。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/6187 ## 测试 | 通路/接口 | 结果 | | --- | --- | | ACLNN aclnnUnique | 655/655 精度 PASS | | ACLNN aclnnUnique2 | 633/633 精度 PASS | | Torch eager | 58/58 精度 PASS | | UniqueWithCountsAndSorting kernel release | 38/38 精度及内存哨兵 PASS | | UniqueWithCountsAndSorting GEIR(静态/动态执行) | 58/58 精度 PASS | ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:补齐 eager/GEIR 用例、通路标杆和 tiling 边界 UT。 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12026 | 27 days ago | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 month ago | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 22 days ago | |
UnsortedSegmentMax算子资料错字修改 Co-authored-by: zhangxiyan7<zhangxiyan7@huawei.com> # message auto-generated for no-merge-commit merge: !11833 merge master into master UnsortedSegmentMax算子资料错字修改 Created-by: zhangxiyan7 Commit-by: zhangxiyan7 Merged-by: cann-robot Description: ## 描述 「改值」应为「该值」:此处指代前文提到的负值ID,应用指示代词「该」 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6413 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 README.md文件错别字修改 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11833 | 29 days ago | |
Merge Ascend960 code Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !11501 merge scatter_add into master Merge Ascend960 code Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 合并Ascend960的ScatterAdd,ScatterSub,ScatterNdAdd,SparseToDense,UnsortedSegmentMin代码至主线 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6897 ## 测试 Ascend950,Ascend960环境批跑用例OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:合并Ascend960代码 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11501 | 22 days ago | |
修复UnsortedSegmentProd算子空Tensor用例精度问题 Co-authored-by: zhangxiyan7<zhangxiyan7@huawei.com> # message auto-generated for no-merge-commit merge: !11640 merge master into master 修复UnsortedSegmentProd算子空Tensor用例精度问题 Created-by: zhangxiyan7 Commit-by: zhangxiyan7 Merged-by: cann-robot Description: ## 描述 空Tensor(dataShapeSize_==0)时, UnsortedSegmentProdOutFlTiling::IsCapable直接返回true, 绕过了OutFl模板的dtype支持性检查。当x为uint64/uint32/int64等OutFl不支持的dtype时, KernelOutFlDispatch的if constexpr分支直接return, 连输出初始化(填乘法单位元1)都不执行, 导致空Tensor用例输出全0。需要空Tensor时返回IsSupportDtype(), 不支持dtype回落到SplitCol/Simt模板正确写初值1。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6436 ## 测试 问题用例pass,泛化用例pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11640 | 1 month ago | |
fix(unsorted_segment_sum): 修复 uss 算子 golden 的三方比对参考实现 Co-authored-by: aiteer<lujiale4@huawei.com> # message auto-generated for no-merge-commit merge: !12090 merge unsorted_segment_sum_third_party into master fix(unsorted_segment_sum): 修复 uss 算子 golden 的三方比对参考实现 Created-by: aiteer Commit-by: aiteer Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> * UnsortedSegmentSum算子golden无法统计竞品性能,该pr修复 uss 算子 golden 的三方比对参考实现 * 本次竞品采集仅针对 aclnn 通路,kernel 通路不在本次范围 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> [#7002](https://gitcode.com/cann/ops-nn/issues/7002) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ttk三方测试 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!12090 | 22 days ago | |
where融合规则添加960dt Co-authored-by: xiapengcheng5<xiapengcheng5@huawei.com> # message auto-generated for no-merge-commit merge: !12091 merge master into master where融合规则添加960dt Created-by: xiapengcheng5 Commit-by: xiapengcheng5 Merged-by: cann-robot Description: ## 描述 where算子融合规则添加960dt平台 ## 关联的Issue [#6765](https://gitcode.com/cann/ops-nn/issues/6765) ## 测试 冒烟、本地测试已过。 ## 文档更新 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!12091 | 24 days ago | |
License Change Split2 Co-authored-by: huohuo_wy<wangyan389@huawei.com> # message auto-generated for no-merge-commit merge: !371 merge spilit2License3 into master License Change Split2 Created-by: huohuo_wangyan Commit-by: huohuo_wy Merged-by: cann-robot Description: ## 描述 批量整改文件copyright注释 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/177 ## 测试 COPYRIGHT注释头按新要求刷新 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!371 | 10 months ago |
| Files | Last commit | Last update |
|---|---|---|
| 1 month ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 27 days ago | ||
| 30 days ago | ||
| 23 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 28 days ago | ||
| 22 days ago | ||
| 22 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 1 month ago | ||
| 23 days ago | ||
| 27 days ago | ||
| 24 days ago | ||
| 23 days ago | ||
| 4 months ago | ||
| 22 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 22 days ago | ||
| 4 months ago | ||
| 21 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 30 days ago | ||
| 1 month ago | ||
| 23 days ago | ||
| 26 days ago | ||
| 22 days ago | ||
| 27 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 21 days ago | ||
| 30 days ago | ||
| 22 days ago | ||
| 21 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 27 days ago | ||
| 21 days ago | ||
| 4 months ago | ||
| 21 days ago | ||
| 21 days ago | ||
| 1 month ago | ||
| 30 days ago | ||
| 30 days ago | ||
| 21 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 27 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 22 days ago | ||
| 22 days ago | ||
| 1 month ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 29 days ago | ||
| 1 month ago | ||
| 23 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 23 days ago | ||
| 22 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 23 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 23 days ago | ||
| 23 days ago | ||
| 1 month ago | ||
| 23 days ago | ||
| 30 days ago | ||
| 23 days ago | ||
| 30 days ago | ||
| 30 days ago | ||
| 23 days ago | ||
| 21 days ago | ||
| 22 days ago | ||
| 1 month ago | ||
| 30 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 22 days ago | ||
| 27 days ago | ||
| 21 days ago | ||
| 2 months ago | ||
| 27 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 29 days ago | ||
| 22 days ago | ||
| 1 month ago | ||
| 22 days ago | ||
| 24 days ago | ||
| 10 months ago |