PyPTO*华为昇腾 CANN 生态中的 Python 端算子加速库PyPTO* 并行张量/Tile 操作
·
PyPTO 是华为昇腾 CANN 生态中的 Python 端算子加速库,全称 Parallel Tensor/Tile Operation(并行张量/Tile 操作)。它让开发者可以直接用 Python 编写高性能算子,无需接触底层的 Ascend C 语言或硬件指令集。
核心定位
PyPTO 是 CANN 工具链中连接应用开发层和编译层的桥梁,基于 Tile 计算模型,将计算密集型算子高效映射到昇腾 NPU 的达芬奇架构上执行。
与 CANN 其他组件的关系
| 组件 | 定位 | 与 PyPTO 的关系 |
|---|---|---|
| Ascend C | 昇腾算子编程语言(最底层) | PyPTO 编译输出通过调用 Ascend C 底层接口生成可执行代码,在其之上构建 Python 抽象层 |
| ATB | Transformer 模型加速库 | ATB 在模型层面做算子编排,可调用 PyPTO 生成的算子;PyPTO 也可为 ATB 提供定制化算子 |
| catlass | 昇腾算子模板库(C++) | 两者技术上有交集,但 catlass 面向 C++ 开发者,PyPTO 面向 Python 开发者 |
主要特性
- Python 原生体验:通过
@pypto.frontend.jit装饰器即可将 Python 函数编译为 NPU 算子 - 多层中间表示(IR):编译管线包含 Tensor Graph → Tile Graph → Block Graph → Execution Graph 四层 IR
- 与 PyTorch 深度集成:利用 PyTorch FX Tracer 将动态图转换为 CANN PTO 静态图
- 仿真模式:无 NPU 硬件时可在纯 CPU 环境下验证算子逻辑和预估性能
- 分布式支持:提供 Shmem API 实现跨 rank 的高效数据交换,支持 MoE 等分布式训练场景
版本与硬件支持
| PyPTO 版本 | CANN 版本 | 发布时间 |
|---|---|---|
| 0.1.0 | — | 2026年1月 |
| 0.1.2 | CANN 8.5.0 | 2026年4月前 |
| 0.2.0 | CANN 9.0.0 | 2026年4月 |
支持硬件:Ascend 950PR、Atlas A2 训练/推理系列、Atlas A3 训练/推理系列。
简单示例
import pypto
import torch
@pypto.frontend.jit
def add_kernel(a: pypto.Tensor, b: pypto.Tensor, out: pypto.Tensor):
pypto.set_vec_tile_shapes(2, 8)
out[:] = pypto.add(a, b)
# 直接传入 torch 张量调用
x = torch.randn(3, dtype=torch.float32, device='npu:0')
y = torch.randn(3, dtype=torch.float32, device='npu:0')
result = add_kernel(x, y)
资源链接
- 官方仓库:https://gitcode.com/cann/pypto(或 https://atomgit.com/cann/pypto)
- CANN 社区:https://atomgit.com/cann
- 示例代码:https://atomgit.com/cann/cann-samples
更多推荐




所有评论(0)