单精度、双精度、多精度和混合精度计算的区别是什么?

关注+星标公众,不错过精彩内容

编排 | strongerHuang

微信公众号 | 嵌入式专栏

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

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

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

嵌入式专栏

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,以评估超级计算机在混合精度计算上的性能。

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

------------ END ------------

推荐阅读:

C语言预处理命令分类和工作原理

浅谈Makefile、Kconfig和.config文件

FreeRTOS中相对延时和绝对延时的区别

关注微信公众号『嵌入式专栏』,底部菜单查看更多内容,回复“加群”按规则加入技术交流群。

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

### 回答1: 海光DCU的混合精度优化方法主要包括:采用双精度浮点数进行梯度计算;使用半精度浮点数来代替双精度浮点数,以改善计算效率;使用低精度操作来进行计算,以降低功耗;采用低精度累积;使用高精度累积来提高精度;采用低精度权重来进行计算;使用高精度权重来提高精度;采用双精度和半精度混合精度优化方法。 ### 回答2: 海光DCU(数据中心单元)是一种用于数据中心的优化方法,通过使用混合精度技术可以提高计算资源的利用效率和性能。具体来说,海光DCU的混合精度优化方法主要包括以下几个方面。 首先,海光DCU使用了混合精度计算,即在计算过程中同时使用高精度和低精度的数值表示。通过将一些不敏感于精度的运算操作使用低精度计算,可以减少计算的存储需求和内存带宽,从而提高计算性能。同时,对于一些对精度要求较高的计算操作,仍然使用高精度计算以保证计算结果的准确性。 其次,海光DCU采用了梯度修正技术,即在反向传播过程中对梯度进行修正。由于低精度计算可能导致数值上的溢出或欠溢问题,梯度修正可以有效地解决这些数值问题,保证梯度的准确性,从而提高训练的稳定性和收敛速度。 此外,海光DCU还利用了量化技术对网络模型中的权重和激活值进行低精度表示。通过对模型参数进行低精度量化,可以大大减少模型的存储需求,提高模型的缓存命中率和内存带宽利用效率。 最后,海光DCU还使用了权重裁剪和剪枝技术。权重裁剪通过设置一个阈值,将权重中绝对值较小的元素置为零,从而减少了模型的存储需求和计算量。剪枝技术则是通过删除网络中不必要的连接和神经元,进一步减少模型的规模,提高计算性能和内存带宽利用效率。 综上所述,海光DCU的混合精度优化方法包括混合精度计算、梯度修正、量化技术以及权重裁剪和剪枝等。通过这些方法的综合应用,可以有效提高计算资源的利用效率和性能,使得数据中心能够更好地应对日益增长的计算需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值