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

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

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

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

python单精度和双精度的区别_单精度、双精度和半精度浮点格式之间的区别相关推荐

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

    源自公众号strongerHuang 单精度.双精度和半精度浮点格式之间的区别 IEEE 浮点算术标准是用来衡量计算机上以二进制所表示数字精度的通用约定.在双精度格式中,每个数字占用64位,单精度格式 ...

  2. 双精度浮点数转换_模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...

    鱼羊 发自 凹非寺  量子位 报道 | 公众号 QbitAI 近日,TensorFlow模型优化工具包又添一员大将,训练后的半精度浮点量化(float16 quantization)工具. 有了它,就 ...

  3. 云服务器建站原理_云服务器cvm与建站主机之间的区别

    (文章来源:西部数码) 云服务器cvm与建站主机区别是什么?cvm的英文全拼是CloudVirtualMachine(云虚拟机),所以云服务器cvm是指虚拟云服务器,属于云服务器产品中的一种.而建站主 ...

  4. pyHook pyHook3 区别_一般过去时态和现在完成时态之间到底有什么区别?通过一道语法题,帮你彻底讲清楚!...

    有同学在群里问了一道关于"现在完成时态和一般过去时态之间区别"的语法题,摘录如下: There is someone knocking at the door. -- It mus ...

  5. iVMS-4200 Vs区别_杏林早报 | 西芹、水芹、旱芹...功效有区别,吃对才真降血压!...

    打开音乐,开启早报唠嗑的一天~ 昨天说了芹菜能降血压. 祛湿浊.补血安神, 但芹菜有好几种,吃哪个效果更好呢? 今天就来好好说说. (↑ 芹菜种类图) 芹菜其实有很多的品种, 比如根芹.白芹.红芹.空 ...

  6. win7原版镜像_告诉你Ghost系统和原版系统之间的区别,看完再装机也不晚

    在安装电脑Win系统的时候,有非常多的版本可以选择,不少用户都会看花眼,经常出现的是ghost这个版本,ghost 是什么意思?和原版系统有什么区别呢?今天小编就跟大家介绍一下一下ghost系统和原版 ...

  7. java螺线_关于多线程:Java; 制作螺纹之间的区别

    我才刚刚开始学习Java线程. 到目前为止,我已经看到人们通常使用2种方法来创建它们,但是我不了解它们之间的区别: 1: new Thread() { @Override public void ru ...

  8. python做平面设计有前途吗_月入 5K 和月入 2W 设计师的区别

    看到一个1.8W人关注的问题: "设计师的工作,能做一辈子吗?" 能!但前提是,你必须要有过硬的核心竞争力. 前几天和一个同校的学弟聊了会儿,他最近在找工作,遇到一个很奇怪的现象. ...

  9. python中的ix是啥_详谈Pandas中iloc和loc以及ix的区别

    Pandas库中有iloc和loc以及ix可以用来索引数据,抽取数据.但是方法一多也容易造成混淆.下面将一一来结合代码说清其中的区别. 1. iloc和loc的区别: iloc主要使用数字来索引数据, ...

最新文章

  1. 寒哥细谈之AutoLayout全解
  2. 数据结构杂谈(五)——栈
  3. Logtail 混合模式:使用插件处理文件日志
  4. A. Raising Bacteria
  5. android ems的作用,对话框主题活动中忽略android:minEms
  6. 查找某个整数(数组)
  7. PHP中时间戳和时区
  8. iphone4s上市时间_iPhone 4S才是真正意义上的王者, 网友: 现在依旧能打
  9. 微机原理、计算机组成原理与计算机体系结构之间的关系
  10. 电影下载、播放、制作、转换、各类问题全攻略
  11. 紫光输入法linux,紫光拼音输入法下载_紫光拼音输入法最新版下载-太平洋下载中心...
  12. C++沙海拾遗(三)
  13. JVM-详解G1垃圾收集器
  14. Vue中实现表格隔行换色效果
  15. Java基础之String类(第六天)
  16. js调用扫描仪(Web Twain Scan)-兼容Chrome、Edge、360、Firefox、IE、钉钉、企业微信等
  17. MySQL学习笔记1:数据库概述(尚硅谷)
  18. Shiro框架使用及配置之权限管理系统(1)
  19. rocketmq原理解析
  20. CDR插件开发之CPG插件001 - 什么是CPG插件

热门文章

  1. c++ 迷宫搜索【队列 搜索 BFS】宽搜优先搜索
  2. LCG(线性同余生成器)
  3. 2020-11-05 css实例:轮播图上的小圆点
  4. 中国医科大学《卫生法(本科)》在线作业
  5. 混改后联通发力行业云 运营商开始混战云计算
  6. 六十星系之45七杀独坐子午
  7. MASM 整数转字符串
  8. Window远程桌面无法复制粘贴解决
  9. nexus3.x配置deployment角色
  10. excel取消密码_太神奇了!excel表格竟然可以设置查看密码