0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单精度、双精度和半精度浮点格式之间的区别

strongerHuang 来源:嵌入式专栏 作者:strongerHuang 2020-11-29 09:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们学过数学,都知道有理数和无理数,然后在有理数中有一类叫浮点数的数字,不知道大家对这些还有没有印象?

在软件编程的时候,我们也会用到浮点数,一种既包含小数又包含整数的数据类型。

下面就来讲讲关于浮点数中,单精度、双精度、多精度和混合精度计算的区别。

1

关于圆周率 π我们提到圆周率 π 的时候,它有很多种表达方式,既可以用数学常数3.14159表示,也可以用一长串1和0的二进制长串表示。

圆周率 π 是个无理数,既小数位无限且不循环。因此,在使用圆周率进行计算时,人和计算机都必须根据精度需要将小数点后的数字四舍五入。

在小学的时候,小学生们可能只会用手算的方式计算数学题目,圆周率的数值也只能计算到小数点后两位——3.14;而高中生使用图形计算器可能会使圆周率数值排到小数点后10位,更加精确地表示圆周率。

在计算机科学中,这被称为精度,它通常以二进制数字来衡量,而非小数。对于复杂的科学模拟,开发人员长期以来一直都依靠高精度数学来研究诸如宇宙大爆炸,或是预测数百万个原子之间的相互作用。

数字位数越高,或是小数点后位数越多,意味着科学家可以在更大范围内的数值内体现两个数值的变化。借此,科学家可以对最大的星系,或是最小的粒子进行精确计算。

但是,计算精度越高,意味着所需的计算资源、数据传输和内存存储就越多。其成本也会更大,同时也会消耗更多的功率。

由于并非每个工作负载都需要高精度,因此 AI 和 HPC 研究人员可以通过混合或匹配不同级别的精度的方式进行运算,从而使效益最大化。

NVIDIA Tensor Core GPU 支持多精度和混合精度技术,能够让开发者优化计算资源并加快 AI 应用程序及其推理功能的训练。

2

单精度、双精度和半精度浮点格式之间的区别

IEEE 浮点算术标准是用来衡量计算机上以二进制所表示数字精度的通用约定。在双精度格式中,每个数字占用64位,单精度格式占用32位,而半精度仅16位。要了解其中工作原理,我们可以拿圆周率举例。

在传统科学记数法中,圆周率表示为3.14 x100。但是计算机将这些信息以二进制形式存储为浮点,即一系列的1和0,它们代表一个数字及其对应的指数,在这种情况下圆周率则表示为1.1001001 x 21。

在单精度32位格式中,1位用于指示数字为正数还是负数。指数保留了8位,这是因为它为二进制,将2进到高位。其余23位用于表示组成该数字的数字,称为有效数字。而在双精度下,指数保留11位,有效位数为52位,从而极大地扩展了它可以表示的数字范围和大小。

半精度则是表示范围更小,其指数只有5位,有效位数只有10位。圆周率在每个精度级别表现如下:

3

多精度和混合精度计算的差异多精度计算意味着使用能够以不同精度进行计算的处理器,在需要使用高精度进行计算的部分使用双精度,并在应用程序的其他部分使用半精度或单精度算法

混合精度(也称为超精度)计算则是在单个操作中使用不同的精度级别,从而在不牺牲精度的情况下实现计算效率。

在混合精度中,计算从半精度值开始,以进行快速矩阵数学运算。但是随着数字的计算,机器会以更高的精度存储结果。

例如,如果将两个16位矩阵相乘,则结果为32位大小。使用这种方法,在应用程序结束计算时,其累积得到结果,在准确度上可与使用双精度算法运算得到的结果相媲美。

这项技术可以将传统的双精度应用程序加速多达25倍,同时减少了运行所需的内存、时间和功耗。它可用于 AI 和模拟 HPC 工作负载。

随着混合精度算法在现代超级计算应用程序中的普及,HPC 专家 Jack Dongarra 提出了一个新的基准,即 HPL-AI,以评估超级计算机在混合精度计算上的性能。

混合精度计算主要用于现在很火人工智能领域,感兴趣的读者可以上网搜索更多关于混合精度计算的内容。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    90

    文章

    3707

    浏览量

    96759
  • 浮点数
    +关注

    关注

    0

    文章

    62

    浏览量

    16353
  • 单精度
    +关注

    关注

    0

    文章

    8

    浏览量

    2401

原文标题:单精度、双精度、多精度和混合精度计算的区别是什么?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ADC分辨率与精度区别是什么

    简单点说,“精度”是用来描述物理量的准确程度的,而“分辨率”是 用来描述刻度划分的。从定义上看,这两个量应该是风马牛不相及的。(是不是有朋友感到愕然^_^)。 很多卖传感器的JS就是利用这一点
    发表于 12-05 06:24

    浮点指令(三)

    浮点指令以及简单解释 fcvt.s.d fcvt.s.d rd, rs1, rs2//f[rd] = f32f64(f[rs1]) 精度单精度
    发表于 10-24 13:38

    浮点指令(二:精度

    浮点指令以及简单解释 fadd.d fadd.d rd, rs1, rs2//f [rd] = f [rs1] + f [rs2] 精度浮点加(Floating-point Ad
    发表于 10-24 13:00

    蜂鸟E203扩展浮点指令设计(2)

    中的单精度浮点数值等于rs2中的值,结果为1,否则为0,将结果写回通用整数寄存器rd中。 此三个指令可以和fmin,fmax指令采用同一个模块实现,其区别是,此三个指令返回的结果为1或者0,并且返回
    发表于 10-24 11:56

    浮点指令(一:单精度

    浮点指令以及简单解释 fadd.s fadd.s rd, rs1, rs2//f [rd] = f [rs1] + f [rs2] 单精度浮点加(Floating-point Add
    发表于 10-24 11:42

    蜂鸟E203扩展浮点指令设计(1)

    浮点指令介绍 单精度浮点指令一共30个:其中包括26个32位指令;4个16位的压缩指令。 如果按照分类来算一共有以下几种指令: 2.1浮点数读写指令 32位指令
    发表于 10-24 10:00

    浮点指令(七:寄存器)

    0x7fc00000,精度浮点对应Canonical-NaN数值为0x7ff80000_00000000 如果同时支持单精度浮点(F扩展指
    发表于 10-24 08:28

    RVF单精度浮点指令集扩展介绍(2)

    RVF单精度浮点指令集扩展 RVF扩展了26条浮点指令。 浮点乘加指令 浮点比较、最大最小值、转移、符号注入、分类指令
    发表于 10-22 07:26

    IEEE 754浮点算术标准(1)

    IEEE 754 浮点格式 单精度浮点格式如图所示: 符号位 指数项:移码。加上bias(127)可求得具体数值 尾数项:原码。
    发表于 10-22 07:19

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    ,生成的HDL代码与目标无关。可以在任何通用FPGA或ASIC上部署该设计。 下面介绍如何在Simulink中创建单精度浮点乘法 直接使用乘法模块即可,并将输入口改为单精度浮点 使用
    发表于 10-22 06:48

    RVF单精度浮点指令集扩展介绍(1)

    RVF单精度浮点指令集寄存器扩展 RVF扩展了32个独立的浮点通用寄存器,其中0号寄存器可变。 RVF扩展了1个fcsr寄存器,存放了异常标志和动态舍入模式。 RVF扩展必须对misa csr寄存器进行一定的修改。
    发表于 10-22 06:04

    risc-v中浮点运算单元的使用及其设计考虑

    的应用。 在RISC-V中,浮点运算单元分为单精度浮点数(32位)和精度浮点数(64位),通常
    发表于 10-21 14:46

    大彩讲堂:VisualHMI-LUA教程-获取设置单精度浮点数函数的应用

    软件开发中各种协议对浮点数数据进行获取和赋值处理。get_float(vtype,addr)读取单精度浮点数(float)寄存器,返回有符号单精度
    的头像 发表于 10-16 00:00 1231次阅读
    大彩讲堂:VisualHMI-LUA教程-获取设置<b class='flag-5'>单精度</b><b class='flag-5'>浮点</b>数函数的应用

    labview数据类型与PLC 数据类型之间的转换(来自于写入浮点数到汇川 PLC中的数据转换关键的修改)

    浮点数默认数据类型是64为精度浮点数,PLC中real浮点数数据类型,是单精度
    发表于 02-24 19:01

    ADS1248放大倍数与精度之间的关系,是否是放大倍数越高,精度越高?

    ADS1248放大倍数与精度之间的关系,是否是放大倍数越高,精度越高
    发表于 01-22 06:29