首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPU驱动程序里有什么?

GPU驱动程序里有什么?
EN

Computer Graphics用户
提问于 2023-05-27 17:12:02
回答 1查看 56关注 0票数 0

有3种代码包含在利用GPU的程序中:

  1. CPU代码。
  2. CPU到GPU或GPU到CPU桥代码.这就是DirectX实际上是什么。
  3. GPU代码。在NVidia中,这被称为"Cuda内核“,而这正是实现DirectX的地方。

每个程序从1开始,使用2在GPU上调用预编译的3.

那么,使用上述分类,GPU“驱动程序”中到底包含了哪种代码呢?GPU是否需要类似操作系统的内核(而不是上面提到的库达内核),就像CPU一样?这是否也包含在驱动程序(通常是GB大小)中?

EN

回答 1

Computer Graphics用户

回答已采纳

发布于 2023-05-28 02:09:39

你的分类法充其量是不精确的。更准确的分类是:

  1. 用户代码。这是由CPU在用户模式下执行的代码。
  2. 司机代码。这是在以特殊权限运行的CPU上执行的代码,允许直接访问各种OS内部设备等等。
  3. 实际编译的GPU-本地代码。这是或多或少的任意代码,被传输到GPU并由一些GPU调用的进程执行。这些可以是计算内核、渲染命令调用的着色器等等。

这与您的分类法有许多不同之处。"DirectX“是在所有这些中传播的。并不是每个DirectX函数都是驱动程序代码。对于D3D12,构建命令缓冲区不需要驱动程序特权。它只是创建特定于GPU的令牌,最终将被赋予GPU。只有将这些命令交给GPU的实际操作才需要驱动程序特权。

此外,DirectX实现可以(而且将会)将内容插入到您的GPU着色器代码中。

"GPU驱动器“因此生活在这三个地方。它们中包含的代码用于实现用户代码用于与GPU通信的任何API抽象。驱动程序使用实现该抽象所需的任何工具。

至于GPU正在做什么,它通常是相当简单的。大多数GPU都有一个或多个队列,驱动程序将(应用户代码的请求)向其提交一系列命令。这个命令序列可以被认为是一个“程序”,但它通常比这个更简单。它们只是命令,队列将使用各种GPU资源执行,按顺序(某种程度上),首先执行到最后。

可能会有一系列状态设置命令,然后是呈现命令。该呈现命令将生成多个顶点着色器调用,这些调用贯穿整个呈现管道。此操作将涉及使用许多资源,包括计算单元。

命令队列不是程序,它只是一系列操作。可能没有条件逻辑,没有变量,这都是硬编码操作。这些操作的内部可以是灵活的,但哪些命令是可用的。

驱动程序的工作(以及其他许多事情)是根据用户代码的要求管理各种队列。它还将内存分配给进程(通常是根据请求)、在虚拟GPU内存中或从虚拟GPU内存中分页等。

但这一切都主要发生在CPU上。GPU仍然是一个主要由直接CPU操作控制的设备。

票数 1
EN
页面原文内容由Computer Graphics提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://computergraphics.stackexchange.com/questions/13497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档