🧠 AI知识库

人工智能产业链与技术栈全景图 v0.3.0 · 2026-06-03

CANN

昇腾CANN — 华为AI计算架构 · 对标CUDA+cuDNN+TensorRT

🇨🇳 中国 🔌 算力平台 NPU工具链 (CANN)开源

简介

CANN(Compute Architecture for Neural Networks,异构计算架构神经网络)是华为昇腾AI处理器的核心软件平台,对标NVIDIA的CUDA+cuDNN+TensorRT三位一体生态。CANN提供了面向AI计算的全栈软件解决方案,包括算子开发工具Ascend C、高性能算子库(1500+算子、100+融合算子)、CATLASS模板库、Triton编译器支持,以及AscendCL编程接口和自动调优工具。CANN是华为昇腾AI生态的软件基石,承载从模型开发到推理部署的全流程,全面开源开放后正在构建中国自主AI算力的软件底座。

发布/成立2019中国
最新版本CANN 8.0
官网https://www.hiascend.com/software/cann
GitHubgithub.com/Ascend
开源协议Apache 2.0 / 部分商业许可

🏗️ 架构概览

CANN采用分层解耦的架构设计,从底层硬件向上依次包括:

  • 硬件适配层:支持昇腾310(推理)、昇腾910B(训练)等系列NPU,通过硬件抽象层屏蔽底层差异
  • 计算引擎层:核心计算与编译子系统,包括AICPU/Vector Core/Da Vinci Core的调度、算子编译优化、图编译引擎
  • 算子库层:AscendCL API、1500+内置算子、100+融合算子、CATLASS模板库
  • 编译器层:Ascend C编程语言编译器、Triton编译器、TVM接口兼容
  • 框架适配层:提供PyTorch适配(torch_npu)、MindSpore原生支持、TensorFlow/PaddlePaddle等适配

CANN的核心理念是通过"统一计算图+昇腾算子"实现框架无关的高性能计算。开发者无需感知底层硬件细节,即可享受自动化的算子调用和性能优化。

🧮 算子体系(1500+算子 · 100+融合算子)

CANN内置了业界最全面的算子库之一,涵盖:

  • 基础算子:矩阵运算(GEMM/GEMV)、卷积(Conv2D/Conv3D)、池化、归一化(BatchNorm/LayerNorm/RMSNorm)、激活函数(ReLU/SiGLU/GELU/SwiGLU)等800+算子
  • 融合算子:针对Transformer等大模型架构深度优化的100+融合算子(FlashAttention、FusedRMSNorm、FusedMLP、FusedSoftmax等),将多个连续操作合并为单一kernel,显著减少内存访问和调度开销
  • 数学库:对标cuBLAS的BLAS库、对标cuDNN的NN库、对标cuFFT的FFT库、对标cuRAND的随机数库
  • 通信算子:AllReduce、AllGather、ReduceScatter等分布式通信算子,与HCCS高速互联协议深度协同
⚡ 性能数据:在典型大模型场景中,CANN算子相比手动实现可实现2-5倍性能提升,融合算子可减少50%以上的kernel launch次数,端到端训练效率达到同等NVIDIA方案的80-95%。

💻 Ascend C编程语言

Ascend C是CANN生态中的核心编程语言,专为昇腾NPU的Da Vinci架构设计。它提供类C++的编程体验,允许开发者直接编写高性能算子kernel。主要特性包括:

  • 类CUDA编程模型:采用类似CUDA的grid/block/thread层次模型,降低从CUDA迁移的学习成本
  • 多层级存储管理:显式管理L1 Buffer/L2 Buffer/Global Memory,充分挖掘达芬奇架构的计算潜力
  • SIMD Vector指令:单指令多数据流向量化编程,实现高效并行计算
  • 自动流水线优化:编译器自动将计算任务拆分为取数→计算→写回的流水线阶段
  • 算子融合SDK:提供Tiling、多核同步等高级抽象,简化复杂算子开发

Ascend C的出现使得昇腾生态中的自定义算子开发门槛大幅降低,开发者无需深入研究硬件微架构即可编写高性能算子。

📦 CATLASS模板库

CATLASS(CANN Template Library for Ascend)是CANN提供的高性能计算模板库,对标NVIDIA的CUTLASS。它提供了一系列C++模板化的GEMM(通用矩阵乘法)和卷积实现,让开发者可以根据具体需求快速定制和组装算子:

  • 模板化矩阵乘法:支持M×N×K各种维度的GEMM变体,包括混合精度(FP16*FP16→FP32、BF16*BF16→FP32等)
  • 自定义Epilogue:在矩阵乘法的末尾阶段注入自定义操作(如ReLU、Scale、Bias等),避免额外kernel launch
  • Warp级/Block级调度:提供不同粒度的计算调度模板,适应不同规模的GEMM
  • 自动调优:通过Auto-tuning自动搜索最优的tiling参数和流水线配置

🔧 Triton编译器支持

CANN的Triton支持是其对标CUDA生态的重要举措。通过集成Triton编译器后端,开发者可以用Python编写自定义算子(类似于PyTorch的Triton DSL),自动编译为昇腾NPU的高效kernel:

  • Python DSL:使用Triton的Python领域特定语言编写算子,无需接触C/C++
  • 自动并行:编译器自动将算子映射到昇腾的向量计算单元
  • 动态shape支持:支持动态输入shape场景下的即时编译(JIT)
  • 渐进式迁移:CUDA生态中的Triton算子可经少量修改在昇腾NPU上运行

🌐 全面开源开放

CANN自2024年起加速全面开源开放策略,已开源的核心组件包括:

  • torch_npu:PyTorch的昇腾适配插件,GitHub已获得大量星标
  • ACL(AscendCL):CANN的应用层编程接口,提供C/C++/Python SDK
  • 算子开发工具:Ascend C编译器、TikTok DSL工具
  • 模型迁移工具:自动将PyTorch/TensorFlow模型迁移至昇腾平台
  • Profiling工具:全链路性能分析和调优工具

开源社区通过GitHub Ascend组织进行管理,提供详细的API文档、示例代码和技术博客。CANN 8.0版本开始支持社区贡献的算子PR。

👥 开发者生态

CANN正在构建中国最大的AI算力开发者生态:

  • 开发者数量:CANN开发者注册量突破300万(2025年数据)
  • 认证体系:华为认证昇腾工程师(HCIA/HCIP-Ascend)系列课程
  • 技术社区:昇腾社区(hiascend.com)提供文档、论坛、SIG组
  • 生态伙伴:已适配300+第三方模型和50+ISV解决方案
  • 活动赛事:每年举办的昇腾AI开发者大赛,参赛队伍超5000支

🆚 与CUDA生态对标

CANN对标产品说明
Ascend CCUDA类CUDA的编程语言,开发自定义算子
BLAS/NN库cuBLAS/cuDNN高性能数学和神经网络库
CATLASSCUTLASS模板化高性能计算库
ACL(AscendCL)CUDA Runtime API底层运行时编程接口
Ascend Graph引擎TensorRT推理图编译和优化引擎
Triton后端Triton (OpenAI)Python DSL自定义算子
torch_npuCUDA PyTorch后端PyTorch框架适配
Ascend ProfilerNVIDIA NSight性能分析和调试工具
1500+
内置算子
100+
融合算子
300万+
开发者注册
8.0
最新CANN版本