| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs目录基本概念md文件名改为英文 Co-authored-by: chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !4182 merge master into master docs目录基本概念md文件名改为英文 Created-by: gitcode-chenjiao Commit-by: chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> docs目录基本概念md文件名改为英文: 避免link中的中文字符引发的跳转异常,例如两段式接口.md变成%E4%B8%A4%E6%AE%B5%E5%BC%8F%E6%8E%A5%E5%8F%A3.md,不易于维护,可能导致其他平台跳转有问题。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#2283](https://gitcode.com/cann/ops-math/issues/2283) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> docs/zh/context所有md和对应的link ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4182 | 23 天前 | |
abs等算子A5实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !495 merge develop into master abs等算子A5实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 新增以下算子的A5实现 |序号| 算子 | 功能 | |--|--|--| |1| abs | 为输入张量的每一个元素取绝对值 | |2| add | 对输入完成相加操作 | |3| addcdiv | 张量运算函数,用于执行乘除加组合操作,将张量除法(带缩放)+ 张量加法合并为单个操作 | |4| addcmul | 张量运算函数,用于执行乘除加组合操作,将张量乘法(带缩放)+ 张量加法合并为单个操作 | |5| axpy | 源操作数中每个元素与标量求积后和目的操作数中的对应元素相加 | |6| bincount | 计算非负整数数组中每个数的频率 | |7| ceil | 返回输入tensor中每个元素向上取整的结果 | |8| clip_by_value_v2 | 将输入的所有元素限制在一定范围内 | |9| concat | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |10| concat_v2 | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |11| equal | 计算两个Tensor是否有相同的大小和元素,返回一个Bool类型 | |12|exp|返回一个新的张量,该张量的每个元素都是输入张量对应元素的指数| |13| fill | 对张量进行填充操作,支持非连续的Tensor操作 | |14| floor | 返回输入Tensor中每个元素向下取整,并将结果回填到输入Tensor中 | |15| floor_div | 完成除法计算,对余数向下取整 | |16| floor_mod | 用于计算两个数的模 | |17| is_neg_inf | 判断输入张量的元素是否为负无穷 | |18| is_pos_inf | 判断输入张量的元素是否为正无穷 | |19| less | 判断输入self中的每个元素是否小于输入other的值,返回一个Bool类型的Tensor | |20| less_equal | 判断输入self中的元素值是否小于等于other的值,并将self的每个元素的值与other值的比较结果写入out中 | |21| logical_and | 对两个输入张量的对应元素执行「与逻辑」判断,输出布尔型张量(True/False) | |22| log | 对输入张量x的元素,逐元素进行对数计算,并将结果保存到输出张量y中 | |23| not_equal | 逐元素比较两个输入张量是否不相等 | |24| ones_like | 返回形状和类型相同的张量,所有元素都设置为1 | |25|sign|对输入的tensor逐元素进行Sign符号函数的运算并输出结果tensor| |26| sqrt | 完成非负数平方根计算,负数情况返回nan | |27| sqrt_grad | 完成梯度平方根计算 | |28| square | 为输入张量的每一个元素计算平方值 | |29| squared_difference | 为第一个输入张量减去第二个输入张量,并计算其平方值 | |30| tanh | 激活函数,返回与输入tensor shape相同的tensor,对输入tensor进行elementwise的计算 | |31| tril | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的右上部分置零 | |32| triu | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的左下部分置零 | |33| zeros_like | 将张量填充为全零 | ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!495 | 7 个月前 | |
fix: enable double path for remainder scalar tensor Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !4018 merge master into master fix: enable double path for remainder scalar tensor Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 描述 修复 Ascend 950(RegBase)上 aclnnRemainderScalarTensor 在类型提升结果为 DT_DOUBLE 时的计算路径不一致问题。 修改前,RegBase 分支显式排除了 DT_DOUBLE。当 PromoteTypeScalarV35(other.dtype, self.dtype) 推导为 DT_DOUBLE 时,接口会进入通用分支,并按 out 的数据类型提前转换输入后再执行取余;若 out 为较低精度类型,会导致计算在降精度后进行,与类型提升规则不一致,存在精度损失风险。 本次修改移除 RegBase 分支对 DT_DOUBLE 的排除,使 Scalar-Tensor 场景统一按以下流程执行: 1. 使用 PromoteTypeScalarV35 推导计算类型; 2. 将 other 连续化并转换到推导类型,同时将 self 转换为同类型 Tensor; 3. 调用 l0op::FloorMod 完成计算; 4. 最后将结果转换到 out 的数据类型并写回。 对于 DT_DOUBLE,l0op::FloorMod 会通过 AICPU_DTYPE_SUPPORT_LIST 分发到 FloorModAiCpu,不会进入 arch35 仅支持 FP16/BF16/FP32/INT32/INT64 的 AICORE tiling/kernel 路径。 影响范围仅限 RegBase、非空 Tensor 的 aclnnRemainderScalarTensor;非 RegBase 路径、空 Tensor 快速返回、其他 remainder 接口及接口签名均不受影响。 ## 代码整改 - 按仓库 .clang-format 规范,使用 pre-commit 固定的 clang-format 18.1.8 对涉及文件进行格式整改; - 统一 extern C 代码块缩进、函数声明参数换行以及宏和函数调用的换行格式; - 格式整改不改变代码语义,除上述 double 路径修复外未引入其他逻辑修改; - 完整 pre-commit 检查已通过,包括 clang-format、trailing whitespace、end-of-file、merge conflict、private key、codespell 和 OAT 合规检查。 ## 关联的Issue - [Issue #2253:aclnnRemainderScalarTensor 在 RegBase double 路径提前降精度](https://gitcode.com/cann/ops-math/issues/2253) ## 测试 ### Ascend 950 全量验证 - 测试平台:Ascend950PR(RegBase),CANN 9.1.0。 - 对比版本: - PRE:修改前 26972d8; - POST:PR 修改后 87cdb6a。 - 测试方式:通过 C++ 直接调用 aclnn API,逐条执行 1000 个 Scalar-Tensor 用例,覆盖 double 类型提升、非 double 回归、0~8 维、连续/非连续 Tensor、空 Tensor、正负零、NaN/Inf、整数边界和非法参数。 | 用例集 | 数量 | PRE/POST 一致 | 预期差异 | 验证结论 | |---|---:|---:|---:|---| | D1:double scalar + integral tensor | 360 | 260 | 100 | 差异符合先 double 计算再 cast 的预期 | | D2:double tensor + 各类 scalar | 240 | 214 | 26 | 差异符合先 double 计算再 cast 的预期 | | N1:非 double 回归 | 160 | 160 | 0 | 无回归 | | S1:零、NaN、Inf、精度边界 | 100 | 100 | 0 | 行为一致 | | V1:非法参数与错误处理 | 80 | 80 | 0 | 行为一致 | | P1:RegBase 路径控制 | 60 | 36 | 24 | 差异符合预期 | | **合计** | **1000** | **850** | **150** | **通过** | 验证结果: - 1000 例全部执行完成,无 crash、hang 或非法内存访问; - 150 例差异全部集中在 promoted=DOUBLE && out!=DOUBLE 场景,符合本次修改的影响范围; - POST 保持 double 精度完成取余,仅在最后转换为 out 类型,修复了 PRE 版本提前降精度导致的结果偏差; - 差异用例中,PRE 与 PRE oracle 匹配 136/150,POST 与 POST oracle 匹配 138/150; - 非 double 160 例、边界值 100 例和非法参数 80 例均与 PRE 一致,未发现回归。 测试结论:通过。 ### 新增 Ascend950 回归 UT - 新增 math/floor_mod/tests/ut/op_api/test_aclnn_remainder_scalar_tensor.cpp,文件名符合 test_aclnn_*.cpp 收集规则; - 用例显式设置 NpuArch::DAV_3510,覆盖 scalar double 2049.0、tensor int32 2、out float16 的关键场景; - 定向构建与执行命令: TMPDIR=/tmp TMP=/tmp TEMP=/tmp CCACHE_TEMPDIR=/tmp/ops-math-ccache bash build.sh -u --opapi --ops=floor_mod --gtest_filter='l2_remainder_scalar_tensor_ascend950_test.*' -j2 - 本地执行结果:1 test from 1 test suite,1 PASSED; - 新增文件通过 clang-format 21.1.4 dry-run 和 git diff --check。 ### 静态检查 - 静态核对 DT_DOUBLE 后端分发:确认由 l0op::FloorMod 进入 AICPU 路径,不依赖 arch35 AICORE double kernel。 ## 文档更新 无接口或用户文档变更。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4018 | 26 天前 | |
abs等算子A5实现 Co-authored-by: ly_cann_coder<liyao152@huawei.com> # message auto-generated for no-merge-commit merge: !495 merge develop into master abs等算子A5实现 Created-by: ly_cann_coder Commit-by: ly_cann_coder Merged-by: cann-robot Description: ## 描述 新增以下算子的A5实现 |序号| 算子 | 功能 | |--|--|--| |1| abs | 为输入张量的每一个元素取绝对值 | |2| add | 对输入完成相加操作 | |3| addcdiv | 张量运算函数,用于执行乘除加组合操作,将张量除法(带缩放)+ 张量加法合并为单个操作 | |4| addcmul | 张量运算函数,用于执行乘除加组合操作,将张量乘法(带缩放)+ 张量加法合并为单个操作 | |5| axpy | 源操作数中每个元素与标量求积后和目的操作数中的对应元素相加 | |6| bincount | 计算非负整数数组中每个数的频率 | |7| ceil | 返回输入tensor中每个元素向上取整的结果 | |8| clip_by_value_v2 | 将输入的所有元素限制在一定范围内 | |9| concat | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |10| concat_v2 | 用于沿指定维度将多个输入 Tensor 进行拼接,输出包含所有输入数据按顺序拼接后的 Tensor | |11| equal | 计算两个Tensor是否有相同的大小和元素,返回一个Bool类型 | |12|exp|返回一个新的张量,该张量的每个元素都是输入张量对应元素的指数| |13| fill | 对张量进行填充操作,支持非连续的Tensor操作 | |14| floor | 返回输入Tensor中每个元素向下取整,并将结果回填到输入Tensor中 | |15| floor_div | 完成除法计算,对余数向下取整 | |16| floor_mod | 用于计算两个数的模 | |17| is_neg_inf | 判断输入张量的元素是否为负无穷 | |18| is_pos_inf | 判断输入张量的元素是否为正无穷 | |19| less | 判断输入self中的每个元素是否小于输入other的值,返回一个Bool类型的Tensor | |20| less_equal | 判断输入self中的元素值是否小于等于other的值,并将self的每个元素的值与other值的比较结果写入out中 | |21| logical_and | 对两个输入张量的对应元素执行「与逻辑」判断,输出布尔型张量(True/False) | |22| log | 对输入张量x的元素,逐元素进行对数计算,并将结果保存到输出张量y中 | |23| not_equal | 逐元素比较两个输入张量是否不相等 | |24| ones_like | 返回形状和类型相同的张量,所有元素都设置为1 | |25|sign|对输入的tensor逐元素进行Sign符号函数的运算并输出结果tensor| |26| sqrt | 完成非负数平方根计算,负数情况返回nan | |27| sqrt_grad | 完成梯度平方根计算 | |28| square | 为输入张量的每一个元素计算平方值 | |29| squared_difference | 为第一个输入张量减去第二个输入张量,并计算其平方值 | |30| tanh | 激活函数,返回与输入tensor shape相同的tensor,对输入tensor进行elementwise的计算 | |31| tril | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的右上部分置零 | |32| triu | 将输入的self张量的最后二维(按shape从左向右数)沿对角线的左下部分置零 | |33| zeros_like | 将张量填充为全零 | ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!495 | 7 个月前 | |
refactor: 消除 math 算子重复头文件依赖,统一引用 base 仓 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !2969 merge feature/conversion-dedup into master refactor: 消除 math 算子重复头文件依赖,统一引用 base 仓 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 消除 math 目录下 60+ 个算子的重复头文件依赖,将 tiling 基类和模板注册引用统一到 base 仓。 ### 改动原因 math 目录下各算子各自直接 #include tiling_base.h 和 tiling_templates_registry.h,且通过 using namespace Ops::Math::OpTiling 引入全局命名空间: - tiling_base.h 中 TilingBaseClass 已在 base 仓提取为 tiling_base_class.h - tiling_templates_registry.h 中 math 专用注册宏已拆分到 math_tiling_templates_registry.h - using namespace 引入全局命名空间会导致符号冲突风险 ### 改动方法 1. 修正 math_tiling_templates_registry.h 中文件注释和拼写错误 2. 批量更新 math 算子文件的 #include: - tiling_base.h → tiling_base_class.h - tiling_templates_registry.h → math_tiling_templates_registry.h 3. 移除 using namespace Ops::Math::OpTiling,改用显式命名空间: - TilingBaseClass → Ops::Base::TilingBaseClass - TilingRegistry::GetInstance() → Ops::Math::OpTiling::TilingRegistry::GetInstance() ## 关联的Issue - #1682 ## 测试 - 涉及的 math 算子二级冒烟测试已通过 ## 文档更新 无文档变更 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构,消除重复头文件依赖 See merge request: cann/ops-math!2969 | 2 个月前 | |
refactor: 将arch35算子kernel中MicroAPI接口统一迁移为Reg接口 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !4187 merge master into master refactor: 将arch35算子kernel中MicroAPI接口统一迁移为Reg接口 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 将 math 模块下 80+ 算子的 arch35 kernel 实现从 MicroAPI 接口迁移为 Reg(寄存器)接口,统一编程范式。 ### 改动范围 涉及算子: abs, abs_grad, add_n, adjacent_difference, arg_max_with_value, assign_add, assign_sub, atan2, bitwise_xor, cast, cdist, cdist_grad, ceil, complex_abs, cummin, cumsum, div, dot, exp, eye, floor, floor_div, floor_mod, fused_mul_add_n, grouped_bias_add_grad, inv, is_close, kth_value, lerp, lin_space, log, log1p, logical_or, mod, nan_to_num, neg, pow, power, reciprocal, reduce_all, reduce_any, reduce_log_sum_exp, reduce_nansum, reduce_prod, reduce_var, right_shift, rint, round, rsqrt, rsqrt_grad, sign, signbit, sinh, sort, sort_with_index, tanh, tanh_grad, tensor_equal, top_k_v2, trunc, truncate_div 等 ### 改动方式 - 将 MicroAPI 调用替换为等价 Reg API 调用 - 适配 arch35(ascend950)指令集特性 - 保持算子功能不变 ## 测试 - 涉及算子全量回归测试 ## 类型标签 - [x] 重构 ## 关联的Issue - #2295 See merge request: cann/ops-math!4187 | 21 天前 | |
fix: enable double path for remainder scalar tensor Co-authored-by: zhang-song-rui<zhangsongrui@h-partners.com> # message auto-generated for no-merge-commit merge: !4018 merge master into master fix: enable double path for remainder scalar tensor Created-by: zhang-song-rui Commit-by: zhang-song-rui Merged-by: cann-robot Description: ## 描述 修复 Ascend 950(RegBase)上 aclnnRemainderScalarTensor 在类型提升结果为 DT_DOUBLE 时的计算路径不一致问题。 修改前,RegBase 分支显式排除了 DT_DOUBLE。当 PromoteTypeScalarV35(other.dtype, self.dtype) 推导为 DT_DOUBLE 时,接口会进入通用分支,并按 out 的数据类型提前转换输入后再执行取余;若 out 为较低精度类型,会导致计算在降精度后进行,与类型提升规则不一致,存在精度损失风险。 本次修改移除 RegBase 分支对 DT_DOUBLE 的排除,使 Scalar-Tensor 场景统一按以下流程执行: 1. 使用 PromoteTypeScalarV35 推导计算类型; 2. 将 other 连续化并转换到推导类型,同时将 self 转换为同类型 Tensor; 3. 调用 l0op::FloorMod 完成计算; 4. 最后将结果转换到 out 的数据类型并写回。 对于 DT_DOUBLE,l0op::FloorMod 会通过 AICPU_DTYPE_SUPPORT_LIST 分发到 FloorModAiCpu,不会进入 arch35 仅支持 FP16/BF16/FP32/INT32/INT64 的 AICORE tiling/kernel 路径。 影响范围仅限 RegBase、非空 Tensor 的 aclnnRemainderScalarTensor;非 RegBase 路径、空 Tensor 快速返回、其他 remainder 接口及接口签名均不受影响。 ## 代码整改 - 按仓库 .clang-format 规范,使用 pre-commit 固定的 clang-format 18.1.8 对涉及文件进行格式整改; - 统一 extern C 代码块缩进、函数声明参数换行以及宏和函数调用的换行格式; - 格式整改不改变代码语义,除上述 double 路径修复外未引入其他逻辑修改; - 完整 pre-commit 检查已通过,包括 clang-format、trailing whitespace、end-of-file、merge conflict、private key、codespell 和 OAT 合规检查。 ## 关联的Issue - [Issue #2253:aclnnRemainderScalarTensor 在 RegBase double 路径提前降精度](https://gitcode.com/cann/ops-math/issues/2253) ## 测试 ### Ascend 950 全量验证 - 测试平台:Ascend950PR(RegBase),CANN 9.1.0。 - 对比版本: - PRE:修改前 26972d8; - POST:PR 修改后 87cdb6a。 - 测试方式:通过 C++ 直接调用 aclnn API,逐条执行 1000 个 Scalar-Tensor 用例,覆盖 double 类型提升、非 double 回归、0~8 维、连续/非连续 Tensor、空 Tensor、正负零、NaN/Inf、整数边界和非法参数。 | 用例集 | 数量 | PRE/POST 一致 | 预期差异 | 验证结论 | |---|---:|---:|---:|---| | D1:double scalar + integral tensor | 360 | 260 | 100 | 差异符合先 double 计算再 cast 的预期 | | D2:double tensor + 各类 scalar | 240 | 214 | 26 | 差异符合先 double 计算再 cast 的预期 | | N1:非 double 回归 | 160 | 160 | 0 | 无回归 | | S1:零、NaN、Inf、精度边界 | 100 | 100 | 0 | 行为一致 | | V1:非法参数与错误处理 | 80 | 80 | 0 | 行为一致 | | P1:RegBase 路径控制 | 60 | 36 | 24 | 差异符合预期 | | **合计** | **1000** | **850** | **150** | **通过** | 验证结果: - 1000 例全部执行完成,无 crash、hang 或非法内存访问; - 150 例差异全部集中在 promoted=DOUBLE && out!=DOUBLE 场景,符合本次修改的影响范围; - POST 保持 double 精度完成取余,仅在最后转换为 out 类型,修复了 PRE 版本提前降精度导致的结果偏差; - 差异用例中,PRE 与 PRE oracle 匹配 136/150,POST 与 POST oracle 匹配 138/150; - 非 double 160 例、边界值 100 例和非法参数 80 例均与 PRE 一致,未发现回归。 测试结论:通过。 ### 新增 Ascend950 回归 UT - 新增 math/floor_mod/tests/ut/op_api/test_aclnn_remainder_scalar_tensor.cpp,文件名符合 test_aclnn_*.cpp 收集规则; - 用例显式设置 NpuArch::DAV_3510,覆盖 scalar double 2049.0、tensor int32 2、out float16 的关键场景; - 定向构建与执行命令: TMPDIR=/tmp TMP=/tmp TEMP=/tmp CCACHE_TEMPDIR=/tmp/ops-math-ccache bash build.sh -u --opapi --ops=floor_mod --gtest_filter='l2_remainder_scalar_tensor_ascend950_test.*' -j2 - 本地执行结果:1 test from 1 test suite,1 PASSED; - 新增文件通过 clang-format 21.1.4 dry-run 和 git diff --check。 ### 静态检查 - 静态核对 DT_DOUBLE 后端分发:确认由 l0op::FloorMod 进入 AICPU 路径,不依赖 arch35 AICORE double kernel。 ## 文档更新 无接口或用户文档变更。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4018 | 26 天前 | |
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!992 | 6 个月前 | |
批量修改md文档冗余空格第2批 Co-authored-by: chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !3314 merge master into master 批量修改md文档冗余空格第2批 Created-by: gitcode-chenjiao Commit-by: chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 批量修改md中冗余空格 ## 关联的Issue [DOC_1962#冗余空格](https://gitcode.com/cann/ops-math/issues/1962) ## 测试 自验证 ## 文档更新 all md ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [X ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3314 | 2 个月前 |
FloorMod
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | × |
| Atlas 训练系列产品 | √ |
功能说明
-
算子功能: 将scalar self进行broadcast成和tensor other一样shape的tensor以后,其中的每个元素都转换为除以other的对应元素以后得到的余数。该结果与除数other同符号,并且该结果的绝对值是小于other的绝对值。 实际计算remainder(self, other)等效于以下公式:
outi=self−floor(self/otheri)∗otheriout_i = self - floor(self / other_i) * other_i outi=self−floor(self/otheri)∗otheri
-
示例:
self = 5.0 # float
other = tensor([[-1, -2],
[-3, -4]]).type(int32)
result = remainder(self, other)
# result的值
# tensor([[ 0., -1.],
# [-1., -3.]]) float
# 对于元素other中的-4来说,计算结果为5 - floor(5 / -4) * -4 = -3
# 可以看到,最终结果-3的绝对值小于原来的-4的绝对值。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 公式中的输入张量self_i | FLOAT16, BFLOAT16, FLOAT, INT32, INT64 | ND |
| x2 | 输入 | 公式中的输入张量other_i | FLOAT16, BFLOAT16, FLOAT, INT32, INT64 | ND |
| y | 输出 | 公式中的输出张量out_i | FLOAT16, BFLOAT16, FLOAT, INT32, INT64 | ND |
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_remainder_scalar_tensor | 通过aclnnRemainderScalarTensor接口方式调用FloorDiv算子 |