Skip to content

CANN 架构与软件栈

1. CANN 是什么

CANN(Compute Architecture for Neural Networks)是华为面向 AI 场景推出的异构计算架构。它的核心职责是:

  • 向下:封装昇腾硬件达芬奇架构的底层细节;
  • 向上:为 PyTorch、MindSpore 等 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 上可执行的指令。

衔接