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

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

    关注

    88

    文章

    3432

    浏览量

    92221
  • 浮点数
    +关注

    关注

    0

    文章

    58

    浏览量

    15778
  • 单精度
    +关注

    关注

    0

    文章

    8

    浏览量

    2224

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

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

收藏 人收藏

    评论

    相关推荐

    一文带你秒懂IEEE 754浮点

    一、简介1、常见的浮点数表示方式是IEEE754标准,它规定了浮点数的存储格式和运算规则,这个标准定义了两种浮点数表示:单精度和双
    的头像 发表于 03-18 08:09 286次阅读
    一文带你秒懂IEEE 754<b class='flag-5'>浮点</b>数

    毫米波雷达半精度浮点存储格式分析

    本文介绍了TC3xx单片机雷达信号处理单元SPU支持的半精度浮点格式,将其和32bit整型数格式进行比较,分析了两者的动态范围及实际处理误差,发现半
    的头像 发表于 02-20 08:26 96次阅读
    毫米波雷达半<b class='flag-5'>精度</b><b class='flag-5'>浮点</b>存储<b class='flag-5'>格式</b>分析

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

    分辨率和精度区别,非常详细且易懂,值得一看,全文如下: 最近做了一块板子,当然考虑到元器件的选型了,由于指标中要求精度比较高,所以对于AD的选型很慎重。 很多人对于精度和分辨率的
    发表于 12-19 06:41

    单精度和双精度浮点数的区别

    单精度和双精度是计算机中表示浮点数的两种不同的精度。在计算机中,浮点数用来表示带有小数部分的实数,而单精
    的头像 发表于 12-15 10:25 1929次阅读

    单精度和双精度浮点数的区别

    在计算机科学和数值计算中,浮点数是一种用于表示实数的数据类型。浮点数有两种精度级别:单精度和双精度。这两种
    的头像 发表于 12-13 10:55 1097次阅读

    滚珠螺杆的精度和使用场景之间的关系?

    滚珠螺杆的精度和使用场景之间的关系?
    的头像 发表于 11-10 17:48 235次阅读
    滚珠螺杆的<b class='flag-5'>精度</b>和使用场景<b class='flag-5'>之间</b>的关系?

    如何用Verilog怎样将小数(例如0.2,-3.4之类的)转化为单精度浮点数?

    用Verilog怎样将小数(例如0.2,-3.4之类的)转化为单精度浮点数?
    发表于 10-18 06:48

    MCU中精度浮点数是用什么格式存储的?

    MCU中精度浮点数是用什么格式存储的
    发表于 10-11 06:24

    STM32 Cortex-M4与M3介绍

    FPU是什么 独立于CPU的一个浮点运算单元,可以使能或关闭。 支持单精度浮点数的运算:加、减、乘、除、乘加、平方根… 整数、单精度浮点(3
    发表于 09-12 07:09

    Anlogic Float IP用户手册

    Anlogic Float IP 基于 IEEE754 浮点数标准,实现了浮点数下的四则运算,IP 特色如下:IP 支持 Anlogic 所有器件 浮点数类型:
    发表于 08-09 07:53

    ARM Cortex-A5浮点单元技术参考手册

    和操作。 FPU的特点是: •支持单精度精度浮点格式。 •支持
    发表于 08-02 08:05

    32bit的浮点格式

    EE标准754规定了三种浮点格式单精度、双精度、扩展精度。前两者正好对应C语言里头的float、double或者FORTRAN里头的re
    的头像 发表于 07-29 16:42 546次阅读
    32bit的<b class='flag-5'>浮点</b><b class='flag-5'>格式</b>

    西门子PLC读取的仪表数据(浮点数)如何转换为整数

    看到一个网友的问题,西门子200PLC采用MODBUS RTU协议采集多功能仪表的数据,接收的数据均是32位的单精度浮点数,我怎么在PLC程序里面实现单精度浮点数与十进制
    的头像 发表于 06-01 10:18 3001次阅读
    西门子PLC读取的仪表数据(<b class='flag-5'>浮点</b>数)如何转换为整数

    精度ToF法TDC MS1005

    通讯、 多种测量模式,适合于激光雷达和激光测距。 主要特点  双通道单精度模式 60ps  单通道双精度模式 30ps  非校准测量范围 3.5ns(0ns)至 25μs  单精度校准测量
    的头像 发表于 04-04 18:46 624次阅读
    高<b class='flag-5'>精度</b>ToF法TDC MS1005

    如何在为S32项目编译S32DS时将浮点数设置为单个?

    我的客户使用 matlab 生成源代码,GCC 将浮点常量编译为精度。他们希望 gcc 将浮点常量编译为单精度常量。我选择了
    发表于 04-04 07:36