昇腾 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 调优
一句话总结:TBE = 快速开发;C++ Kernel = 极致性能。
如果你未来想往昇腾、GPU、NPU 算子岗发展,这块是必修课。
如果你是框架训练端开发:MindSpore 或 PyTorch Adapter
CANN 的训练侧主要依托两条路线:
- MindSpore(原生最佳):CANN 和 MindSpore 一家亲,用原生能力、全栈功能,MindSpore 体验最好
- PyTorch 前端(适合本来就用 PyTorch 的人):AutoGrad、OpBuilder、AOT、动态图转图优化都是可用的
总结一句:训练:MindSpore 最稳;PyTorch 最方便。
到底该学哪个?给你一个最清晰的选型图
- 你只做模型部署?学:Python ACL
- 你要做企业级推理服务?学:C++ AscendCL
- 你要做自定义算子?学:TBE + C++ Kernel
- 你搞训练?学:MindSpore / PyTorch Frontend
- 你是科研学生?学:Python ACL + PyTorch Frontend(最通用、性价比最高)
未来趋势:CANN 语言生态正在逐步收敛
未来几年 CANN 的语言路线会更清晰:
- Python → 上层易用封装
- C++ ACL → 核心部署接口(长期稳定)


