文件最后提交记录最后更新时间
doc Tools工具扫描问题修改 Co-authored-by: gitee-yanglulu<yanglulul@h-partners.com> # message auto-generated for no-merge-commit merge: !1930 merge master into master doc Tools工具扫描问题修改 Created-by: gitee-yanglulu Commit-by: gitee-yanglulu Merged-by: cann-robot Description: doc Tools工具扫描问题修改 See merge request: cann/ops-math!19302 个月前
[feat] add aicpu op: rsqrt Co-authored-by: FengHaozhan<fenghaozhan@huawei.com> # message auto-generated for no-merge-commit merge: !2509 merge rsqrt into master [feat] add aicpu op: rsqrt Created-by: FengHaozhan Commit-by: FengHaozhan Merged-by: cann-robot Description: ## 描述 新增 rsqrt 算子的 AICPU kernel 实现。rsqrt(x) = 1 / sqrt(x)(倒数平方根),补充 TBE 实现之外的 AICPU 执行路径,提升算子在昇腾硬件上的覆盖能力。 主要变更: - math/rsqrt/op_kernel_aicpu/rsqrt_aicpu.cpp/.h:AICPU kernel 核心实现,逐元素计算倒数平方根。 - math/rsqrt/op_kernel_aicpu/rsqrt.json:算子注册配置,定义输入/输出数据类型约束。 - math/rsqrt/tests/ut/op_kernel_aicpu/test_rsqrt.cpp:单元测试,验证 float16/float32/bfloat16 各类型的正确性。 - math/rsqrt/examples/test_geir_rsqrt.cpp:端到端运行示例。 ## 关联的Issue #1447 ## 测试 根据代码变更,测试场景如下: 1. **AICPU 单元测试** - 执行 test_rsqrt.cpp 中的 UT,覆盖 float16、float32、bfloat16 数据类型。 - 验证正常输入(正数)及边界值(趋近 0)下的数值正确性。 2. **算子注册验证** - 验证 rsqrt.json 中算子信息注册正确,接口可正常加载。 3. **示例运行验证** - 编译并运行 test_geir_rsqrt.cpp,确认端到端流程无报错,输出结果与 CPU 参考值误差在可接受范围内。 ## 文档更新 无需文档更新,新增算子实现文件已包含必要注释。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!25091 个月前
refactor common headers for op_api/op_host Co-authored-by: tangpingchuan<tangpingchuan@huawei.com> # message auto-generated for no-merge-commit merge: !783 merge header into master refactor common headers for op_api/op_host Created-by: pingchuantang Commit-by: tangpingchuan Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7834 个月前
round,rsqrt,rsqrt_grad,sort算子支持下一代实现 Co-authored-by: Huang-Peng<huangpeng98@huawei.com> # message auto-generated for no-merge-commit merge: !557 merge trans-part1228 into master round,rsqrt,rsqrt_grad,sort算子支持下一代实现 Created-by: Huang-Peng Commit-by: Huang-Peng Merged-by: cann-robot Description: ## 描述 round,rsqrt,rsqrt_grad,sort算子支持最新实现 ## 关联的Issue 不涉及 ## 测试 已完成本地编译、UT、二级冒烟等测试 ## 文档更新 更新了round,rsqrt,rsqrt_grad,sort等算子的README实现 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5574 个月前
refactor: 消除 math 算子重复头文件依赖(下),统一引用 base 仓 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !2980 merge math_tiling into master refactor: 消除 math 算子重复头文件依赖(下),统一引用 base 仓 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 消除 math 目录下后半段(ger ~ zero_op)共 89 个算子的重复头文件依赖,将 tiling 基类和模板注册引用统一到 base 仓。本 PR 与 #2969 共同覆盖全部 math 算子。 ### 改动原因 与 #2969 一致,剩余 math 算子(ger 起)各自直接引用旧头文件并存在全局命名空间引入: - tiling_base.h 中 TilingBaseClass 已在 base 仓提取为 tiling_base_class.h - tiling_templates_registry.h 中 math 注册宏已拆分到 math_tiling_templates_registry.h - using namespace Ops::Math::OpTiling 引入全局命名空间,存在符号冲突风险 ### 改动方法 批量更新 math 算子文件的 #include 及命名空间引用: - tiling_base.h -> tiling_base_class.h - tiling_templates_registry.h -> math_tiling_templates_registry.h - 移除 using namespace Ops::Math::OpTiling - TilingBaseClass -> Ops::Base::TilingBaseClass - TilingRegistry::GetInstance() -> Ops::Math::OpTiling::TilingRegistry::GetInstance() ## 关联的Issue - #1685 ## 测试 - 涉及的 math 算子二级冒烟测试已通过 ## 文档更新 无文档变更 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构,消除重复头文件依赖 See merge request: cann/ops-math!29805 天前
clean code Co-authored-by: yuanbin_22<yuanbin22@huawei.com> # message auto-generated for no-merge-commit merge: !1521 merge CleanCode0306 into master clean code Created-by: yuanbin_22 Commit-by: yuanbin_22 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 删除无用的头文件 头文件中禁止向全局命名空间导入符号 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-nn/issues/1323 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!15212 个月前
[feat] add aicpu op: rsqrt Co-authored-by: FengHaozhan<fenghaozhan@huawei.com> # message auto-generated for no-merge-commit merge: !2509 merge rsqrt into master [feat] add aicpu op: rsqrt Created-by: FengHaozhan Commit-by: FengHaozhan Merged-by: cann-robot Description: ## 描述 新增 rsqrt 算子的 AICPU kernel 实现。rsqrt(x) = 1 / sqrt(x)(倒数平方根),补充 TBE 实现之外的 AICPU 执行路径,提升算子在昇腾硬件上的覆盖能力。 主要变更: - math/rsqrt/op_kernel_aicpu/rsqrt_aicpu.cpp/.h:AICPU kernel 核心实现,逐元素计算倒数平方根。 - math/rsqrt/op_kernel_aicpu/rsqrt.json:算子注册配置,定义输入/输出数据类型约束。 - math/rsqrt/tests/ut/op_kernel_aicpu/test_rsqrt.cpp:单元测试,验证 float16/float32/bfloat16 各类型的正确性。 - math/rsqrt/examples/test_geir_rsqrt.cpp:端到端运行示例。 ## 关联的Issue #1447 ## 测试 根据代码变更,测试场景如下: 1. **AICPU 单元测试** - 执行 test_rsqrt.cpp 中的 UT,覆盖 float16、float32、bfloat16 数据类型。 - 验证正常输入(正数)及边界值(趋近 0)下的数值正确性。 2. **算子注册验证** - 验证 rsqrt.json 中算子信息注册正确,接口可正常加载。 3. **示例运行验证** - 编译并运行 test_geir_rsqrt.cpp,确认端到端流程无报错,输出结果与 CPU 参考值误差在可接受范围内。 ## 文档更新 无需文档更新,新增算子实现文件已包含必要注释。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!25091 个月前
整改st目录下的atk用例统一目录格式 Co-authored-by: yue-ma<mayue54@huawei.com> # message auto-generated for no-merge-commit merge: !2579 merge master into master 整改st目录下的atk用例统一目录格式 Created-by: yue-ma Commit-by: yue-ma Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 整改st目录下的atk用例统一目录格式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1538 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:st用例目录整改 See merge request: cann/ops-math!257921 天前
Arch编码更新 Co-authored-by: liulinxiang<liulinxiang1@huawei.com> # message auto-generated for no-merge-commit merge: !992 merge master1 into master Arch编码更新 Created-by: liulinxiang Commit-by: liulinxiang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!9924 个月前
math仓的doc tools 工具检测的低错问题 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !2461 merge master into master math仓的doc tools 工具检测的低错问题 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 处理math仓的doc tools 工具检测的低错问题,包括markdown低错、htlm标签合入、链接是否可以正常跳转 ## 关联的Issue #关联issue#1262 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 更新全部文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!24611 个月前
README.md

Rsqrt

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品
Atlas 200I/500 A2 推理产品
Atlas 推理系列产品
Atlas 训练系列产品

功能说明

  • 算子功能:求input(Tensor)每个元素的平方根的倒数

  • 计算公式:

out=1inputout = \frac{1}{\sqrt{input}}

函数原型

  • aclnnRsqrt和aclnnInplaceRsqrt实现相同的功能,使用区别如下,请根据自身实际场景选择合适的算子。

    • aclnnRsqrt:需新建一个输出张量对象存储计算结果。
    • aclnnInplaceRsqrt:无需新建输出张量对象,直接在输入张量的内存中存储计算结果。
  • 每个算子分为两段式接口,必须先调用“aclnnRsqrtGetWorkspaceSize”或者”aclnnInplaceRsqrtGetWorkspaceSize“接口获取入参并根据流程计算所需workspace大小,再调用“aclnnRsqrt”或者”aclnnInplaceRsqrt“接口执行计算。

    • aclnnStatus aclnnRsqrtGetWorkspaceSize(const aclTensor *self, aclTensor *out, uint64_t *workspaceSize, aclOpExecutor **executor)
    • aclnnStatus aclnnRsqrt(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)
    • aclnnStatus aclnnInplaceRsqrtGetWorkspaceSize(aclTensor* selfRef, uint64_t* workspaceSize, aclOpExecutor** executor)
    • aclnnStatus aclnnInplaceRsqrt(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)

aclnnRsqrtGetWorkspaceSize

  • 参数说明:

    • self(aclTensor*, 计算输入): 公式中的inputinput,Device侧的aclTensor,支持非连续的Tensor数据格式支持ND, 且shape需要与out一致。
      • Atlas 200I/500 A2 推理产品、Atlas 推理系列产品、Atlas 训练系列产品:数据类型支持FLOAT、FLOAT16、DOUBLE、COMPLEX64、COMPLEX128、UINT8、INT8、INT16、INT32、INT64、BOOL。
      • Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品、Ascend 950PR/Ascend 950DT:数据类型支持FLOAT、FLOAT16、DOUBLE、COMPLEX64、COMPLEX128、UINT8、INT8、INT16、INT32、INT64、BOOL、BFLOAT16。
    • out(aclTensor *, 计算输出): 公式中的outout,Device侧的aclTensor,支持非连续的Tensor数据格式支持ND,且shape需要与self一致。
      • Atlas 200I/500 A2 推理产品、Atlas 推理系列产品、Atlas 训练系列产品:数据类型支持FLOAT、FLOAT16、DOUBLE、COMPLEX64、COMPLEX128。
      • Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品、Ascend 950PR/Ascend 950DT:数据类型支持FLOAT、FLOAT16、DOUBLE、COMPLEX64、COMPLEX128、BFLOAT16。
  • 返回值:

    aclnnStatus:返回状态码,具体参见aclnn返回码

第一段接口完成入参校验,出现以下场景时报错:
161001(ACLNN_ERR_PARAM_NULLPTR):1. 传入的self或out是空指针。
161002(ACLNN_ERR_PARAM_INVALID):1. self和out的数据类型和数据格式不在支持的范围之内。
                                 2. self和out的shape不匹配

aclnnRsqrt

  • 参数说明:

    • workspace(void *, 入参):在Device侧申请的workspace内存地址。
    • workspaceSize(uint64_t, 入参):在Device侧申请的workspace大小,由第一段接口aclnnRsqrtGetWorkspaceSize获取。
    • executor(aclOpExecutor *, 入参):op执行器,包含了算子计算流程。
    • stream(aclrtStream, 入参):指定执行任务的Stream。
  • 返回值:

    aclnnStatus:返回状态码,具体参见aclnn返回码

aclnnInplaceRsqrtGetWorkspaceSize

  • 参数说明:

    • selfRef(aclTensor *, 计算输入): 公式中的inputinput,Device侧的aclTensor,支持非连续的Tensor数据格式支持ND,shape维度不大于8。
      • Atlas 200I/500 A2 推理产品、Atlas 推理系列产品、Atlas 训练系列产品:数据类型支持FLOAT、FLOAT16、DOUBLE、COMPLEX64、COMPLEX128。
      • Atlas A2 训练系列产品/Atlas A2 推理系列产品、Atlas A3 训练系列产品/Atlas A3 推理系列产品:数据类型支持FLOAT、FLOAT16、DOUBLE、COMPLEX64、COMPLEX128、BFLOAT16。
    • workspaceSize(uint64_t *, 出参):返回需要在Device侧申请的workspace大小。
    • executor(aclOpExecutor **, 出参):返回op执行器,包含了算子计算流程。
  • 返回值:

    aclnnStatus:返回状态码,具体参见aclnn返回码

第一段接口完成入参校验,出现以下场景时报错:
161001(ACLNN_ERR_PARAM_NULLPTR):1. 传入的selfRef是空指针。
161002(ACLNN_ERR_PARAM_INVALID):1. selfRef的数据类型和数据格式不在支持的范围之内。

aclnnInplaceRsqrt

  • 参数说明:

    • workspace(void *, 入参):在Device侧申请的workspace内存地址。
    • workspaceSize(uint64_t, 入参):在Device侧申请的workspace大小,由第一段接口aclnnInplaceRsqrtGetWorkspaceSize获取。
    • executor(aclOpExecutor *, 入参):op执行器,包含了算子计算流程。
    • stream(aclrtStream, 入参):指定执行任务的Stream。
  • 返回值:

    aclnnStatus:返回状态码,具体参见aclnn返回码

约束说明

  • 确定性计算:
    • aclnnRsqrt&aclnnInplaceRsqrt默认确定性实现。

调用示例

示例代码如下,仅供参考,具体编译和执行过程请参考编译与运行样例