Skip to content

核心概念

理解 CANN,几个高频概念绕不开。本页做一个最小化的梳理。

1. 算子(Operator)

算子是深度学习计算的基本单元,例如卷积(Conv)、矩阵乘(MatMul)、激活(ReLU)等。

  • 框架里的每个运算,最终都要落到一个个算子上执行。
  • CANN 的 算子库(AOL) 为昇腾硬件提供了这些算子的高性能实现,运行在达芬奇 AI Core 上。
  • 当框架用到库中没有的算子时,可通过自定义算子开发补齐(进阶内容)。

2. AscendCL(ACL)

AscendCL(Ascend Computing Language) 是 CANN 面向开发者的统一编程接口(C/C++/Python)。

  • 提供设备管理、内存管理、模型加载、算子执行等能力。
  • PyTorch(torch_npu)、MindIE 等上层组件,底层都通过 AscendCL 与 NPU 交互。
  • 对绝大多数平台用户而言,无需直接编写 AscendCL 代码——它由框架在底层调用。

3. 计算图与图引擎(GE)

  • 计算图:把模型的运算组织成一张有向图,描述数据如何在算子间流动。
  • 图引擎(GE,Graph Engine):负责对计算图进行编译与优化(如算子融合),再交给 Runtime 调度执行,从而提升性能。

4. 集合通信(HCCL)

HCCL(Huawei Collective Communication Library) 是昇腾的集合通信库,提供 AllReduce、Broadcast 等原语。

  • Atlas 800(9010) 这类多 NPU 服务器上,多卡并行训练的梯度同步正是由 HCCL 完成。
  • 类比 NVIDIA 生态中的 NCCL。

小结

算子是计算的最小单元,AscendCL 是统一接口,GE 负责图编译优化,HCCL 负责多卡通信——它们共同构成了 CANN「硬件使能」的能力。