CANN Runtime
昇腾 AI 处理器轻量级运行时环境 · 端云一致 · 高性能推理
CANN Runtime 是昇腾 AI 处理器的核心运行时底座,它通过提供统一的 API,使得上层应用、AI 框架、加速库能够高效利用 AI 处理器的硬件计算资源。
📚 文档导航
| 文档 | 定位与内容 | 入口 |
|---|---|---|
| ⚡ 快速入门 | 零基础起步,第一次接触 Runtime 的开发者。Runtime 简介 + 编程模型讲解,建议顺序阅读 | Runtime 简介 · 编程模型 |
| 📖 编程指南 | 深度开发手册,已跑通入门阶段 Hello CANN 后需要深入理解原理的开发者。原理解析 + 示例代码 | 编程指南 |
| 📋 API 参考 | 接口字典,开发过程中随时查阅函数定义。函数签名 + 参数说明 + 返回值 | 头文件说明 · API 参考 |
| 🏗️ 架构指南 | 面向贡献者的架构文档。Runtime 整体架构、模块设计、核心组件解析 | 架构指南 |
| 📝 研发规范 | 面向贡献者的规范指南,包括设计文档模板、编码规范、测试规范、代码检视规则 | 研发规范与贡献指南 |
🗺️ 成长地图
按以下路径循序渐进,从环境准备到独立开发:
🌱 入门阶段
| 学习步骤 | 内容说明 | 入口 |
|---|---|---|
| 环境准备 | CANN 一键安装 | CANN 一键安装 |
| 概念原理 | Runtime 核心概念与编程模型:Host-Device 架构、Context、Stream、同步异步、典型执行流程 | Runtime 简介 · 编程模型 |
| Hello CANN | 第一个可运行的 Runtime 程序,完成最小计算闭环 | Hello CANN |
🚀 进阶阶段
| 主题 | 核心内容 | 对应样例 |
|---|---|---|
| 初始化 | 包括环境初始化、设备资源配置、日志管理等 | device_normal |
| 内存管理 | 包括 Host 内存管理、Device 内存管理、多流同步内存、内存拷贝(同步异步)、物理内存共享 (pid) 等 | h2d_sync_memory_copy |
| 异步任务 | 包括 Stream 管理、Event 管理、Kernel 加载与执行、内存语义同步等 | simple_stream |
🔥 高级阶段
| 主题 | 核心内容 | 对应样例 |
|---|---|---|
| ACL Graph | 包括单流捕获、跨流捕获、任务更新等 | model_update |
| 多设备编程 | 包括跨 Device 数据交互、P2P 内存访问、多卡并行调度等 | device_P2P |
| 进程间通信 | 包括 IPC Event 同步、IPC 内存共享(指定 PID/不指定 PID)等 | ipc_event · ipc_memory |
| 性能调优 | 包括 Profiling 采集并落盘、获取网络模型中算子的性能数据、可视化展示原始性能数据解析结果等 | create_config |
❓ 常见问题
| 问题类型 | 典型场景 | 入口 |
|---|---|---|
| 入门阶段 | 初始化失败、Device 配置、版本兼容等入门常见问题 | 版本不匹配 · aclInit 失败 · aclrtSetDevice 失败 · 默认机制 |
| 基础开发 | 内存管理、Stream 同步、数据复制等基础 API 使用问题 | 内存申请失败 · Stream 下发失败 · 内存策略 · 同步机制 |
| 进阶场景 | 多设备编程、ACL Graph、进程通信等复杂场景问题 | 多Device Stream · ACL Graph 任务提交 · IPC 页表对齐 · P2P 配置失败 |
| 错误排查 | 错误码解读、算子异常、日志定位等诊断方法 | 异步错误码 · 算子输出异常 · 遇错即停定位 · plog 日志定位 |
相关资源
昇腾社区 ·
Runtime 样例仓库 ·
完整文档中心
CANN Runtime 文档 | 华为昇腾