L3 · 算力平台层 · CANN
华为CANN — 昇腾AI处理器计算架构与编程平台
简介
CANN(Compute Architecture for Neural Networks)是华为昇腾AI处理器的计算架构和编程平台,是连接上层AI框架(MindSpore、PyTorch、TensorFlow等)和底层昇腾AI芯片的关键中间层。CANN提供了完整的AI计算编程能力,包括Ascend C编程语言、CATLASS高性能算子模板库、1500+预置神经网络算子库、AscendNPU IR中间表示以及高性能集合通信库。CANN对标NVIDIA CUDA生态,是华为构建昇腾AI软件生态的核心基础设施,其设计目标是为AI开发者提供类似CUDA的底层编程体验,同时充分发挥昇腾达芬奇架构的硬件性能。
| 最新版本 | CANN 8.0 |
| 核心组成 | Ascend C · CATLASS · 算子库 · AscendNPU IR · 集合通信库 |
| 支持框架 | MindSpore · PyTorch · TensorFlow · ONNX |
| 官网 | https://www.hiascend.com/software/cann |
🏗️ CANN核心模块
CANN全览
CANN整体架构分为三层:底层是Ascend NPU驱动和运行时(Runtime),提供设备管理、内存管理、流(Stream)管理等基础功能;中间层是计算引擎层,包括Ascend C编译器、算子编译器(TBE/Ascend C DSL)、图编译器(GE,Graph Engine)和集合通信库(HCCL);顶层是应用接口层,提供C/C++、Python等编程语言的API接口以及AI框架适配层(Frameworks Adapter)。CANN支持动态图和静态图两种执行模式,可根据模型特征自动选择最优执行策略。
Ascend C编程语言
Ascend C是华为针对昇腾AI处理器自研的类CUDA C/C++编程语言,允许开发者直接编写昇腾NPU上的核函数(Kernel)。Ascend C提供了丰富的内置函数(Intrinsics)来访问达芬奇架构的3D Cube、向量和标量计算单元。开发者可以使用Ascend C编写高性能的自定义算子,充分发挥昇腾芯片的硬件潜力。Ascend C的编程模型与CUDA Kernel类似,采用SPMD(单程序多数据)执行模型,降低了CUDA开发者迁移到昇腾平台的学习成本。
CATLASS模板库
CATLASS(CANN Template Library for AI Software Stack)是华为推出的高性能算子模板库,类似于NVIDIA CUTLASS。CATLASS提供了一系列基于模板的高性能算子实现,包括矩阵乘法(GEMM)、卷积(Convolution)、归一化(Normalization)、激活函数(Activation)等。开发者可以通过模板参数化定制算子行为,无需从零编写底层代码。CATLASS充分利用了达芬奇架构的3D Cube矩阵计算单元,在FP16/BF16/INT8等不同精度下均能实现接近硬件理论峰值的高性能计算。
1500+算子库
华为CANN预置了超过1500个经过深度优化的AI算子,覆盖了当前主流AI模型的全部计算需求。算子库包括:基础数学算子(加减乘除、指数对数、三角函数等)、矩阵计算算子(GEMM、Batched GEMM、Attention计算等)、神经网络算子(卷积、池化、归一化、Dropout、Softmax等)、图像处理算子(JPEG编解码、缩放裁剪、颜色空间转换等)、语音处理算子(FFT、MFCC等)。所有算子均经过华为专业团队的深度优化,在昇腾芯片上实现了接近理论峰值的性能。
AscendNPU IR
AscendNPU IR(Intermediate Representation)是CANN的中间表示层,类似于LLVM IR或MLIR。它提供了一个统一的、与硬件无关的中间表示格式,用于表示AI计算图。AI框架生成的模型通过框架适配层转换为AscendNPU IR,然后由CANN的图编译器(GE)进行图优化、算子融合、内存优化等编译优化,最后生成昇腾NPU上可执行的二进制代码。AscendNPU IR支持自动微分、自动混合精度、量化感知训练等高级编译优化特性。
集合通信库(HCCL)
华为集合通信库(Huawei Collective Communication Library,HCCL)是昇腾平台的高性能分布式通信库,对标NVIDIA NCCL。HCCL提供了AllReduce、AllGather、ReduceScatter、Broadcast等标准集合通信操作,针对昇腾芯片间的HCCS高速互联协议进行了深度优化,同时支持100Gb RDMA RoCE v2网络。HCCL在千卡到万卡规模的分布式训练场景下可实现接近线性的加速比,是支撑Atlas 900 SuperCluster大规模集群训练的关键技术组件。
🆚 业界主流方案对标
| 华为模块 | 对标方案 | 方案简介 | 对标方案官网 |
|---|---|---|---|
| CANN整体平台 | CUDA(NVIDIA) | NVIDIA CUDA是GPU计算的事实标准,提供完整的GPU编程体系,涵盖CUDA C/C++、cuBLAS、cuFFT、cuDNN等库 | developer.nvidia.com/cuda |
| 1500+算子库 / CATLASS | cuDNN(NVIDIA) | NVIDIA深度神经网络加速库,提供卷积、RNN、BatchNorm等核心算子的高性能GPU实现 | developer.nvidia.com/cudnn |
| Ascend C编程语言 | ROCm(AMD) | AMD的GPU计算平台,兼容CUDA编程模型,支持HIP编程框架和ROCm软件栈 | amd.com/rocm |
| CANN图编译器 + IR | oneAPI(Intel) | Intel统一编程平台,支持CPU/GPU/FPGA,提供DPC++编程语言和oneDNN等库 | intel.com/oneapi |
| AscendNPU IR / 自动调优 | Triton编译器(OpenAI) | OpenAI推出的GPU编程语言和编译器,支持自动优化CUDA Kernel,降低GPU编程门槛 | triton-lang.org |