GPU的另一个重要参数——浮点计算能力

GPU的另一个重要参数是浮点计算能力。浮点计数是利用浮动小数点的方式使用不同长度的二进制来表示一个数字,与之对应的是定点数。同样的长度下浮点数能表达的数字范围相比定点数更大,但浮点数并不能精确表达所有实数,而只能采用更加接近的不同精度来表达。

FP32单精度计算

单精度的浮点数中采用4个字节也就是32位二进制来表达一个数字,1位符号,8位指数,23位小数,有效位数为7位。


FP64双精度计算

双精度浮点数采用8个字节也就是64位二进制来表达一个数字,1位符号,11位指数,52位小数,有效位数为16位。


FP16半精度计算

半精度浮点数采用2个字节也就是16位二进制来表达一个数字, 1位符号、5位指数、10位小数,有效位数为3位。


因为采用不同位数的浮点数的表达精度不一样,所以造成的计算误差也不一样。

对于需要处理的数字范围大而且需要精确计算的科学计算来说,就要求采用双精度浮点数,例如:计算化学,分子建模,流体动力学。

对于常见的多媒体和图形处理计算、深度学习、人工智能等领域,32位的单精度浮点计算已经足够了。

对于要求精度更低的机器学习等一些应用来说,半精度16位浮点数就可以甚至8位浮点数就已经够用了。

对于浮点计算来说,CPU可以同时支持不同精度的浮点运算,但在GPU里针对单精度和双精度就需要各自独立的计算单元,一般在GPU里支持单精度运算的单精度ALU(算术逻辑单元)称之为FP32 core,而把用作双精度运算的双精度ALU称之为DP unit或者FP64 core。

本文节选自 架构师技术联盟(ID:ICT_Architect),作者:Hardy,转载此文目的在于传递更多信息,版权归原作者所有。

推荐阅读