单精度、双精度和多精度计算:主要区别

了解哪种精度格式用于计算至关重要,但有时感觉像是一种平衡行为:双精度计算的精度似乎会与单精度计算的性能值相对立。二者均可确保准确性,突破数值的限制,但每种技术都有其独特的用途和工作成本。

在这里,我们将仔细研究每种格式、它们之间的区别以及混合不同级别的精度将如何帮助您在不影响准确性的情况下,保持效率。

精度在计算机科学中的重要作用

要了解单精度和双精度计算之间的区别,必须了解精度在计算机科学中的作用,这很重要。设想一下,使用一个无理数(比如圆周率)进行计算,小数点 (3.14) 右边保留两位数。如果小数点右边保留十位数 (3.1415926535) 进行计算,则会得到更准确的结果。

对于计算机而言,这种准确度称为精度,采用二进制数(位)衡量,而非小数点。使用的位数越多,精度就越高。

计算机科学中的精度

IEEE 标准浮点数的表示

用计算机二进制表示大量数字,需要一个标准来确保各种计算不会有很大的差异。因此,电气和电子工程师协会 (IEEE) 制定了 IEEE 浮点运算标准 (IEEE 754)

IEEE 754 有三个组成部分:

  1. 基数:0 代表一个正数;1 代表一个负数。

  2. 偏置数:该指数用于表示正负指数。因此,必须在实际指数上加一个偏置,才能得到存储的指数。

  3. 尾数:尾数也叫有效位数,代表数字的精度位。

使用这些组件,IEEE 754 采用两种格式表示浮点数:单精度格式和双精度格式。虽然仍有多种表示浮点数的方法,但 IEEE 754 是最常用的,因为它通常是最有效的数值表示。

使用 SOM 的智能安全摄像头功能和面部识别

何为单精度浮点格式?

单精度浮点格式使用 32 位计算机内存,可以表示广泛的数值。这种格式通常被称为 FP32,最适合用于不会遭受近似影响的计算。

何为双精度浮点格式?

另一方面,双精度浮点格式占用 64 位计算机内存,比单精度格式精确得多。这种格式通常称为 FP64,用于表示需要更大范围或更精确计算的值。

虽然双精度支持更高的准确性,但它也需要更多的计算资源、内存存储和数据传输。使用这种格式的成本并不一定对每种计算都有意义。

单精度和双精度的区别

区分单精度计算和双精度计算的最简单方法是看有多少位表示浮点数。对于单精度,32 位用来表示浮点数。对于双精度,64 位用于表示浮点数。

以欧拉数 (e) 为例。下面是 e 的前 50 位十进制位数:2.7182818284590452353602874713526624977572470936999

这里是转换成单精度的二进制欧拉数:
01000000001011011111100001010100

这里是转换成双精度的二进制欧拉数:
010000000000010110111111 0000101010001011000101000101011101101001

第一个数字代表基数。下一组数字(单精度为 8,双精度为 11)代表有偏置的指数。最后一组数字(单精度为 23,双精度为 52)代表尾数。

对比图:单精度与双精度

单精度

双精度

概述

使用 32 位内存表示数值,其中一位表示尾数符号

使用 64 位内存表示数值,其中一位表示尾数符号

偏置指数

8 位用于指数

11 位用于指数

尾数

使用尾数的 23 位(表示小数部分)

使用尾数的 52 位(表示小数部分)

实际应用

通常用于游戏或任何需要更广泛表示、无需高精度的程序

通常用于需要高精度的科学计算及复杂程序

多精度与混合精度计算

多精度与混合精度计算

除了视为多精度的单精度及双精度计算外,还有混合精度计算。

混合精度计算,有时叫做透明精度,通常用于机器学习领域。它通过从半精度(16 位)值开始执行计算,主要针对快速矩阵数学。然后在计算这些数字时,将由机器采用较高精度存储。

混合精度计算的优势是:其所提供的累积答案精度与双精度计算得出的答案相似,但所需功耗、运行时和内存不在一个层面上。

混合不同精度的优势

混合不同精度的优势

不同的工作负载需要不同程度的精度,因为运行计算并不是放之四海而皆准的做法。计算机科学家需要基于可用资源、预算、存储及其它变量的各种计算格式。

例如,因为双精度非常准确,因此可能是一些大数据研究或天气建模的最佳选择。但这些计算所需的存储和资源并不能总是证明其使用是合理的。开发人员可按需混合不同的精度度来优化效率和计算开销。

优化计算效率

优化计算效率

虽然计算准确性必不可少,这是肯定的,但了解如何从使用各种精确度中获益也很重要。要在不影响精确计算的情况下确保工作效率,您需要支持不同浮点格式的高灵活功能。

Vivado ML
面向 Xilinx SOM (System-on-Module) 的 Kria Logo

AMD 用于 DSP 的 Vivado™ ML 和系统生成器均提供功能强大的工具,其支持各种浮点精度,无论是多精度还是混合精度,都没问题。此外,这个行业领先的工具套件还提供加速设计、提高生产力以及有效利用资源所需的灵活定制精度。

进一步了解 AMD Vivado™ 如何提高计算效率。