我是否认为现代消费类显卡使用完全相同的GPU结构进行实际图形渲染和裸露计算?

时间:2013-04-26 20:09:47

标签: driver hardware gpu gpu-programming firmware

我是否正确地认为现代消费者显卡(比如传统的nVidia和ATi型号)使用完全相同的GPU结构和操作进行实际图形渲染(通过DirectX,OpenGL等)和裸计算(通过OpenCL,CUDA)等)?这实际上是软件(固件+驱动程序)部分,它可以支持所有DirectX / OpenGL功能而无需以纯硬件方式执行任何特定于图形的操作吗?所有这些都使它成为图形加速卡(而不是纯粹的通用计算加速单元)的软件逻辑抽象层 - 仅仅是在硬件上运行的应用程序吗?

我真正感兴趣的是,如果有可能(无论需要多少工作和专业知识)来编写一个完整的软件(用户空间)3D渲染(比如一个3D游戏)引擎使用CUDA / OpenCL可以有效地(或接近它)实现所有DirectX / OpenGL功能,就像卡本身(带有固件和驱动程序)一样,当这个引擎工作时,任何卡硬件部件都将被闲置

导致我这个问题的原因包括我从经验中得知的以下事实:

  1. 硬件图形加速驱动程序会产生许多明显的错误。

  2. 软件渲染(我曾经选择玩3D游戏)几乎总是更稳定(不太容易出现挂起和视觉伪影)。

  3. 通用CUDA / OpenCL操作似乎相对稳定且具有确定性,比“硬件”更加可靠。图形加速。

  4. 因此,实现3D渲染"软件"似乎是一个奇怪的想法。方式,但尽可能使用GPU而不是CPU进行计算。例如,这似乎可以解决Linux驱动程序混乱问题。

2 个答案:

答案 0 :(得分:2)

不,你不能使用OpenCL / Cuda实现全速OpenGL / Direct3D。

3D渲染过程的一些关键部分,例如曲面细分和光栅化,都是硬连线的,以及整个可编程图形管道的东西。来自AMD's GCN whitepaper的第12页:

  

3D管道由几种类型的可编程着色器组成   (例如顶点,外壳,域,几何和像素着色器)和各种各样的   固定功能硬件操纵三角形和像素。

在AMD的GCN架构中,他们称之为导出单元(第8页),"the Compute Unit's window to the fixed function graphics hardware",您无法使用上一个OpenCL标准访问它。

您很可能会在NVidia GPU中找到类似的东西。

要更加务实地回答你的上一次审讯:你需要一个驱动程序来执行GPGPU,这意味着无论如何你都无法解决“Linux驱动程序混乱”。

答案 1 :(得分:1)

图形卡的物理设计与通用计算单元不同。

通用计算加速单元将具有更少,更快的核心。例如,英特尔有一个80 x86核心,而Nvidia的核心有一千或两个核心。

然而,除此之外,它们大致相同。由于延迟问题,相同的延迟问题,相同的吞吐量目标。

为了回答另一个问题,DirectX和OpenGL以软件方式完成,从GPU架构中大量受益。