博客
关于我
【实时渲染】[RTR4 Chapter3]图形处理单元The Graphics Processing Unit
阅读量:329 次
发布时间:2019-03-04

本文共 1442 字,大约阅读时间需要 4 分钟。

GPU与计算机图形学基础知识

(1)单指令单数据(SISD)与单指令多数据(SIMD)的区别

单指令单数据(SISD)与单指令多数据(SIMD)的主要区别在于数据访问方式。SISD的CPU在执行加法指令时,会依次访问内存,分别获取两个操作数后再进行求和运算。而SIMD型的CPU能够同时访问多个数据,通过多个执行单元一次性处理所有运算任务。

(2)GPU中的warp与thread

在GPU中,thread是用于执行着色器程序的基本单元。与CPU的thread不同,GPU的thread包含内存空间,用于存储输入数据和执行所需的寄存器。多个thread如果执行相同的着色器程序,就被称为warp(NVIDIA术语)。例如,常见的warp大小为32个thread。

(3)warp读取内存时执行的操作

当warp需要从内存读取数据时,所有thread会暂停执行,等待读取完成。这种情况下,系统会切换到其他warp继续执行,因为不同warp之间没有数据交互,切换不会消耗时间。

(4)SIMD执行效率的影响因素

着色器程序的结构对效率有直接影响。寄存器数量有限,过多的thread需求会减少warp数量,导致GPU在拥塞时无法切换warp。动态分支(thread divergence)也会影响性能,因为不同thread可能执行不同的指令。

(5)渲染管线的可编程程度

渲染管线中的可编程部分包括顶点着色器、细分、几何着色器和片元着色器。细分和几何着色器在某些GPU中不可选,例如移动设备。不可编程的部分包括裁剪和光栅化。

(6)stream output阶段的作用

stream output用于将顶点数据以有序数组形式输出到stream中,供CPU或GPU使用。该阶段支持物理模拟,但输出的数据仅为浮点型,需要注意内存消耗。

(7)避免数据race condition的方法

GPU通过原子单元来避免数据竞争问题,但原子操作可能导致warp拥塞。需要确保多个着色器程序不同时修改同一内存区域。

(8)early-z算法的作用

early-z算法在片元着色器执行前进行深度测试,避免无效计算。这样可以节省资源,提高性能。

(9)SIMD执行效率的影响因素

着色器程序的结构和动态分支对SIMD执行效率有重要影响。过多的thread需求会减少warp数量,增加GPU等待时间。

(10)渲染管线的GPU实现

渲染管线按顺序包括顶点着色器、细分、几何着色器、裁剪、屏幕映射、光栅化、三角形准备与遍历、片元着色器和合并。可编程部分为顶点着色器、细分、几何着色器和片元着色器。

(11)着色器虚拟机的工作原理

着色器虚拟机(HLSL)被编译为中间语言(IL),驱动将IL转换为GPU特定指令集。虚拟机支持不同的寄存器类型,包括uniform输入、varying输入和临时寄存器。

(12)Tessellation Stage的三个部分

Tessellation Stage包括控制器、生成器和评估器。控制器和生成器处理输入数据,生成器输出顶点,评估器验证域的完整性。

(13)MRT的作用

MRT允许片元着色器输出到多个缓冲区,每个缓冲区称为render target。这种机制有助于处理多层渲染和特定效果,如阴影和渐变。

(14)GPU内存访问的特点

GPU的内存访问是并行的,warp中的所有thread会暂停等待数据。这种设计使得GPU在处理复杂计算时效率很高,但也带来了一定的控制挑战。

转载地址:http://jfuh.baihongyu.com/

你可能感兴趣的文章
Python 列表删除相同的元素
查看>>
python 列表生成式
查看>>
Python 列表解析 大文件
查看>>
python 列表转字典方法
查看>>
Python 列表(List)概述-ChatGPT4o作答
查看>>
Python网络爬虫基础进阶到实战教程
查看>>
Python 初学者需要知道的四条建议
查看>>
Python 判断字符串是否包含子字符串
查看>>
python 判断当前时间是否为零点
查看>>
python 利用pandas读取本地中CSV文件的指定列 列名重命名 并保存回本地
查看>>
python 利用pyspark读取HDFS中CSV文件的指定列 列名重命名 并保存回HDFS
查看>>
python 利用pyttsx3文字转语音
查看>>
python 利用已有Ner模型进行数据清洗合并
查看>>
python 到大数据开发工程师_如何成为一个大数据开发工程师?
查看>>
python 加密解密(base64, AES)
查看>>
Python 包管理器和 Node.js
查看>>
Python 单词字母顺序不变且所有倒排
查看>>
python 启动提示IDLE's subprocess didn't make conne...
查看>>
python 命令接口_实现“[命令][操作][参数]”样式的命令行接口?
查看>>
Python 和 OpenCV.如何检测图像中的所有(填充)圆形/圆形对象?
查看>>