简单记录什么是UMD/KMD:UMD就是动态链接库;KMD就是.ko内核驱动模块

365bet开户平台 2025-07-10 11:52:40 admin 阅读 1144
简单记录什么是UMD/KMD:UMD就是动态链接库;KMD就是.ko内核驱动模块

目录

1 引言

2 什么是UMD、KMD

2.1 UMD:User Mode Driver(用户态驱动)

2.2 KMD:Kernel Mode Driver(内核态驱动)

3 个人理解

UMD(用户态驱动)是 动态链接库

KMD(内核态驱动)是 内核模块

1 引言

新入职一家公司,看群里之前的聊天记录发现了了两个名词,问了下chatgpt是什么意思,然后简单记录下。

2 什么是UMD、KMD

2.1 UMD:User Mode Driver(用户态驱动)

作用:

它是运行在用户空间的驱动程序。

主要负责接收应用层(如 OpenGL、Vulkan、OpenCL、HIP 等 API)发出的调用请求,并将这些请求转换为硬件指令。

它不直接控制硬件,而是将任务“包装好”交给 KMD 处理。

典型组成(不同厂商略有差异):

AMD 的 UMD 可能包括:

libamdocl64.so(OpenCL)

libhip_hcc.so(HIP)

libamd_comgr.so(Code object manager)

librocblas.so, libMIOpen.so(用于深度学习等)

Video 编解码相关的共享库(如 VCN UMD)

2.2 KMD:Kernel Mode Driver(内核态驱动)

作用:

运行在操作系统内核空间,直接与硬件打交道。

它接收来自 UMD 的指令并实际调度 GPU 工作,比如内存分配、上下文切换、DMA 数据传输、提交计算任务、调度线程、处理中断等。

是操作系统内核中的一部分,通常以内核模块(Linux 下是 .ko 文件)形式存在。

在 AMD ROCm 中的典型组件:

amdgpu.ko:基础的 GPU 驱动内核模块

kfd(Kernel Fusion Driver):ROCm 的计算调度内核驱动

3 个人理解

UMD(用户态驱动)是 动态链接库

本质就是 .so(Linux)或 .dll(Windows) 文件。

例如:

OpenCL 程序会链接 libamdocl64.so

HIP 程序会链接 libhiprtc.so / libhip_hcc.so

视频编解码程序可能链接 libamf.so

它们向上暴露 API 接口,供用户调用;

向下将调用通过系统调用(如 ioctl)发给内核态驱动。

KMD(内核态驱动)是 内核模块

是 .ko 文件(Linux)或 .sys(Windows)。

比如 AMD 的 amdgpu.ko、kfd.ko

它们接收 UMD 的系统调用,然后:

分配内存、映射显存

管理上下文、调度任务

和硬件通信(PCIe、DMA、寄存器操作等)

相关文章

DNF世界的支点到底有多强  400属强下荒古和支点对比分析
游戏搬砖怎么自动挂机?5款防封脚本+搬砖项目收益排行
明日之后橙色漂流筏在哪里 橙色漂流筏任务攻略