| Files | Last commit | Last update |
|---|---|---|
math仓英文合入 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !6772 merge master into master math仓英文合入 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 math仓master分支英文合入 ## 关联的Issue 关联issue:[4170](https://gitcode.com/cann/ops-math/issues/4170) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6772 | 13 days ago | |
aclnnstack support Fp8 Co-authored-by: zhanglei842<zhanglei842@huawei.com> # message auto-generated for no-merge-commit merge: !5379 merge aclnnStack into master aclnnstack support Fp8 Created-by: zhanglei842 Commit-by: zhanglei842 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3285 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5379 | 1 month ago | |
迁移开源TF插件--conversion Co-authored-by: nextyale<yaochen15@huawei.com> # message auto-generated for no-merge-commit merge: !4310 merge transfer-conversion into master 迁移开源TF插件--conversion Created-by: nextyale Commit-by: nextyale Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:迁移TF插件 See merge request: cann/ops-math!4310 | 2 months ago | |
aclnnDiag和aclnnStack空输入时拦截错形out Co-authored-by: IceBearPolar<xuxuepeng4@huawei.com> # message auto-generated for no-merge-commit merge: !6376 merge issue3555 into master aclnnDiag和aclnnStack空输入时拦截错形out Created-by: IceBearPolar Commit-by: IceBearPolar Merged-by: cann-robot Description: ## 描述 aclnnDiag 和 aclnnStack 在空输入或空对角线的零退路径上,先于出参形状校验返回 ACLNN_SUCCESS,错形 out 被静默放行。空分支此时还没有 diagOpOut / castIn,不能把原来依赖中间 Tensor 的检查直接前移,因此按输入和 diagonal / dim 推导预期形状,再用 OP_CHECK_SHAPE_NOT_EQUAL_WITH_EXPECTED_SIZE 核对 out。形状不符返回 ACLNN_ERR_PARAM_INVALID,形状正确的空结果才保留空执行图。 - **aclnnDiag**:新增 InferDiagOutShape,与 DiagV2 infershape 一致。秩小于 2 时输出边长为 numel + |diagonal| 的方阵;秩为 2 时按 diagonal 抽取对角线,越界长度为 0。推导结果为空时,形状匹配后零退;输入为空且推导结果非空(一维空 tensor、非零 diagonal 得到的非空零矩阵)时,形状匹配后仍 FillScalar 填 0。非空路径仍走原有 CheckReduceOutShape。 - **aclnnStack**:新增 InferStackOutShape,在已归一化的 realDim 处插入 tensor 个数。单个空 tensor,以及全部为空导致 castIn == nullptr 的两条零退,都先核对 out。非空路径仍走原有 CheckShapeAndScalarSame。 ## 关联的Issue [#3555](https://gitcode.com/cann/ops-math/issues/3555) ## 测试 在容器 xxp_9.2 上编译并执行 pack、diag_v2 的 host / op_api 单测,全部通过: - op_host:DiagV2.*、PackInfer*,8 个用例通过 - op_api:l2_diag_test.* 4 个用例通过,l2_stack_test.* 49 个用例通过 覆盖空输入且 out 形状正确时返回成功、形状错误时返回 ACLNN_ERR_PARAM_INVALID,以及一维空输入、非零 diagonal 时仍填零的路径。     ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6376 | 22 days ago | |
feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !6869 merge f1029 into master feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 面向 ops-math RT1.0 → RT2.0 迁移,为本仓 11 个算子补齐 op_graph 侧 InferDataType 推导,并将 op_host InferShape 的边界语义与 RT1.0 对齐(未知秩、非常量 shape、标量等),避免 C1 日落 rt1.0 后图模式推导回归。 ### 改动原因 1. 部分算子只有 InferShape、缺少 InferDataType 注册,图模式下无法完成输出 dtype 推导。 2. 部分 op_host InferShape 与 RT1.0 语义不一致,例如:AsStrided 在 size 非/未知时误用常量值计算甚至越界;Assign 取 value(输入1)而非 ref(输入0);DynamicPartition 只有 InferShapeRange 无 InferShape;Pack/Unpack 将未知秩当已知维计算;ReciprocalGrad 误用 elewise 推导导致广播场景结果错误。 ### 改动方法 1) 新增 op_graph InferDataType(输出 dtype 透传输入 dtype) - 单输出、透传输入 0:Adds、Asin、Power、Assign、TensorMove、ViewCopy - 多输出、逐个透传:Pack、Unpack、DynamicPartition(输入 0 x)、AsStrided(输入 0 x)、StridedSliceGrad(输入 4 dy) - 均为 IMPL_OP(<Op>).InferDataType(...) 注册;op_graph 源码由 cmake/func.cmake 的 file(GLOB_RECURSE ... op_graph/*.cpp) 自动收集,无需改 CMakeLists。 2) op_host InferShape 对齐 - AsStrided:size 张量缺失、size 描述符含未知维/未知秩、GetValueToShape 取常量失败时,输出置未知秩并返回成功(对齐 rt1.0 SetOutputForRank)。 - Assign:输出 shape 改为取输入 0(ref),修复 value 为标量(numel=1)时输出 shape 错误。 - DynamicPartition:新增 InferShape4DynamicPartition(输入未知秩 → 各输出未知秩;输出秩 = x秩 - partitions秩 + 1,第 0 维为 -1,其余维取 x 对应维;partitions 秩大于 x 秩报错),并注册 InferShape + InferShapeRange + OutputShapeDependOnCompute({0})。 - Pack:未知秩输入按通配处理,取首个已知秩输入作为基准,全未知秩则输出未知秩;保留 N 与实例数一致性校验,失败日志改为同时打印基准索引。 - Unpack:输入未知秩时各输出保持未知秩,不再退化为 0 维。 - StridedSliceGrad:shape 输入形状值为 0(前向为 rank-0 标量)时输出 0 维标量,不再报错。 - ReciprocalGrad:InferShape4Elewise → InferShape4Broadcast。 - Adds/Asin/TensorMove/ViewCopy:仅 namespace 注释与格式修正,逻辑不变。 3) 测试 新增 39 个 host 侧 InferShape UT,覆盖未知秩/非常量/标量/广播/失败分支。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4383 ## 测试 - 新增 UT:as_strided 6 例、assign 2 例、concat 7 例、concat_d 4 例、pack 7 例、unpack 6 例、reciprocal_grad 5 例、strided_slice_grad 2 例(共 39 例,全部位于各算子 tests/ut/op_host)。 - 说明:本次流程未在本环境执行编译与 UT 运行,用例已随 PR 提交,需由 CI/本地环境验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6869 | 8 days ago | |
feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Co-authored-by: esok11<yangsifa@huawei.com> # message auto-generated for no-merge-commit merge: !6869 merge f1029 into master feat: 补齐11个算子InferDataType推导并对齐RT2.0 InferShape语义 Created-by: esok11 Commit-by: esok11 Merged-by: cann-robot Description: ## 描述 面向 ops-math RT1.0 → RT2.0 迁移,为本仓 11 个算子补齐 op_graph 侧 InferDataType 推导,并将 op_host InferShape 的边界语义与 RT1.0 对齐(未知秩、非常量 shape、标量等),避免 C1 日落 rt1.0 后图模式推导回归。 ### 改动原因 1. 部分算子只有 InferShape、缺少 InferDataType 注册,图模式下无法完成输出 dtype 推导。 2. 部分 op_host InferShape 与 RT1.0 语义不一致,例如:AsStrided 在 size 非/未知时误用常量值计算甚至越界;Assign 取 value(输入1)而非 ref(输入0);DynamicPartition 只有 InferShapeRange 无 InferShape;Pack/Unpack 将未知秩当已知维计算;ReciprocalGrad 误用 elewise 推导导致广播场景结果错误。 ### 改动方法 1) 新增 op_graph InferDataType(输出 dtype 透传输入 dtype) - 单输出、透传输入 0:Adds、Asin、Power、Assign、TensorMove、ViewCopy - 多输出、逐个透传:Pack、Unpack、DynamicPartition(输入 0 x)、AsStrided(输入 0 x)、StridedSliceGrad(输入 4 dy) - 均为 IMPL_OP(<Op>).InferDataType(...) 注册;op_graph 源码由 cmake/func.cmake 的 file(GLOB_RECURSE ... op_graph/*.cpp) 自动收集,无需改 CMakeLists。 2) op_host InferShape 对齐 - AsStrided:size 张量缺失、size 描述符含未知维/未知秩、GetValueToShape 取常量失败时,输出置未知秩并返回成功(对齐 rt1.0 SetOutputForRank)。 - Assign:输出 shape 改为取输入 0(ref),修复 value 为标量(numel=1)时输出 shape 错误。 - DynamicPartition:新增 InferShape4DynamicPartition(输入未知秩 → 各输出未知秩;输出秩 = x秩 - partitions秩 + 1,第 0 维为 -1,其余维取 x 对应维;partitions 秩大于 x 秩报错),并注册 InferShape + InferShapeRange + OutputShapeDependOnCompute({0})。 - Pack:未知秩输入按通配处理,取首个已知秩输入作为基准,全未知秩则输出未知秩;保留 N 与实例数一致性校验,失败日志改为同时打印基准索引。 - Unpack:输入未知秩时各输出保持未知秩,不再退化为 0 维。 - StridedSliceGrad:shape 输入形状值为 0(前向为 rank-0 标量)时输出 0 维标量,不再报错。 - ReciprocalGrad:InferShape4Elewise → InferShape4Broadcast。 - Adds/Asin/TensorMove/ViewCopy:仅 namespace 注释与格式修正,逻辑不变。 3) 测试 新增 39 个 host 侧 InferShape UT,覆盖未知秩/非常量/标量/广播/失败分支。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/4383 ## 测试 - 新增 UT:as_strided 6 例、assign 2 例、concat 7 例、concat_d 4 例、pack 7 例、unpack 6 例、reciprocal_grad 5 例、strided_slice_grad 2 例(共 39 例,全部位于各算子 tests/ut/op_host)。 - 说明:本次流程未在本环境执行编译与 UT 运行,用例已随 PR 提交,需由 CI/本地环境验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6869 | 8 days ago | |
concat算子tilingdata压缩,降低头开销 Co-authored-by: hw-zhangpanpan<zhangpanpan5@huawei.com> # message auto-generated for no-merge-commit merge: !4196 merge master into master concat算子tilingdata压缩,降低头开销 Created-by: hw-zhangpanpan Commit-by: hw-zhangpanpan Merged-by: cann-robot Description: ## 描述 目前concat算子tilingdata达到1300+B,为了降低小case场景头开销,提升性能,先压缩减小tilingdata。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2849 ## 测试 泛化用例验证 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4196 | 2 months ago | |
修改aclnnstack golden Co-authored-by: zhanglei842<zhanglei842@huawei.com> # message auto-generated for no-merge-commit merge: !6240 merge master into master 修改aclnnstack golden Created-by: zhanglei842 Commit-by: zhanglei842 Merged-by: cann-robot Description: ## 描述 pack 是纯数据搬运算子(kernel Pack 语义等价 torch.stack),输出为输入按 axis 拼接的逐 bit 拷贝。现有测试 golden(conversion/pack/tests/assets/golden.py)存在以下不足: 1. 旧 aclnn_stack_golden 仅执行 torch.stack(tensors, dim),未建模 aclnnStack(op_api/aclnn_stack.cpp)的实际执行链——输入 cast 到 promoteType 后打包、输出侧再 cast 到输出 dtype,混合 dtype 用例的 golden 与设备行为不一致; 2. float8_e5m2 / float8_e4m3fn / hifloat8 / bfloat16 等以 ml_dtypes/en_dtypes 扩展 numpy dtype 到达 golden 的输入,torch.from_numpy 不识别,旧 golden 无处理路径; 3. complex32 以 float16 + 尾维 [2](real/imag 交错)存储,负 axis 须归一化到尾维之前,旧 golden 未处理; 4. 无精度标准(tolerance)声明,无 e2e(framework-api torch.stack)通路 golden。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3687 ## 测试 通过ttk验证了直调、geir、ete模式的调用验证,golden结果和npu,竞品相同 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6240 | 15 days ago | |
[ascend960dt/ascend960pr] conversion/math类9个算子新增ascend960dt/ascend960pr平台支持 Co-authored-by: yangjinwen<yangjinwen2@huawei.com> # message auto-generated for no-merge-commit merge: !5778 merge dev-v121 into master [ascend960dt/ascend960pr] conversion/math类9个算子新增ascend960dt/ascend960pr平台支持 Created-by: yangjinwen Commit-by: yangjinwen Merged-by: cann-robot Description: ## 描述 conversion 类 7 个算子(batch_to_space_nd、concat、concat_d、concat_v2、depth_to_space、pack、space_to_depth)与 math 类 2 个算子(erfc、rint)新增 ascend960dt / ascend960pr 平台支持,复用 arch35 tiling 框架,主要改动: - 平台注册:9 个算子 CMakeLists.txt 的 COMPUTE_UNIT/SUPPORT_COMPUTE_UNIT 新增 ascend960dt、ascend960pr(TILING_DIR 复用 arch35),op_host/*_def.cpp 新增对应 this->AICore().AddConfig(...) 注册; - 预编译 binary 接入:batch_to_space_nd、concat_d、depth_to_space、pack、space_to_depth、rint 新增 op_host/config/ascend960dt/、op_host/config/ascend960pr/ 下的 *_binary.json 与 *_simplified_key.ini;concat_v2 为 HOSTCPU 算子(依赖 concat),无独立 binary;erfc 的 kernel 源码(arch35/erfc.cpp)通过 add_kernel_sources 的 COMPUTE_UNITS 纳入新平台编译; - concat 的 arch35 tiling/kernel 适配 DAV_9201 架构(仅 9201 生效,不影响既有平台路径): - tiling 侧:DAV_9201 平台 ubFactorDim0 按两倍 BLOCK(64B)对齐修正;新增 dtypeSize 提升优化(末轴字节满足 128/64/32/16B 对齐时提升 dtypeSize,减少搬运次数),并注册 bitwidth=16 系列 tilingKey(12116/12126/21116/21216/30016 等); - kernel 侧:__NPU_ARCH__ == 9201 下 DataCopyPad 使用带 enAtomicSync 参数的接口分支。 ## 关联的Issue #3222 https://gitcode.com/cann/ops-math/issues/3222 ## 测试 平台注册与预编译 binary 接入部分不涉及既有 kernel 逻辑修改;concat 为 DAV_9201 架构适配新增专属分支,既有平台路径不变;可通过 PR 评论 compile 触发 CI 编译流水线验证。 ## 文档更新 无 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5778 | 25 days ago | |
aclnnstack support Fp8 Co-authored-by: zhanglei842<zhanglei842@huawei.com> # message auto-generated for no-merge-commit merge: !5379 merge aclnnStack into master aclnnstack support Fp8 Created-by: zhanglei842 Commit-by: zhanglei842 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3285 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5379 | 1 month ago | |
docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !7113 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共409个文件):第一批(已合入)之外的其余全部译稿,覆盖conversion、examples、ge、math、random各类算子README译稿,以及CHANGELOG_en.md、.gitcode PR模板英文版等。 本批内全部仓内链接均指向master已有文件(含第一批已合入的21+2篇译稿),合入后本仓432篇英文文档全部就位,链接完整生效。 本批同时包含4篇基于最新源文档的增量更新(math/ada_cast、math/prod_force_se_a、math/sinkhorn、math/xlogy,对应上游近期文档变更)。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(本批全部相对链接仅指向master已有文件,无指向本PR外未提交文件的链接),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增409个英文译稿文件(*_en.md / .en-US.md),不修改任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7113 | 6 days ago |
Pack
English | 简体中文
Product Support Status
| Product | Supported |
|---|---|
| Ascend 950PR&950DT products | √ |
| Atlas A3 products | √ |
| Atlas A2 products | √ |
| Atlas 200I/500 A2 inference products | √ |
| Atlas inference products | √ |
| Atlas training products | √ |
Function Description
- Operator function: packs a list of tensors in values into a tensor that is one dimension higher than each tensor in values, by packing along the axis dimension. Given a list of length N of tensors with shape (A, B, C); if axis == 0, the output tensor will have shape (N, A, B, C).
Parameter Description
| Parameter Name | Input/Output/Attribute | Description | Data Type | Data Format |
|---|---|---|---|---|
| x | Input | List of tensors to be concatenated. | COMPLEX128, COMPLEX64, BOOL, DOUBLE, FLOAT32, FLOAT16, BFLOAT16, INT16, INT32, INT64, INT8, UINT8, UINT16, UINT32, UINT64, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN | ND |
| axis | Optional attribute | Specifies the dimension along which tensors are packed. | INT | - |
| N | Optional attribute | Specifies the number of tensors to be packed. | INT | - |
| y | Output | Output result. | COMPLEX128, COMPLEX64, BOOL, DOUBLE, FLOAT32, FLOAT16, BFLOAT16, INT16, INT32, INT64, INT8, UINT8, UINT16, UINT32, UINT64, HIFLOAT8, FLOAT8_E5M2, FLOAT8_E4M3FN | ND |
- Atlas training products, Atlas inference products, and Atlas 200I/500 A2 inference products: BFLOAT16, HIFLOAT8, FLOAT8_E5M2, and FLOAT8_E4M3FN are not supported.
- Atlas A2 products and Atlas A3 products: HIFLOAT8, FLOAT8_E5M2, and FLOAT8_E4M3FN are not supported.
Constraint Description
None.
Invocation Description
| Invocation Method | Sample Code | Description |
|---|---|---|
| aclnn API | test_aclnn_stack | Invokes the Pack operator through the aclnnStack API. |