CANN 技术栈解析:Python、C++ 及算子开发选型指南
昇腾 CANN 软件栈由多层 API 和 Kernel 构成,包含多种语言接口。为简化理解,可将其分为三层:
- 高层:框架调用 — 类似 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 是 CANN 最稳、最强、最接近硬件的调用方式。
做真正的工程化推理,C++ ACL 是必须掌握的语言。
算子开发者:TBE 或 C++ Kernel
CANN 的算子开发分两类:
- TBE(Tensor Boost Engine):偏向静态图 + 大量已有模板,适合 Conv2D、Softmax、MatMul、BatchNorm 等已有算子二次开发。
- C++ AICore Kernel(更底层):偏硬件,写 AI Core 的 kernel pipeline,适合复杂融合算子手写 pipeline、算子性能极限优化、AICore scheduler 调优。


