失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > gpu浮点计算能力floaps_认识GPU浮点计算精度

gpu浮点计算能力floaps_认识GPU浮点计算精度

时间:2023-09-16 10:18:44

相关推荐

gpu浮点计算能力floaps_认识GPU浮点计算精度

● 认识GPU浮点计算精度

DirectX 9.0时代提出的Shader Model 2.0最重要的一点改进是增加对浮点数据的处理功能,以前GPU只能对整数进行处理,改进后提高渲染精度,使最终处理的色彩格式达到电影级别。Shader Model 2.0时代突破了以前限制PC图形图象质量在数学上的精度障碍,它的每条渲染流水线都升级为128位浮点颜色,让游戏程序设计师们更容易更轻松的创造出更漂亮的效果,让程序员编程更容易。而从通用性方面理解,支持浮点运算让GPU已经具备了通用计算的基础,这一点是至关重要的。

如果说DirectX 8中的Shader单元还是个简单尝试的话,DirectX 9中的Shader则成为了标准配置。除了版本升级到2.0外,DirectX 9中PS单元的渲染精度已达到浮点精度,传统的硬件T&L单元也被取消,在较低DirectX版本游戏运行时会使用VS单元模拟执行硬件T&L单元的功能。

浮点处理器能够统一执行多种任务

后来统一渲染架构提出进一步提高了着色器的运算效率,Pixel Shader(像素着色器)、Vertex Shader(顶点着色器)和Geometry Shader(几何着色器),三种具体的硬件逻辑被整合为一个全功能的着色器Shader。程序员不必为了两种结构不同的着色器分别编写程序,GPU内部的可编程单元被抽象为浮点处理器(Floating Point Processor)。

一个浮点数a由两个数m和e来表示:a = m × be。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。e是指数。关于浮点数表示法,我们可以通过看下面的表达式来理解:

Sign×1.matissa×2(exponent-bias)

我们可以将其套用在数143.5的表示上,这对应科学计数法的1.435×102。科学计数法的二进制表示是1.00011111×2111。因此底数被设为00011111(前导的1被省略),将指数偏移127来存储(由特定的浮点格式标准设置),也就是10000110。

不同的浮点格式用不同的位数来表示底数和指数,例如IEEE754标准中,一个32位单精度浮点数有一个符号位、一个8位的指数和一个23位的底数。底数和指数占有的位数决定了我们可以多精确的表示一个数字。对于143.5用IEEE754可以精确表示,但是如果浮点位数过多如143.98375329,就只能被取到143.98375,因为底数只占23位。

今天的GPU已经能够表示IEEE754标准提出的单精度32位和双精度64位浮点数。IEEE单精度格式具有24位有效数字,并总共占用32位。IEEE双精度格式具有53位有效数字精度,并总共占用64位。在这里基本浮点格式是固定格式,相对应的十进制有效数字分别为7位和17位。基本浮点格式对应的C/C++类型为float和double。

但是在以前,确切说是DirectX 9.0时代伊始,GPU还是要通过一代一代的改进才能表示更精确的浮点数。在R420和NV40竞争的时代,在速度和画质选择上,ATI选择了延续FP24+SM2.0的DirectX解决方案,而NVIDIA选择了经历过NV30尝试后成熟的FP32+SM3.0的解决方案。所以我们可以通过当时的GPU硬件浮点精度来看他们表示数字的实际效果,在这里我们还是表达143.98375329:

浮点格式

结果

误差

NVIDIA FP16

143.875

0.10875329(7×10-2%)

ATI FP24

143.98242

0.00133329(9×10-4%)

NVIDIA ATI PF32

143.98375

0.00000329(2×10-6%)

虽然在图形运算中32位单精度甚至是16位半精度已经完全足够使用,但是在面向通用计算设计的GPU中,由于需要的数据量巨大,往往只有在采用双精度甚至更高精度时才能获得可靠的结果,所以更为可靠的计算精度一直是GPU设计者不断追求的目标。但是精度提高意味着运算速度的下降,所以每一代GPU架构更新都意味着更大的寄存器和内部实现方式在高精度运算中能够获得更好的加速比。

如果觉得《gpu浮点计算能力floaps_认识GPU浮点计算精度》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。