| Files | Last commit | Last update |
|---|---|---|
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 17 days ago | |
feat: 补充部分算子缺失的 aclnn API 示例 Co-authored-by: zhangqijia<zhangqijia1@h-partners.com> # message auto-generated for no-merge-commit merge: !4575 merge feat/issue-2281-aclnn-examples into master feat: 补充部分算子缺失的 aclnn API 示例 Created-by: gcw_SUaZx3UQ Commit-by: zhangqijia Merged-by: cann-robot Description: ## 描述 补充 Issue #2281 中归属 ops-math 的 10 个算子、12 个 aclnn API 调用示例: - 新增 8 个缺失的 aclnn API 示例。 - 将已有的 4 个示例调整为 CI 可识别的 test_aclnn_*.cpp 命名,并修正 BatchNormStats 示例文件名。 - 根据 Cdist 已有 AscendC kernel 实现,完善其 README 的产品支持、功能公式、参数及约束说明。 - 更新相关算子 README 中的调用入口。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2281 ## 测试 ## 文档更新 - 更新 10 个算子目录下的 README.md,补充 aclnn 示例链接及对应 API 文档入口。 - 重写 Cdist README,删除“仅包含 aclnn 接口”的过期说明,并按仓内算子格式补充产品支持、功能、参数和约束。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4575 | 2 months ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 18 days ago | |
【社区任务】AngleV2算子支持bf16实现贡献 Co-authored-by: Nice_try<nicetryzzw@163.com> # message auto-generated for no-merge-commit merge: !2643 merge dev-angle_v2 into master 【社区任务】AngleV2算子支持bf16实现贡献 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 一、 需求背景 ### 1.1 需求来源 通过社区任务完成开源仓算子贡献的需求,补充完善 Ascend C 算子库,为现有的 aclnnAngleV2 算子增加对 bfloat16 (bf16) 数据类型的支持。 ### 1.2 背景介绍 Angle 算子主要用于计算复数的辐角(相位角)或实数的角度。对于实数输入,当 $x < 0$ 时,其角度为 $\pi$;当 $x \ge 0$ 时,其角度为 $0$。当前 aclnnAngleV2 算子已支持多种数据类型,但缺少对 bf16 的支持。需要在原有代码框架下进行再开发,补齐 bf16 功能。 #### 1.2.1 TBE 算子现状分析 - **说明**:在系统的 TBE 算子库中,**未找到对应 AngleV2 的 TBE 源码**。因此,本设计文档不涉及 TBE 侧的实现逻辑对比,也无需提供 TBE 侧的实现流程图。 - 算子的核心逻辑基于 Ascend C 现有实现进行拓展。 #### 1.2.2 核心计算逻辑分析 针对 bf16 这种实数数据类型,其数学计算公式如下: $y = \begin{cases} \pi, & \text{if } x < 0 \\ 0, & \text{if } x \ge 0 \end{cases}$ 在硬件实现上,由于是对 element-wise 张量进行处理,可以通过向量比较指令(如 Cmp)生成掩码(Mask),再结合向量选择或数学运算(如乘以 $\pi$)得出最终结果。 ## 二、 需求分析 ### 2.1 外部组件依赖 不涉及。 ### 2.2 内部适配模块 适配 aclnn 接口调用框架,修改 Host 侧代码以分发 bf16 类型,并修改 Kernel 侧代码以实例化 bf16 相关的计算逻辑。 ### 2.3 需求模块设计 #### 2.3.1 Ascend C 算子原型 根据框架侧定义,算子原型如下: | 名称 | 类别 | 数据类型 | format | shape | |---|---|---|---|---| | x | 输入 | float16, float32, complex64, bool, uint8, int8, int16, int32, int64, **bf16** | ND | all | | y | 输出 | float16, float32, float32, float32, float32, float32, float32, float32, float32, **bf16** | ND | all | #### 2.3.2 Ascend C 算子相关约束 1. bf16 输入对应的输出类型严格为 bf16。 2. 算子需满足泛化数据场景的支持,输入 Shape 无强限制,作为一维向量处理。 ## 三、 需求详细设计 ### 3.1 使能方式 | 上层框架 | 涉及的框架勾选 | |---|---| | TF训练/推理 | | | Pytorch训练/推理 | | | ATC推理 | | | Aclnn直调 | ✅ | | OPAT调优 | | | SGAT子图切分 | | ### 3.2 需求总体设计 #### 3.2.1 Host侧设计 **3.2.1.1 分核策略** 采取均分满核策略。由于计算逻辑属于 element-wise 纯向量操作,将输入张量 x 的所有元素视作 1D 数据展开。根据 x 的元素总数与硬件可用核心数(coreNum)进行切分,无法整除的部分通过尾块分配策略优先分配给前置大核。 **3.2.1.2 数据分块和内存优化策略** - **空间复用**:开启 DOUBLE_BUFFER 进行双缓冲流水线设计,隐藏 MTE2 和 MTE3 的访存开销。 - UB(Unified Buffer)空间主要划分为 x 的输入缓冲、y 的输出缓冲以及用于存放 $\pi$ 常量的辅助标量/向量空间。 **3.2.1.3 tilingKey规划策略** 当前计算无复杂属性导致的静态分支,可以复用已有的 Tiling 结构,确保 bf16 类型的单元素位宽(2 Bytes)正确参与 tileDataNum 的计算即可。 #### 3.2.2 Kernel侧设计 **3.2.2.1 kernel侧实现描述** - **Init**:接收 Host 侧下发的 Tiling 数据,初始化 TPipe,分配 VECIN、VECOUT 的 TQue,并申请计算所需的临时 TBuf(若向量比较指令需要临时掩码空间)。 - **Process**: 1. **CopyIn**:使用 DataCopy 将 bf16 数据从 Global Memory 搬运至 Local Memory。 2. **Compute**:对于 bf16 类型,若硬件原生支持 bf16 的向量比较指令,则直接比较 $x < 0$;若当前架构 API 对 bf16 存在局限,可通过 Cast 指令先转换为 float32 进行掩码计算和赋值,完成后再 Cast 回 bf16。结合常数 $\pi$ ($3.1415926$) 计算得出 y。 3. **CopyOut**:将计算结果 y 从 Local Memory 搬运至 Global Memory。 **3.2.2.2 Ascend C 实现流程图** 以下为 Ascend C 侧算子执行流程图:  ### 3.3 支持硬件 - Atlas A2 训练系列产品 - Atlas A3 系列产品 ### 3.4 算子约束限制 - 输入 x 和输出 y 的 Shape 必须严格保持一致。 - 考虑到内存对齐要求,每次搬运的数据长度必须满足 32 Bytes(对于 bf16 为 16 个元素)的整数倍。 ## 四、 特性交叉分析 不涉及。 ## 五、 可维可测分析 ### 5.1 精度标准/性能标准 | 验收标准 | 描述 | 来源 | |---|---|---| | 精度标准 | 算子计算精度需满足 AscendOpTest 工具默认阈值。 | 任务书要求 | | 性能标准 | **bf16 性能需和 fp16 数据类型持平。** | 任务书要求 | ### 5.2 兼容性分析 本需求为在现有 aclnnAngleV2 算子中**追加类型支持**,不破坏原有接口签名与调用规范。原有针对 float16、float32 等数据类型的逻辑均保持不动,对上层框架及现有业务完全向后兼容。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1493 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [.] 文档更新 - [ ] 其他,请描述:AngleV2算子新增bf16支持 See merge request: cann/ops-math!2643 | 3 months ago | |
feat: AngleV2算子新增ascend960dt平台适配 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !7018 merge master into master feat: AngleV2算子新增ascend960dt平台适配 Created-by: miaojingjing Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次变更为 AngleV2 增加 ascend960dt 平台适配:复用 A5 OpDef 配置,补齐 960DT binary 与 simplified key 配置,扩展 BF16 kernel 分发及测试数据/tiling 生成,并将 960DT 纳入 op_kernel UT 编译范围。同时完成 PR 变更文件的格式化、文件末尾换行和许可证头合规整改。 ### 改动原因 - AngleV2 的 OpDef 尚未注册 ascend960dt,且缺少对应的 binary 与 simplified key 配置。 - BF16 原生比较分发分支仅覆盖 __NPU_ARCH__ == 3510,未覆盖 960DT 对应的 __NPU_ARCH__ == 9201。 - op_kernel UT 的 SoC 列表未包含 ascend960dt,测试数据与 tiling 生成脚本缺少 BF16 处理逻辑。 ### 改动方法 #### 1. Host 侧平台与 binary 配置 - 在 math/angle_v2/op_host/angle_v2_def.cpp 中新增 this->AICore().AddConfig("ascend960dt", aicore_a5_config),复用 ascend950 的 A5 配置;该配置启用 DynamicCompileStaticFlag、DynamicFormatFlag、DynamicRankSupportFlag 和 DynamicShapeSupportFlag。 - 新增 math/angle_v2/op_host/config/ascend960dt/angle_v2_binary.json,包含以下 10 组输入/输出映射。所有输入 x 与输出 y 均为 required、ND、shape: [-2]、format_match_mode: FormatAgnostic: | 输入 dtype | 输出 dtype | bin_filename | |---|---|---| | complex64 | float32 | AngleV2_5cfa8f3b14716c3317bcd193933a3613 | | float32 | float32 | AngleV2_1946086cc5d1bc19a4d66b5bd48e62cd | | bfloat16 | bfloat16 | AngleV2_bf16 | | float16 | float16 | AngleV2_a8c107f79de7b47ce419f0ec015539f7 | | bool | float32 | AngleV2_bool | | uint8 | float32 | AngleV2_uint8 | | int8 | float32 | AngleV2_int8 | | int16 | float32 | AngleV2_int16 | | int32 | float32 | AngleV2_int32 | | int64 | float32 | AngleV2_int64 | - 新增 math/angle_v2/op_host/config/ascend960dt/angle_v2_simplified_key.ini,设置 [AngleV2] default=0。 #### 2. Kernel 侧 BF16 分发 - 在 math/angle_v2/op_kernel/angle_v2.cpp 中,将 BF16 原生比较分支的编译条件扩展为 (__NPU_ARCH__ == 3510) || (__NPU_ARCH__ == 9201)。 - 上述架构下,KEY_DTYPE_BF16(tiling key 10)继续调用 AngleV2N::AngleV2<bfloat16_t>。 - __NPU_ARCH__ == 2201 的既有路径保持不变,仍调用 AngleV2N::AngleV2Bf16<bfloat16_t, bfloat16_t>;其他 dtype 的分发逻辑未修改。 #### 3. UT 与测试数据/tiling 生成 - math/angle_v2/tests/ut/op_kernel/CMakeLists.txt:AddOpTestCase 的 SoC 列表扩展为 ascend910b;ascend950;ascend960dt。 - angle_v2_data/gen_data.py:新增 BF16 分支,生成 [-100, 100] 范围内的 float32 随机输入并转换为 BF16;golden 通过 torch.angle(inputX.float()).to(torch.bfloat16) 计算,输入与 golden 均通过 view(torch.int16) 写出二进制文件。 - angle_v2_data/gen_tiling.py:新增 torch.bfloat16 映射及 bytesPerData["bfloat16"] = 15;BF16 与 FP16 共用 2 字节对齐计算(ALIGN_NUM = 16)和 dataPerRepeat = 128 的计算路径。 - test_angle_v2.cpp:在 3510/9201 条件下新增 test_case_bf16,采用单 block、tiling key 10,并设置 totalLength=16、formerNum=1、tailNum=47、formerLength=16、tailLength=0、alignNum=16、totalLengthAligned=16、tileLength=12160、dataPerRepeat=128。 #### 4. 合规与格式化 - 对 test_angle_v2.cpp 应用 clang-format,对两个 Python 脚本应用 ruff 格式化和空白行等格式整改。 - 为 angle_v2_binary.json、angle_v2_simplified_key.ini、UT CMakeLists.txt 和 gen_data.py 补齐文件末尾换行。 - 按 OAT 要求更新 gen_data.py 与 gen_tiling.py 的许可证头。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - https://gitcode.com/cann/ops-math/issues/4559 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 已对 PR 的全部 8 个变更文件执行 pre-commit run --files $(git diff --name-only upstream/master...HEAD),所有适用钩子均通过,包括 trailing whitespace、end-of-file-fixer、大文件检查、冲突检查、私钥检查、JSON 检查、clang-format、ruff-check、ruff-format、codespell 和 OAT;check-yaml 因本 PR 无 YAML 文件而跳过。 - git diff --check 通过。 - 本次检查未执行二级冒烟、算子泛化或 960DT 上板 UT/ST,PR 中亦未提供这些测试的结果记录。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无文档更新;本 PR 未修改 README 或其他文档文件。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7018 | 8 days ago | |
feat: AngleV2算子新增ascend960dt平台适配 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !7018 merge master into master feat: AngleV2算子新增ascend960dt平台适配 Created-by: miaojingjing Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次变更为 AngleV2 增加 ascend960dt 平台适配:复用 A5 OpDef 配置,补齐 960DT binary 与 simplified key 配置,扩展 BF16 kernel 分发及测试数据/tiling 生成,并将 960DT 纳入 op_kernel UT 编译范围。同时完成 PR 变更文件的格式化、文件末尾换行和许可证头合规整改。 ### 改动原因 - AngleV2 的 OpDef 尚未注册 ascend960dt,且缺少对应的 binary 与 simplified key 配置。 - BF16 原生比较分发分支仅覆盖 __NPU_ARCH__ == 3510,未覆盖 960DT 对应的 __NPU_ARCH__ == 9201。 - op_kernel UT 的 SoC 列表未包含 ascend960dt,测试数据与 tiling 生成脚本缺少 BF16 处理逻辑。 ### 改动方法 #### 1. Host 侧平台与 binary 配置 - 在 math/angle_v2/op_host/angle_v2_def.cpp 中新增 this->AICore().AddConfig("ascend960dt", aicore_a5_config),复用 ascend950 的 A5 配置;该配置启用 DynamicCompileStaticFlag、DynamicFormatFlag、DynamicRankSupportFlag 和 DynamicShapeSupportFlag。 - 新增 math/angle_v2/op_host/config/ascend960dt/angle_v2_binary.json,包含以下 10 组输入/输出映射。所有输入 x 与输出 y 均为 required、ND、shape: [-2]、format_match_mode: FormatAgnostic: | 输入 dtype | 输出 dtype | bin_filename | |---|---|---| | complex64 | float32 | AngleV2_5cfa8f3b14716c3317bcd193933a3613 | | float32 | float32 | AngleV2_1946086cc5d1bc19a4d66b5bd48e62cd | | bfloat16 | bfloat16 | AngleV2_bf16 | | float16 | float16 | AngleV2_a8c107f79de7b47ce419f0ec015539f7 | | bool | float32 | AngleV2_bool | | uint8 | float32 | AngleV2_uint8 | | int8 | float32 | AngleV2_int8 | | int16 | float32 | AngleV2_int16 | | int32 | float32 | AngleV2_int32 | | int64 | float32 | AngleV2_int64 | - 新增 math/angle_v2/op_host/config/ascend960dt/angle_v2_simplified_key.ini,设置 [AngleV2] default=0。 #### 2. Kernel 侧 BF16 分发 - 在 math/angle_v2/op_kernel/angle_v2.cpp 中,将 BF16 原生比较分支的编译条件扩展为 (__NPU_ARCH__ == 3510) || (__NPU_ARCH__ == 9201)。 - 上述架构下,KEY_DTYPE_BF16(tiling key 10)继续调用 AngleV2N::AngleV2<bfloat16_t>。 - __NPU_ARCH__ == 2201 的既有路径保持不变,仍调用 AngleV2N::AngleV2Bf16<bfloat16_t, bfloat16_t>;其他 dtype 的分发逻辑未修改。 #### 3. UT 与测试数据/tiling 生成 - math/angle_v2/tests/ut/op_kernel/CMakeLists.txt:AddOpTestCase 的 SoC 列表扩展为 ascend910b;ascend950;ascend960dt。 - angle_v2_data/gen_data.py:新增 BF16 分支,生成 [-100, 100] 范围内的 float32 随机输入并转换为 BF16;golden 通过 torch.angle(inputX.float()).to(torch.bfloat16) 计算,输入与 golden 均通过 view(torch.int16) 写出二进制文件。 - angle_v2_data/gen_tiling.py:新增 torch.bfloat16 映射及 bytesPerData["bfloat16"] = 15;BF16 与 FP16 共用 2 字节对齐计算(ALIGN_NUM = 16)和 dataPerRepeat = 128 的计算路径。 - test_angle_v2.cpp:在 3510/9201 条件下新增 test_case_bf16,采用单 block、tiling key 10,并设置 totalLength=16、formerNum=1、tailNum=47、formerLength=16、tailLength=0、alignNum=16、totalLengthAligned=16、tileLength=12160、dataPerRepeat=128。 #### 4. 合规与格式化 - 对 test_angle_v2.cpp 应用 clang-format,对两个 Python 脚本应用 ruff 格式化和空白行等格式整改。 - 为 angle_v2_binary.json、angle_v2_simplified_key.ini、UT CMakeLists.txt 和 gen_data.py 补齐文件末尾换行。 - 按 OAT 要求更新 gen_data.py 与 gen_tiling.py 的许可证头。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - https://gitcode.com/cann/ops-math/issues/4559 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 已对 PR 的全部 8 个变更文件执行 pre-commit run --files $(git diff --name-only upstream/master...HEAD),所有适用钩子均通过,包括 trailing whitespace、end-of-file-fixer、大文件检查、冲突检查、私钥检查、JSON 检查、clang-format、ruff-check、ruff-format、codespell 和 OAT;check-yaml 因本 PR 无 YAML 文件而跳过。 - git diff --check 通过。 - 本次检查未执行二级冒烟、算子泛化或 960DT 上板 UT/ST,PR 中亦未提供这些测试的结果记录。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无文档更新;本 PR 未修改 README 或其他文档文件。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7018 | 8 days ago | |
feat: AngleV2算子新增ascend960dt平台适配 Co-authored-by: wangrunfa<wangrunfa1@huawei.com> # message auto-generated for no-merge-commit merge: !7018 merge master into master feat: AngleV2算子新增ascend960dt平台适配 Created-by: miaojingjing Commit-by: wangrunfa Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次变更为 AngleV2 增加 ascend960dt 平台适配:复用 A5 OpDef 配置,补齐 960DT binary 与 simplified key 配置,扩展 BF16 kernel 分发及测试数据/tiling 生成,并将 960DT 纳入 op_kernel UT 编译范围。同时完成 PR 变更文件的格式化、文件末尾换行和许可证头合规整改。 ### 改动原因 - AngleV2 的 OpDef 尚未注册 ascend960dt,且缺少对应的 binary 与 simplified key 配置。 - BF16 原生比较分发分支仅覆盖 __NPU_ARCH__ == 3510,未覆盖 960DT 对应的 __NPU_ARCH__ == 9201。 - op_kernel UT 的 SoC 列表未包含 ascend960dt,测试数据与 tiling 生成脚本缺少 BF16 处理逻辑。 ### 改动方法 #### 1. Host 侧平台与 binary 配置 - 在 math/angle_v2/op_host/angle_v2_def.cpp 中新增 this->AICore().AddConfig("ascend960dt", aicore_a5_config),复用 ascend950 的 A5 配置;该配置启用 DynamicCompileStaticFlag、DynamicFormatFlag、DynamicRankSupportFlag 和 DynamicShapeSupportFlag。 - 新增 math/angle_v2/op_host/config/ascend960dt/angle_v2_binary.json,包含以下 10 组输入/输出映射。所有输入 x 与输出 y 均为 required、ND、shape: [-2]、format_match_mode: FormatAgnostic: | 输入 dtype | 输出 dtype | bin_filename | |---|---|---| | complex64 | float32 | AngleV2_5cfa8f3b14716c3317bcd193933a3613 | | float32 | float32 | AngleV2_1946086cc5d1bc19a4d66b5bd48e62cd | | bfloat16 | bfloat16 | AngleV2_bf16 | | float16 | float16 | AngleV2_a8c107f79de7b47ce419f0ec015539f7 | | bool | float32 | AngleV2_bool | | uint8 | float32 | AngleV2_uint8 | | int8 | float32 | AngleV2_int8 | | int16 | float32 | AngleV2_int16 | | int32 | float32 | AngleV2_int32 | | int64 | float32 | AngleV2_int64 | - 新增 math/angle_v2/op_host/config/ascend960dt/angle_v2_simplified_key.ini,设置 [AngleV2] default=0。 #### 2. Kernel 侧 BF16 分发 - 在 math/angle_v2/op_kernel/angle_v2.cpp 中,将 BF16 原生比较分支的编译条件扩展为 (__NPU_ARCH__ == 3510) || (__NPU_ARCH__ == 9201)。 - 上述架构下,KEY_DTYPE_BF16(tiling key 10)继续调用 AngleV2N::AngleV2<bfloat16_t>。 - __NPU_ARCH__ == 2201 的既有路径保持不变,仍调用 AngleV2N::AngleV2Bf16<bfloat16_t, bfloat16_t>;其他 dtype 的分发逻辑未修改。 #### 3. UT 与测试数据/tiling 生成 - math/angle_v2/tests/ut/op_kernel/CMakeLists.txt:AddOpTestCase 的 SoC 列表扩展为 ascend910b;ascend950;ascend960dt。 - angle_v2_data/gen_data.py:新增 BF16 分支,生成 [-100, 100] 范围内的 float32 随机输入并转换为 BF16;golden 通过 torch.angle(inputX.float()).to(torch.bfloat16) 计算,输入与 golden 均通过 view(torch.int16) 写出二进制文件。 - angle_v2_data/gen_tiling.py:新增 torch.bfloat16 映射及 bytesPerData["bfloat16"] = 15;BF16 与 FP16 共用 2 字节对齐计算(ALIGN_NUM = 16)和 dataPerRepeat = 128 的计算路径。 - test_angle_v2.cpp:在 3510/9201 条件下新增 test_case_bf16,采用单 block、tiling key 10,并设置 totalLength=16、formerNum=1、tailNum=47、formerLength=16、tailLength=0、alignNum=16、totalLengthAligned=16、tileLength=12160、dataPerRepeat=128。 #### 4. 合规与格式化 - 对 test_angle_v2.cpp 应用 clang-format,对两个 Python 脚本应用 ruff 格式化和空白行等格式整改。 - 为 angle_v2_binary.json、angle_v2_simplified_key.ini、UT CMakeLists.txt 和 gen_data.py 补齐文件末尾换行。 - 按 OAT 要求更新 gen_data.py 与 gen_tiling.py 的许可证头。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> - https://gitcode.com/cann/ops-math/issues/4559 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 已对 PR 的全部 8 个变更文件执行 pre-commit run --files $(git diff --name-only upstream/master...HEAD),所有适用钩子均通过,包括 trailing whitespace、end-of-file-fixer、大文件检查、冲突检查、私钥检查、JSON 检查、clang-format、ruff-check、ruff-format、codespell 和 OAT;check-yaml 因本 PR 无 YAML 文件而跳过。 - git diff --check 通过。 - 本次检查未执行二级冒烟、算子泛化或 960DT 上板 UT/ST,PR 中亦未提供这些测试的结果记录。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无文档更新;本 PR 未修改 README 或其他文档文件。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7018 | 8 days ago | |
新增aclnnAngleV2接口支持非连续输入输出 Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !4897 merge master into master 新增aclnnAngleV2接口支持非连续输入输出 Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增aclnnAngleV2支持非连续输入输出 修改资料中对于aclnnAngleV2不支持Ascend910的错误描述 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3050 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 新增UT用例21个通过,ST通过 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> aclnnAngleV2.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4897 | 2 months ago | |
文档里产品名统一化+规范化修改 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !7136 merge master into master 文档里产品名统一化+规范化修改 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 文档里产品名统一化+规范化修改 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7136 | 9 days 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 | 9 days ago |
AngleV2
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 | √ |
| Kirin X90 processor series products | √ |
| Kirin 9030 processor series products | √ |
Function Description
-
Operator function: computes the element-wise angle (in radians) of the input tensor.
-
Computation formula:
outputi=angle(inputi)output_i=angle(input_i) outputi=angle(inputi)
Parameter Description
| Parameter Name | Input/Output/Attribute | Description | Data Type | Data Format |
|---|---|---|---|---|
| x | Input | Input parameter for the angle computation, which is inputi in the formula. | FLOAT16, FLOAT, COMPLEX64, BOOL, UINT8, INT8, INT16, INT32, INT64, BFLOAT16 | ND |
| y | Output | Output parameter for the angle computation, which is outputi in the formula. | FLOAT16, FLOAT, BFLOAT16 | ND |
- Kirin X90/Kirin 9030 processor series products: COMPLEX is not supported.
Constraint Description
None
Invocation Description
| Invocation Method | Invocation Sample | Description |
|---|---|---|
| aclnn invocation | test_aclnn_angle_v2 | Invokes the AngleV2 operator through the aclnnAngleV2 API. |
| Graph-mode invocation | test_geir_angle_v2 | Invokes the AngleV2 operator by building a graph through the operator IR. |