Appearance
CANN 架构与软件栈
1. CANN 是什么
CANN(Compute Architecture for Neural Networks)是华为面向 AI 场景推出的异构计算架构。它的核心职责是:
可以把它理解为昇腾生态里对标 NVIDIA CUDA 的那一层。
2. 软件栈分层
CANN 自下而上由多层组件构成,一次模型计算会逐层向下传递:
| 层次 | 组件 | 作用 |
|---|---|---|
| 驱动层 | Driver / Firmware | 驱动与固件,直接管理 NPU 硬件 |
| 运行时 | Runtime | 设备管理、内存管理、Stream/任务调度 |
| 算子库 | AOL(Ascend Operator Library) | 提供卷积、矩阵乘等高性能算子实现 |
| 图引擎 | GE(Graph Engine) | 计算图的构建、编译与优化 |
| 集合通信 | HCCL | 多卡 / 多机的 AllReduce 等分布式通信 |
| 接口层 | AscendCL(ACL) | 面向应用的统一编程接口 |
3. 一段代码是怎么跑到 NPU 上的
以 PyTorch 训练为例,调用链大致如下:
PyTorch 代码 (tensor.to('npu'))
│
torch_npu ← 框架适配插件
│
CANN: GE 图编译 / AOL 算子 / Runtime 调度
│
Driver / Firmware
│
昇腾 910 NPU (达芬奇 AI Core)这条链路解释了为什么 CANN 是「硬件使能」层——它让上层框架的算子,最终变成 NPU 上可执行的指令。
