Skip to content

CANN 软件栈全景

软件栈整体架构

CANN 软件栈是连接上层 AI 框架与底层昇腾硬件的完整软件体系。理解其分层结构是掌握 CANN 开发的基础。

┌──────────────────────────────────────────────────────────────┐
│                    用户应用层                                 │
│         AI 推理服务 / 训练任务 / 边缘部署应用                  │
└──────────────────────────┬───────────────────────────────────┘

┌──────────────────────────▼───────────────────────────────────┐
│                    AI 框架层                                  │
│    MindSpore    PyTorch    TensorFlow    PaddlePaddle         │
└──────────────────────────┬───────────────────────────────────┘
                           │ Framework Adaptor
┌──────────────────────────▼───────────────────────────────────┐
│                    CANN 软件栈                                │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              计算语言层(AscendCL)                   │    │
│  │   设备管理 | 内存管理 | 模型推理 | 流管理 | DVPP      │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              计算服务层                               │    │
│  │   AOL算子库 | AOE调优引擎 | Framework Adaptor         │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              计算编译层                               │    │
│  │   图编译器(GE) | TBE张量加速引擎 | ATC模型转换工具    │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
│  ┌─────────────────────────────────────────────────────┐    │
│  │              计算执行层                               │    │
│  │   Runtime运行时 | GE图引擎 | HCCL集合通信库           │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                              │
└──────────────────────────┬───────────────────────────────────┘

┌──────────────────────────▼───────────────────────────────────┐
│                    驱动层                                     │
│              NPU Driver(内核态 + 用户态)                    │
└──────────────────────────┬───────────────────────────────────┘

┌──────────────────────────▼───────────────────────────────────┐
│                    硬件层                                     │
│              昇腾 AI 处理器(达芬奇架构)                      │
└──────────────────────────────────────────────────────────────┘

CANN 安装包组成

CANN 软件包按功能分为多个独立安装包:

安装包文件名示例内容
Toolkitascend-cann-toolkit_8.x_linux-aarch64.run完整开发工具链(ATC/AscendCL/TBE等)
NNRTascend-cann-nnrt_8.x_linux-aarch64.run推理运行时(部署用)
NNAEascend-cann-nnae_8.x_linux-aarch64.run训练运行时
Kernelsascend-cann-kernels-910b_8.x_linux.run预编译算子二进制
HCCL包含在 Toolkit 中集合通信库

安装目录结构

/usr/local/Ascend/
├── ascend-toolkit/
│   └── latest/
│       ├── bin/          # ATC、atc等工具
│       ├── lib64/        # 动态库
│       ├── include/      # 头文件(AscendCL等)
│       ├── python/       # Python 绑定
│       ├── opp/          # 算子库
│       └── tools/        # 辅助工具
├── driver/               # NPU 驱动
└── firmware/             # 固件

环境变量配置

使用 CANN 前需要配置环境变量:

bash
# 设置 CANN 环境(通常加入 ~/.bashrc)
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# 或手动设置
export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
export PATH=${ASCEND_TOOLKIT_HOME}/bin:${ASCEND_TOOLKIT_HOME}/compiler/ccec_compiler/bin:$PATH
export LD_LIBRARY_PATH=${ASCEND_TOOLKIT_HOME}/lib64:${ASCEND_TOOLKIT_HOME}/lib64/plugin/opskernel:$LD_LIBRARY_PATH
export PYTHONPATH=${ASCEND_TOOLKIT_HOME}/python/site-packages:$PYTHONPATH
export ASCEND_OPP_PATH=${ASCEND_TOOLKIT_HOME}/opp
export ASCEND_AICPU_PATH=${ASCEND_TOOLKIT_HOME}

各组件职责详解

AscendCL(应用开发接口)

  • 面向应用开发者的 C/C++ API
  • 提供设备管理、内存管理、模型推理、流管理等功能
  • 是开发推理应用的主要入口

GE(图引擎)

  • 接收来自框架的计算图(IR)
  • 执行图优化(算子融合、内存复用等)
  • 将优化后的图编译为可执行模型
  • 在运行时管理图的执行

TBE(张量加速引擎)

  • 算子开发框架
  • 提供 DSL(领域特定语言)和 TIK(底层 API)两种开发模式
  • 负责将算子描述编译为 AI Core 可执行的二进制

Ascend C

  • 新一代算子编程语言(基于 C++)
  • 替代 TBE TIK,提供更友好的开发体验
  • 支持 CPU 侧仿真调试

ATC(模型转换工具)

  • 离线模型转换命令行工具
  • 将 ONNX/TensorFlow/Caffe 等格式转换为昇腾 .om 格式
  • 在转换过程中执行图优化和算子编译

Runtime(运行时)

  • 硬件资源管理(设备、流、事件)
  • 任务下发与调度
  • 内存管理(HBM 分配/释放)
  • 错误处理与恢复

HCCL(集合通信库)

  • 分布式训练的通信基础设施
  • 支持 AllReduce、AllGather、Broadcast 等 12 种通信原语
  • 自动感知网络拓扑,选择最优通信算法

AOE(调优引擎)

  • 自动化性能调优
  • OPAT:单算子调优
  • SGAT:子图调优
  • GDAT:梯度调优

AOL(算子加速库)

  • 预置 1500+ 基础算子
  • 100+ 融合算子
  • 覆盖 CV、NLP、推荐等主流场景

CANN 版本与昇腾硬件对应关系

CANN 版本与硬件型号有严格的对应关系,使用前需确认兼容性:

CANN 版本支持硬件备注
CANN 7.x910/910B/310P稳定版
CANN 8.0910B/910C/310P主流版本
CANN 8.1+910C/Atlas A2最新特性
始终使用与硬件驱动版本匹配的 CANN 版本,版本不匹配会导致运行时错误。

开发工具链概览

工具用途
atc模型转换命令行工具
npu-smiNPU 状态监控(类似 nvidia-smi)
MindStudio集成开发环境(IDE)
Profiling 工具性能分析
msame模型推理测试工具
acl_op_compiler单算子编译工具

典型开发流程

推理应用开发流程

1. 模型准备
   训练好的模型(PyTorch/TF/ONNX)

2. 模型转换(ATC)
   atc --model=model.onnx --framework=5 --output=model

3. 应用开发(AscendCL)
   初始化 → 加载模型 → 准备输入 → 推理 → 获取输出

4. 部署运行
   在昇腾设备上运行推理应用

自定义算子开发流程

1. 算子设计
   确定算子功能、输入输出规格

2. 算子实现(Ascend C / TBE)
   编写 Kernel 函数

3. 算子注册
   注册到框架(PyTorch/MindSpore)

4. 算子验证
   精度验证 + 性能测试

5. 调优(AOE)
   自动调优获得最优 Tiling 参数

基于昇腾CANN文档整理