本文基于CANN开源社区的driver仓库进行技术解读

  • CANN组织链接:https://atomgit.com/cann
  • 仓库链接:https://atomgit.com/cann/driver

前言

说到驱动程序,可能很多人觉得很底层、很神秘。确实,驱动是软件和硬件之间的桥梁,普通开发者很少直接接触。

但理解驱动的基本概念,对于深入理解整个系统很有帮助。今天就来聊聊CANN生态中的driver项目。

驱动是什么

简单说,驱动就是让操作系统能够识别和控制硬件的软件。

应用程序

CANN SDK

Runtime运行时

Driver驱动

NPU硬件

没有驱动,操作系统不知道怎么和NPU"说话",CANN的所有功能都无从谈起。

驱动的职责

NPU驱动主要负责:

1. 设备初始化

NPU上电后,驱动负责初始化各个硬件模块。

2. 资源管理

  • 显存管理:分配、释放NPU内存
  • 任务调度:决定谁先谁后
  • 电源管理:控制功耗

3. 任务执行

接收上层的计算任务,发送给NPU执行。

4. 中断处理

NPU发生事件(如任务完成),驱动负责响应。

5. 错误处理

硬件出问题时,驱动负责检测和上报。

在系统中的位置

硬件

内核空间

用户空间

PyTorch等框架

CANN SDK

Runtime

NPU Driver

NPU设备

驱动运行在操作系统内核空间,具有最高权限。

和Runtime的关系

runtime和driver经常被一起提到,它们的关系:

组件 层次 职责
Runtime 用户态 高级资源管理、任务管理
Driver 内核态 底层硬件控制
NPU Driver Runtime 应用 NPU Driver Runtime 应用 执行请求 系统调用 硬件命令 完成 返回 结果

普通开发者需要关心吗

大多数情况下不需要:

✅ 使用PyTorch/TensorFlow → 不需要
✅ 使用CANN SDK开发 → 不需要
✅ 开发Ascend C算子 → 不需要

需要关心的情况:

  • 系统管理员:安装、更新驱动
  • 底层开发:开发Runtime等系统软件
  • 问题排查:某些硬件相关的bug

驱动相关的操作

查看驱动信息

# 查看NPU设备信息
npu-smi info

# 查看驱动版本
npu-smi info -m

常见问题

问题1:找不到设备

  • 检查驱动是否安装
  • 检查设备是否被识别

问题2:驱动版本不匹配

  • CANN版本和驱动版本需要匹配
  • 参考官方兼容性列表

总结

driver是CANN生态的底层组件:

  • 负责NPU硬件的控制和管理
  • 是所有上层软件工作的基础
  • 普通开发者通常不需要直接接触

了解驱动的作用,有助于理解整个系统架构。

相关链接

  • driver仓库:https://atomgit.com/cann/driver
  • runtime仓库:https://atomgit.com/cann/runtime
  • npu-smi工具文档

这篇是我理解CANN系统架构时的笔记,如有不准确欢迎指正。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐