当前位置: 首页 > news >正文

昇腾软件栈全景

昇腾软件栈全景

软件栈整体架构

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 软件包按功能分为多个独立安装包:

安装包 文件名示例 内容
Toolkit ascend-cann-toolkit_8.x_linux-aarch64.run 完整开发工具链(ATC/AscendCL/TBE等)
NNRT ascend-cann-nnrt_8.x_linux-aarch64.run 推理运行时(部署用)
NNAE ascend-cann-nnae_8.x_linux-aarch64.run 训练运行时
Kernels ascend-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 前需要配置环境变量:

# 设置 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.x 910/910B/310P 稳定版
CANN 8.0 910B/910C/310P 主流版本
CANN 8.1+ 910C/Atlas A2 最新特性
始终使用与硬件驱动版本匹配的 CANN 版本,版本不匹配会导致运行时错误。

开发工具链概览

工具 用途
atc 模型转换命令行工具
npu-smi NPU 状态监控(类似 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 参数