昇腾 CANN 学习路径指南:Python、C++ 与算子开发选型
昇腾 CANN 生态功能日益丰富,但接口众多导致开发者面临选择困难。为简化理解,可将 CANN 软件栈分为三层:
- 高层:框架调用 — 类似 PyTorch、MindSpore 训练推理
- 中层:算子 API 调用 — AscendCL、ACL Python、算子编写接口
- 底层:Kernel 语言 — TBE、C++ Kernel、融合算子 DSL
模型部署场景:Python (ACL Python)
适用场景:
- 部署 YOLO
- 部署大模型
- ONNX 转 OM
- 简单前后处理
推荐理由: Python ACL 是官方主推的部署 API,上手最快。无需接触复杂内存、流或 Device buffer,也不需编写 Kernel。
总结:非算子开发人员,使用 Python ACL 即可满足需求。
深度部署与工程化:C++ AscendCL
适用场景:
- 性能要求高
- 大规模离线服务
- 推理服务并发、异步、流水线
- 自定义 DVPP / AIPP / Memory Pool 管理
推荐理由: 真实生产环境中,Python 存在性能瓶颈,多线程支持有限。C++ AscendCL 是最稳定且接近硬件的调用方式。
总结:做真正的工程化推理,C++ ACL 是必须掌握的技能。
算子开发:TBE 或 C++ Kernel
TBE (Tensor Boost Engine):偏向静态图 + 大量已有模板,适合 Conv2D、Softmax、MatMul、BatchNorm 等已有算子的二次开发。
C++ AICore Kernel:偏底层,写 AI Core 的 kernel pipeline,适合复杂融合算子手写 pipeline、性能极限优化及 AICore scheduler 调优。
总结:TBE 用于快速开发,C++ Kernel 用于极致性能。


