CANN PyPTO 元素级倒数算子 pypto.reciprocal 使用指南
CANN PyPTO 元素级倒数算子 pypto.reciprocal 使用指南【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto导读本文系统讲解 CANN PyPTOParallel Tensor/Tile Operation 编程范式中元素级倒数算子pypto.reciprocal的完整用法覆盖产品支持情况、函数原型、参数与精度模式HIGH_PRECISION / INTRINSIC、约束条件以及可复现的调用示例。读者将掌握如何在昇腾 AI 处理器上通过 PyPTO 完成out 1 / input的逐元素倒数计算并理解其底层 Python 绑定与 ST 测试实现从而在实际算子开发中正确选型精度模式并规避格式限制。产品支持情况pypto.reciprocal在以下昇腾产品系列上受支持Ascend 950PR / Ascend 950DT支持Atlas A3 训练系列产品 / Atlas A3 推理系列产品支持Atlas A2 训练系列产品 / Atlas A2 推理系列产品支持说明以上支持情况以当前仓库文档声明为准实际使用前建议结合目标环境的产品型号与 PyPTO 版本确认。功能说明pypto.reciprocal计算输入张量的元素级倒数element-wise reciprocal数学定义为out[i] 1 / input[i]该算子不改变输入张量的形状与数据类型仅对每个元素独立执行倒数运算属于典型的逐元素element-wise向量算子可广泛应用于归一化、注意力 softmax 分母求逆、归一化因子计算等需要取倒数的场景。函数原型pypto.reciprocal(input, precision_typepypto.PrecisionType.HIGH_PRECISION) - Tensor从源码看该接口定义在 python/pypto/op/math.py#L1382-L1412函数体直接调用底层绑定接口op_wrapper def reciprocal(a: Tensor, precision_type: PrecisionType PrecisionType.HIGH_PRECISION) - Tensor: ... return pypto_impl.Reciprocal(a, precision_type)其中pypto_impl.Reciprocal在 python/pypto/pypto_impl/init.pyi#L627 中声明是 PyPTO 对外暴露的 C/pybind 绑定入口。此外Tensor对象还提供等价的方法调用形式见 python/pypto/tensor.py#L933-L934def reciprocal(self, precision_type: PrecisionType PrecisionType.HIGH_PRECISION) - Tensor: return pypto.reciprocal(self, precision_type)因此以下两种写法等价y pypto.reciprocal(x) y x.reciprocal()参数说明参数类型说明inputTensor输入张量。支持的数据类型为DT_FP16、DT_BF16、DT_FP32。不支持空 Tensor支持的维度1-4 维Shape Size 不大于 2147483647即 INT32_MAX。precision_typePrecisionType可选倒数操作的精度模式。默认值为PrecisionType.HIGH_PRECISION。HIGH_PRECISION使用更高精度的计算方式减少精度损失。INTRINSIC直接使用芯片指令进行计算速度更快。精度模式 PrecisionType 详解PrecisionType是 PyPTO 内置的枚举类型定义于 Python 侧 python/pypto/enum.py#L37PrecisionType pypto_impl.PrecisionType其枚举成员在类型声明文件 python/pypto/pypto_impl/init.pyi#L140-L142 中可确认class PrecisionType(enum.Enum): INTRINSIC ... HIGH_PRECISION ...两种模式的取舍建议HIGH_PRECISION默认底层采用更高精度的中间计算路径能显著减少除法/取倒数过程中的精度损失适合对数值精度敏感、且性能余量充足的场景。注意reciprocal的默认值正是HIGH_PRECISION与rsqrt、sqrt、exp、log等默认INTRINSIC的算子不同说明该算子默认策略更偏向精度优先。INTRINSIC直接映射到芯片上的倒数指令intrinsic instruction计算速度快适合对吞吐敏感、对精度要求相对宽松的场景。同一枚举还被div、remainder、pow、exp、sqrt、rsqrt、log等算子复用见 python/pypto/op/math.py 中多处precision_type参数因此掌握该枚举的语义即可迁移到其他数学算子。返回值说明类型说明Tensor包含输入张量元素级倒数的新张量。返回张量与输入张量形状一致且不修改原输入张量。约束说明使用pypto.reciprocal时需注意以下限制Tensor 类型输入不支持TileOpFormat.TILEOP_NZ格式。若输入张量采用 NZ 分形格式需要先转换为受支持的格式如 ND 等后再调用本算子。此外输入张量必须满足支持数据类型DT_FP16、DT_BF16、DT_FP32不支持整型因为整型除法语义与浮点倒数不同不支持空 Tensor支持 1-4 维Shape Size 不大于 INT32_MAX2147483647。调用示例示例1基本使用默认高精度模式import pypto x pypto.tensor([4], pypto.DT_FP32) y pypto.reciprocal(x) # Input x: [-0.4595, -2.1219, -1.4314, 0.7298] # Output y: [-2.1763, -0.4713, -0.6986, 1.3702]该示例即文档 API 注释与 python/pypto/op/math.py#L1400-L1406 中的内置示例对 FP32 四元素张量逐元素取倒数输出与输入一一对应如1 / (-0.4595) ≈ -2.1763。示例2使用高精度模式进行 FP16 计算import pypto # 使用高精度模式进行FP16计算 x pypto.tensor([4], pypto.DT_FP16) y pypto.reciprocal(x, pypto.PrecisionType.HIGH_PRECISION) # Input x: [4] # Output y: [0.25]FP16 有效位数较少默认高精度模式可降低舍入误差。也可使用等价的方法调用形式y x.reciprocal(pypto.PrecisionType.HIGH_PRECISION)示例3使用指令模式INTRINSICimport pypto # 使用指令模式 x pypto.tensor([4], pypto.DT_FP32) y pypto.reciprocal(x, pypto.PrecisionType.INTRINSIC) # Input x: [4] # Output y: [0.25]INTRINSIC 模式直接使用芯片倒数指令追求更快的计算速度适合性能敏感场景。源码级实现佐证从 Python 绑定到 ST 测试底层绑定与调用链pypto.reciprocal的完整调用链为pypto.reciprocal(x, precision_type) └─ pypto_impl.Reciprocal(a, precision_type) # 见 python/pypto/op/math.py#L1412 └─ PrecisionType 枚举pypto_impl.PrecisionType # 见 python/pypto/enum.py#L37绑定入口Reciprocal声明于 python/pypto/pypto_impl/init.pyi#L627其实际实现位于 C 侧的算子内核/编译管线中负责把逐元素倒数翻译为设备侧向量指令。在 tile 编程中的典型用法结合测试验证仓库的 ST 测试 python/tests/st/operation/vector/test_reciprocal.py 展示了reciprocal在 tile 分形编程中的标准用法先通过pypto.view切出 tile再对 tile 调用reciprocal并通过pypto.assemble写回结果张量def op_reciprocal(params, a, b): n, m a.shape view_shape, tile_shape params for b_idx in pypto.loop(int(np.ceil(n / view_shape[0])), nameLOOP_RECIPROCAL_L0, idx_nameb_idx): for s_idx in pypto.loop(int(np.ceil(m / view_shape[1])), nameLOOP_RECIPROCAL_L1, idx_names_idx): tile_a pypto.view( a, view_shape, [b_idx * view_shape[0], s_idx * view_shape[1]], valid_shape[...], ) pypto.set_vec_tile_shapes(tile_shape[0], tile_shape[1]) tile_a.move(pypto.reciprocal(tile_a)) pypto.assemble(tile_a, [b_idx * view_shape[0], s_idx * view_shape[1]], b)其 golden 参考实现直接使用 PyTorch 的torch.reciprocal见同文件 python/tests/st/operation/vector/test_reciprocal.py#L40-L41def op_reciprocal_golden(param, a, b): return torch.reciprocal(a)一维场景的测试见 python/tests/st/operation/vector/test_vector_operation_1d.py#L474-L506其中在pypto.function上下文中对长度为tiling * 4的 FP32 张量按 view/tile 切分后逐 tile 执行tile_a.move(pypto.reciprocal(tile_a))并用torch.reciprocal的结果以rtol1e-3, atol1e-3做数值比对。这说明reciprocal可直接作用于 view/tile 切片天然适配 PyPTO 的 tile 分形编程模型输出精度可通过与torch.reciprocal的比对测试进行验证默认容差 1e-3。在张量除法中的隐式应用从 python/pypto/tensor.py#L406 可以看到PyPTO 张量的除法实现内部复用了reciprocalreturn pypto.mul(pypto.reciprocal(self), other)因此a / b标量或张量倒数场景在底层可能经由reciprocal加mul组合完成这也解释了为何reciprocal的精度模式会直接影响除法结果的数值精度——需要高精度除法结果时应显式使用PrecisionType.HIGH_PRECISION。相关接口pypto.rsqrt计算输入张量的元素级平方根的倒数1 / sqrt(x)默认精度模式为INTRINSIC。pypto.div计算两个张量的元素级除法同样支持precision_type精度模式参数。小结pypto.reciprocal是 PyPTO 数学算子库中最基础的逐元素算子之一一句话概括其用法对 FP16/BF16/FP32 且 1-4 维的 Tensor 调用pypto.reciprocal(x)即得到逐元素倒数默认高精度模式需要极致性能时可切换PrecisionType.INTRINSIC。开发时注意三点输入不支持TileOpFormat.TILEOP_NZ格式精度敏感场景优先保持默认的HIGH_PRECISION该算子可无缝用于 view/tile 分形编程并可作为底层构件参与除法等复合运算的实现。【免费下载链接】pyptoPyPTO发音: pai p-t-oParallel Tensor/Tile Operation编程范式。项目地址: https://gitcode.com/cann/pypto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Android商城App课程设计全攻略:从环境搭建到答辩演示

Android商城App课程设计全攻略:从环境搭建到答辩演示

简介:面向高校Android课程设计、实训作业与毕业设计场景,购物商城App开发报告提供了完整写作参考。内容围绕项目背景、开发环境、详细设计、运行演示和心得体会展开,完整呈现购物商城App从需求分析、技术选型到功能实现的过程:采用…

2026/9/19 12:57:46 阅读更多 →
SeaTunnel JDBC SQL Server Sink 连接器实战指南:配置详解、数据类型映射与精确一次写入

SeaTunnel JDBC SQL Server Sink 连接器实战指南:配置详解、数据类型映射与精确一次写入

SeaTunnel JDBC SQL Server Sink 连接器实战指南:配置详解、数据类型映射与精确一次写入 【免费下载链接】seatunnel SeaTunnel is a multimodal, high-performance, distributed, massive data integration tool. 项目地址: https://gitcode.com/GitHub_Trending…

2026/9/20 15:00:24 阅读更多 →
Zephyr 开发板实战:Microchip PIC32CZ CA80 Curiosity Ultra(pic32cz_ca80_cult)驱动与烧录全指南

Zephyr 开发板实战:Microchip PIC32CZ CA80 Curiosity Ultra(pic32cz_ca80_cult)驱动与烧录全指南

Zephyr 开发板实战:Microchip PIC32CZ CA80 Curiosity Ultra(pic32cz_ca80_cult)驱动与烧录全指南 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS …

2026/9/19 12:57:46 阅读更多 →

最新新闻

基于Vue3和Three.js的智慧校园3D可视化项目实践指南

基于Vue3和Three.js的智慧校园3D可视化项目实践指南

简介:面向Vue3与three.js开发者的智慧校园3D场景实践资源,提供可自由旋转、缩放、切换视角及模型自动旋转的校园三维模型,并支持在场景内播放视频,适合需要快速搭建3D展示平台的前端开发者参考。压缩包共142个文件,包含…

2026/9/20 15:00:23 阅读更多 →
分布式CPS安全防护实战:拜占庭容错与GEOSHIELD落地经验

分布式CPS安全防护实战:拜占庭容错与GEOSHIELD落地经验

分布式信息物理系统(CPS)的安全防护,这些年我从工业控制现场一路做到边缘计算节点,踩过的坑比读过的论文还多。GEOSHIELD 这个项目标题一出来,我第一反应不是"又一个安全框架",而是——终于有人把…

2026/9/20 15:00:23 阅读更多 →
2026年AI编程工具横评:六款前端主流助手实测对比

2026年AI编程工具横评:六款前端主流助手实测对比

2026年再聊前端开发,AI编程工具已经不是“要不要用”的问题,而是“用哪一款、怎么配合着用”的问题。但说实话,最近帮团队做技术选型调研的时候,我发现这道题的难度比两年前大了不少:工具数量翻了几倍,每家…

2026/9/20 15:00:23 阅读更多 →
微信小程序+PHP+Vue问卷系统:动态渲染与统计实现全解析

微信小程序+PHP+Vue问卷系统:动态渲染与统计实现全解析

做“璘梦”这个问卷调查App的时候,最想说的第一句话是:这类项目的难度不在技术,在把整条数据链路串起来的细致活。用户在小程序里填一份问卷,管理员在后台创建一份问卷、看一份统计报表,听起来都是常规操作&#xff0c…

2026/9/20 15:00:23 阅读更多 →
如何快速搭建无网络数据传输链路:用 ggwave 三步发出第一声

如何快速搭建无网络数据传输链路:用 ggwave 三步发出第一声

如何快速搭建无网络数据传输链路:用 ggwave 三步发出第一声 【免费下载链接】ggwave Tiny data-over-sound library 项目地址: https://gitcode.com/GitHub_Trending/gg/ggwave 手头有两台设备,一台是只有喇叭和麦克风的电脑,另一台是…

2026/9/20 15:00:23 阅读更多 →
winget-cli 的 Update-WinGetPackage 命令详解:用 Microsoft.WinGet.Client PowerShell 模块批量升级已安装软件包

winget-cli 的 Update-WinGetPackage 命令详解:用 Microsoft.WinGet.Client PowerShell 模块批量升级已安装软件包

包管理器CLI 【免费下载链接】winget-cli WinGet is the Windows Package Manager. This project includes a CLI (Command Line Interface), PowerShell modules, and a COM (Component Object Model) API (Application Programming Interface). 项目地址: https:/…

2026/9/20 14:59:22 阅读更多 →

日新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →