| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
批量修改md中冗余空格 Co-authored-by: wuyao51511<wuyao61@h-partners.com> # message auto-generated for no-merge-commit merge: !6027 merge master into master 批量修改md中冗余空格 Created-by: wuyao51511 Commit-by: wuyao51511 Merged-by: cann-robot Description: ## 描述 文档空格问题清理 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!6027 | 3 个月前 | |
A5 support index unique_consecutive dynamic_mx_quant Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !516 merge master into master A5 support index unique_consecutive dynamic_mx_quant Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!516 | 8 个月前 | |
A5 support index unique_consecutive dynamic_mx_quant Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !516 merge master into master A5 support index unique_consecutive dynamic_mx_quant Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!516 | 8 个月前 | |
UniqueConsecutive算子workspace内存优化 Co-authored-by: wkx12138<weikaixuan@h-partners.com> # message auto-generated for no-merge-commit merge: !5296 merge uc into master UniqueConsecutive算子workspace内存优化 Created-by: wkx12138 Commit-by: wkx12138 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ### 背景 UniqueConsecutive 算子在多核场景下,原有实现采用"两阶段"方案: 1. **Collecting 阶段**:每个核将去重后的 value 和 idx 写入 GM workspace 2. **Merging 阶段**:从 workspace 读回 value/idx,计算 count 后写出到最终输出 这导致 workspace 大小与 totalSize 成正比(sizeof(T)*totalSize + sizeof(idx)*totalSize + coreWorkSpace),在大 shape 场景下占用大量 GM 内存。 ### 优化方案 将两阶段方案改为"计数+重放"方案,彻底消除 value/idx 的中间 workspace: 1. **Collecting 阶段(仅计数)**:新增 CountAdjacentNe 向量化函数,利用 Compare + Select + ReduceSum 指令直接在 UB 内统计相邻不等元素个数,仅将每核的 collectNum 和 lastUniqueIdx 写入极小的 per-core workspace(16 * coreNum * sizeof(int64_t)) 2. **Merging 阶段(重放写出)**:重新从原始输入读取数据,执行 CollectPostUniqueValue / CollectPostUniqueIdx 后直接写出到输出 GM,无需中间 workspace ### 具体改动 | 文件 | 改动说明 | |------|----------| | unique_consecutive_tiling_arch35.cpp/h | 移除 idxWorkSpace_ / valueWorkSpace_ 计算;workspace 从 sysWorkspace + idxWs + valueWs + coreWs 简化为 sysWorkspace + coreWs;单核场景 workspace 从 1 改为 0;修复 useCoreNums_==0 边界处理;重命名 idxCopyInQueueSize → idxQueueSize | | unique_consecutive_constant.h | 新增 CORE_COLLECT_NUM_OFFSET、CORE_LAST_UNIQUE_IDX_OFFSET 常量,定义 per-core workspace 布局 | | unique_consecutive_helper.h | 新增 VFCountAdjacentNe / VFCountAdjacentNeB64 / CountAdjacentNe 三个模板函数,支持 int8/int16/int32/int64 等类型的向量化相邻不等计数 | | unique_consecutive_multi_core_kernel.h | 重构多核 kernel:Collecting 阶段改为仅计数+记录末位 idx;Merging 阶段改为重放写出;移除 valueWorkspaceGm_ / idxWorkspaceGm_ / idxWorkspaceStartGm_ 等 workspace GlobalTensor;合并为单一的 coreCollectWorkspaceGm_ | ### 效果 - **Workspace 内存**:从 O(totalSize) 降至 O(coreNum),大幅减少 GM 占用 - **数据流简化**:消除了 Collecting→workspace→Merging 的 GM 读写往返,减少 MTE 搬运开销 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟:通过 obp冒烟:通过 ST:通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5296 | 3 个月前 | |
UniqueConsecutive算子workspace内存优化 Co-authored-by: wkx12138<weikaixuan@h-partners.com> # message auto-generated for no-merge-commit merge: !5296 merge uc into master UniqueConsecutive算子workspace内存优化 Created-by: wkx12138 Commit-by: wkx12138 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ### 背景 UniqueConsecutive 算子在多核场景下,原有实现采用"两阶段"方案: 1. **Collecting 阶段**:每个核将去重后的 value 和 idx 写入 GM workspace 2. **Merging 阶段**:从 workspace 读回 value/idx,计算 count 后写出到最终输出 这导致 workspace 大小与 totalSize 成正比(sizeof(T)*totalSize + sizeof(idx)*totalSize + coreWorkSpace),在大 shape 场景下占用大量 GM 内存。 ### 优化方案 将两阶段方案改为"计数+重放"方案,彻底消除 value/idx 的中间 workspace: 1. **Collecting 阶段(仅计数)**:新增 CountAdjacentNe 向量化函数,利用 Compare + Select + ReduceSum 指令直接在 UB 内统计相邻不等元素个数,仅将每核的 collectNum 和 lastUniqueIdx 写入极小的 per-core workspace(16 * coreNum * sizeof(int64_t)) 2. **Merging 阶段(重放写出)**:重新从原始输入读取数据,执行 CollectPostUniqueValue / CollectPostUniqueIdx 后直接写出到输出 GM,无需中间 workspace ### 具体改动 | 文件 | 改动说明 | |------|----------| | unique_consecutive_tiling_arch35.cpp/h | 移除 idxWorkSpace_ / valueWorkSpace_ 计算;workspace 从 sysWorkspace + idxWs + valueWs + coreWs 简化为 sysWorkspace + coreWs;单核场景 workspace 从 1 改为 0;修复 useCoreNums_==0 边界处理;重命名 idxCopyInQueueSize → idxQueueSize | | unique_consecutive_constant.h | 新增 CORE_COLLECT_NUM_OFFSET、CORE_LAST_UNIQUE_IDX_OFFSET 常量,定义 per-core workspace 布局 | | unique_consecutive_helper.h | 新增 VFCountAdjacentNe / VFCountAdjacentNeB64 / CountAdjacentNe 三个模板函数,支持 int8/int16/int32/int64 等类型的向量化相邻不等计数 | | unique_consecutive_multi_core_kernel.h | 重构多核 kernel:Collecting 阶段改为仅计数+记录末位 idx;Merging 阶段改为重放写出;移除 valueWorkspaceGm_ / idxWorkspaceGm_ / idxWorkspaceStartGm_ 等 workspace GlobalTensor;合并为单一的 coreCollectWorkspaceGm_ | ### 效果 - **Workspace 内存**:从 O(totalSize) 降至 O(coreNum),大幅减少 GM 占用 - **数据流简化**:消除了 Collecting→workspace→Merging 的 GM 读写往返,减少 MTE 搬运开销 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> david冒烟:通过 obp冒烟:通过 ST:通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [x] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!5296 | 3 个月前 | |
删除多余的CmakeLists.txt Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !4607 merge master into master 删除多余的CmakeLists.txt Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 删除多余的CmakeLists.txt ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/2232 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!4607 | 4 个月前 | |
UniqueConsecutive算子手动注册opDef.AICore()里设置的CheckSupport函数 Co-authored-by: wkx12138<weikaixuan@h-partners.com> # message auto-generated for no-merge-commit merge: !1763 merge unique into master UniqueConsecutive算子手动注册opDef.AICore()里设置的CheckSupport函数 Created-by: wkx12138 Commit-by: wkx12138 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 改动原因:函数CheckSupport未生效导致return_idx=false的场景也走入aicpu,性能下降 改动方法:手动注册opDef.AICore()里设置的CheckSupport函数,需要op_host目录下的CMakeLists.txt将本_def.cpp加入${OPHOST_NAME}_tiling_obj编译目标内 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> https://gitcode.com/cann/ops-nn/issues/1076 ## 测试 <!--描述进行了哪些测试来验证你的改动。--> obp冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260213_140849059 二级冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260213_121512617 ST:http://ascend.turing.huawei.com/#/ops_test/stgrouplist?log_id=164742,线上失败用例本地已验证通过 aclnn、torch、geir流程均已跑通 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!1763 | 7 个月前 | |
nn仓芯片类型补充以及资料格式修改 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !3420 merge xinpian into master nn仓芯片类型补充以及资料格式修改 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-nn!3420 | 5 个月前 |
UniqueConsecutive
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | × |
功能说明
- 算子功能:去除每一个元素后的重复元素。当dim不为空时,去除对应维度上的每一个张量后的重复张量。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 待进行UniqueConsecutive去重计算的入参。 | BF16、FLOAT16、FLOAT、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64 | ND |
| return_idx | 输入属性 | 是否返回self中各元素在输出y中的位置。 | BOOL | ND |
| return_counts | 输入属性 | 是否返回输出y中各元素重复次数。 | BOOL | ND |
| axis | 输入属性 | 去重维度。 | INT32 | ND |
| out_idx | 输入属性 | 指定输出idx和count的类型,默认INT64。 | INT32 | ND |
| y | 输出 | 元素消除连续重复后的输出。 | BF16、FLOAT16、FLOAT、INT8、INT16、INT32、INT64、UINT8、UINT16、UINT32、UINT64 | ND |
| idx | 输出 | 返回self中各元素在输出y中的位置,return_idx为True时生效。 | INT32、INT64 | ND |
| count | 输出 | 返回输出y中各元素重复次数,return_counts为True时生效。 | INT32、INT64 | ND |
约束说明
无
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_unique_consecutive | 通过aclnnUniqueConsecutive接口方式调用UniqueConsecutive算子。 |