返回 ELI5 知识库首页 🌉 HETERO COMPUTE ARCHITECTURE
🌉 Compute Architecture for Neural Networks · Huawei Ascend

什么是 CANN(异构计算架构)?

如果说昇腾 NPU 是一座马力超强的国产高铁列车,那么 CANN 就是全套铁轨调度系统与同声传译总管 —— 上接全球通用的 PyTorch 乘客指令,下控达芬奇 3D Cube 硬件轮轨极速飞驰!

🟩 英伟达阵营:CUDA 软件底座

20 年垄断的 AI 计算基建

拥有 cuDNN、cuBLAS、NCCL 与全球开发者的肌肉记忆。绝大多数开源论文和框架都默认基于 CUDA API 编写。

PyTorch / TensorFlow / JAX CUDA 驱动 / cuDNN / NCCL Nvidia GPU 硬件 (Hopper / Blackwell)
  • 🔹 垄断壁垒:软硬件强绑定,非英伟达芯片无法直接调用
  • 🔹 生态惯性:海量算子经过 20 年极致手工调优
VS
🔴 华为昇腾阵营:CANN 突围软件栈

向下释放硬件,向上兼容生态

华为自研的异构计算架构(Compute Architecture for Neural Networks)。提供 Ascend C 算子语言、GE 图引擎优化Torch-NPU 无缝插件!

PyTorch (torch_npu) / MindSpore 🌉 CANN (AscendCL + GE + 算子库) 昇腾 NPU 硬件 (Ascend 910/310)
  • 代码近乎零修改迁移:通过 Torch-NPU 插件直接跑 PyTorch 模型
  • 全栈软硬协同:针对 3D Cube 架构自动做算子融合与图编译优化
💡

一句话顿悟:为什么说没有 CANN,昇腾 NPU 就无法运转?

造出强悍的 NPU 芯片只完成了 30% 的工程,剩下的 70% 全在软件! CANN 就是昇腾芯片的灵魂:它把复杂的神经网络计算图(如 Transformer 注意力层)自动拆解、优化、编译成 3D Cube 能够理解的原生指令,让芯片算力 100% 满血爆发!

拆解 CANN 架构的 4 大核心器官

从算子开发到全图自动融合,读懂昇腾软件栈的运行机理

⚙️

1. Ascend C 算子开发语言

华为推出的原生 C/C++ 算子编程语言。采用类似标准多线程的编程范式,让开发者能轻松为达芬奇架构编写极致加速算子。

2. GE (Graph Engine) 图引擎

计算图编译超级优化器。自动将相邻的多个矩阵算子(如 MatMul + BiasAdd + ReLU)进行垂直融合,减少昂贵的显存搬运。

🔌

3. AscendCL 统一应用接口

CANN 对外统一的 C/C++ API(Ascend Computing Language)。管理设备内存生命周期、执行流(Stream)调度与模型加载。

🌐

4. HCCL 集合通信库

对标英伟达 NCCL。专为数万张昇腾卡集群设计的超高速通信库,支持 AllReduce、AllGather 等分布式训练核心同步操作。

🕹️ CANN 计算图与算子流转演练台

观察一个大模型计算请求如何穿透 CANN 各层,最终在昇腾达芬奇硬件上满载运行:

1. Framework 框架层 PyTorch (torch_npu) / MindSpore
2. AscendCL 统一接口 内存申请 · Stream 调度 · 模型加载
3. GE 图编译 & 算子库 图优化 · 算子融合 · 内存复用
4. 昇腾硬件执行 3D Cube + Vector 单元满载开火
CANN 运行时状态 (Runtime Feed)
系统就绪。请选择任务并点击“启动 CANN 流水线”观察分层调度。
当前活跃算子: IDLE
🔄 生态破局

Torch-NPU:一行代码平替

为了打破 CUDA 的生态垄断,华为开发了 torch_npu 插件。

开发者只需在原脚本开头加上 import torch_npu,底层算子就会自动重定向至 CANN 高性能库,迁移成本极低。

⚡ 算子融合魔法

消灭无谓的显存搬运

在大模型训练中,GPU/NPU 往往把大量时间耗费在“从显存读数据 ➔ 算一步 ➔ 写回显存”的循环中。

CANN 的 GE 图引擎能将多个连续算子融合成单个巨型内核,数据留在片上高速缓存中连续运算,速度提升数倍。

🛡️ 战略底座

构筑自主软硬件双闭环

CANN 不仅服务于华为自家的 MindSpore,更主动拥抱全球主流大模型生态(如 vLLM、DeepSpeed、Megatron)。

它让国产昇腾算力真正成为全球开发者用得起、用得顺的“坚实第二选择”