driver驱动层解读:NPU能工作的幕后功臣
说到驱动程序,可能很多人觉得很底层、很神秘。确实,驱动是软件和硬件之间的桥梁,普通开发者很少直接接触。但理解驱动的基本概念,对于深入理解整个系统很有帮助。今天就来聊聊CANN生态中的driver项目。负责NPU硬件的控制和管理是所有上层软件工作的基础普通开发者通常不需要直接接触了解驱动的作用,有助于理解整个系统架构。
本文基于CANN开源社区的driver仓库进行技术解读
- CANN组织链接:https://atomgit.com/cann
- 仓库链接:https://atomgit.com/cann/driver
前言
说到驱动程序,可能很多人觉得很底层、很神秘。确实,驱动是软件和硬件之间的桥梁,普通开发者很少直接接触。
但理解驱动的基本概念,对于深入理解整个系统很有帮助。今天就来聊聊CANN生态中的driver项目。
驱动是什么
简单说,驱动就是让操作系统能够识别和控制硬件的软件。
没有驱动,操作系统不知道怎么和NPU"说话",CANN的所有功能都无从谈起。
驱动的职责
NPU驱动主要负责:
1. 设备初始化
NPU上电后,驱动负责初始化各个硬件模块。
2. 资源管理
- 显存管理:分配、释放NPU内存
- 任务调度:决定谁先谁后
- 电源管理:控制功耗
3. 任务执行
接收上层的计算任务,发送给NPU执行。
4. 中断处理
NPU发生事件(如任务完成),驱动负责响应。
5. 错误处理
硬件出问题时,驱动负责检测和上报。
在系统中的位置
驱动运行在操作系统内核空间,具有最高权限。
和Runtime的关系
runtime和driver经常被一起提到,它们的关系:
| 组件 | 层次 | 职责 |
|---|---|---|
| Runtime | 用户态 | 高级资源管理、任务管理 |
| Driver | 内核态 | 底层硬件控制 |
普通开发者需要关心吗
大多数情况下不需要:
✅ 使用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系统架构时的笔记,如有不准确欢迎指正。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)