FP64、FP32、FP16、FP8简介

目录

1、单精度浮点数FP32的表示

2、半精度浮点数FP16的表示

3、双精度浮点数FP64的表示

4、FP8

5、写在最后


1、单精度浮点数FP32的表示

浮点数由三部分组成:符号位、指数部分、尾数部分

以单精度浮点数为例,如图所示,符号位为1bit、指数位8bit、尾数位23bit

表达方式如下:

−1𝑠𝑖𝑔𝑛 × 2𝑒𝑥𝑝𝑜𝑛𝑒𝑛𝑡 −𝑏𝑖𝑎𝑠 ×1.𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎

其中bias决定了数的取值范围,默认值为127 

exponent-bias表示对1.𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎小数点右移的位数 

为什么是1.𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎而不是0.𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎、或者0. 0 𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎呢?

举个例子,十进制整数17可以表示为:1 × 25 × (0.10001)2,也可以表示为:1 × 26 × (0.010001)2

这样就给计算机处理增加了复杂性,为了同一表示,规定尾数部分最高位必须是1,也就是说尾数必须以0.1开头,对指数做相应的调整,这称为正规化(Normalize)。由于尾数部分的最高位必须是1,这个1就不必保存了,可以节省出一位来用于提高精度,我们说最高位的1是隐含的(Implied)。

因此,十进制整数17表示为

即:

1 × 24 × (1.0001)2

一些特殊情况:

1)exponent=0,且mantissa=0;表示数字0

2)exponent=0,且mantissa != 0;表示一个非常小的数

3)exponent=全f,且mantissa=0;表示无穷大。如果符号位为0,表示正无穷;如果符号位为1,表示负无穷

4)exponent=0,且mantissa != 0;非法。

举例:对于十进制数3.25,单精度浮点数如何表示?

0 10000000 10100000000000000000000

如图:

Sign=0

Exponent = 10000000(二进制)/128(十进制)

Bias = 127

Exponent - Bias = 1(小数点右移1位) 

1.𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎=1.101

小数点移位后:(11.01)2

1 × 21 + 1 × 20+0 × 2−1+ 1 × 2−2 =  2 + 1 + 0 + 0.25 = 3.25

2、半精度浮点数FP16的表示

单精度浮点数除了exponent和mantissa的长度、bias的值外,其余和单精度浮点数都一样

如图所示:

符号位为1bit、指数位5bit、尾数位10bit

Bias = 15

3、双精度浮点数FP64的表示

符号位为1bit、指数位11bit、尾数位52bit

Bias = 1023

4、FP8

FP8首次出现在2022年4月,Nvidia 发布的最新一代高性能GPU架构:H100。H100 TensorCore中引入了一种新的浮点类型FP8

如图所示:

有两种形式,E5M2和E4M3,对于E5M2,指数位5bit、尾数位2bit

bias的值和对应的FP8所能表示的数的取值范围如下表:

对于E4M3,指数位4bit、尾数位3bit

bias的值和对应的FP8所能表示的数的取值范围如下表:

5、写在最后

1)小程序

根据IEEE-754标准,十进制、十六进制、二进制、FP32转化

IEEE-754 Floating Point Converter (h-schmidt.net)

2)思考:FP64、FP32、FP16、FP8之间如何转换?

3)FP8、FP16数据规格可见:

https://download.csdn.net/download/weixin_42330305/86662920

  • 10
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值