简介

了解要用于计算的精度格式至关重要,但有时可能需要进行权衡:需要考虑双精度计算的准确性与单精度计算的性价比。二者均可确保准确性,突破数值的限制,但每种技术都有其独特的用途和工作成本。

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

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

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

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

Man on computer in a dim room with a city view.

IEEE 标准的浮点数表示法

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

IEEE 754 有三个组成部分:

  1. 基数:0 代表一个正数;1 代表一个负数。 
  2. 偏置指数:该指数用于表示正负指数。因此,必须在实际指数上加一个偏置,才能得到存储的指数。 
  3. 尾数:尾数也叫有效位数,代表数字的精度位。

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

Blue abstract data dots

IEEE 标准的浮点数表示法

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

IEEE 754 有三个组成部分:

  1. 基数:0 代表一个正数;1 代表一个负数。 
  2. 偏置指数:该指数用于表示正负指数。因此,必须在实际指数上加一个偏置,才能得到存储的指数。 
  3. 尾数:尾数也叫有效位数,代表数字的精度位。

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

何为单精度浮点格式?

单精度浮点格式使用 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 位)值开始执行计算,主要用于快速矩阵数学运算。然后在计算这些数字时,机器将采用较高的精度加以存储。 

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

Blue abstract computer chip layout

混合不同精度的优势

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

例如,由于双精度格式的准确性很高,因此非常适合用于某些大数据研究或天气建模。但这些计算所需的存储和资源并不总能证明有必要使用这种格式。开发者可根据需要混合不同精度来优化效率和计算开销。 

优化计算效率

虽然计算准确性确实非常重要,但也必须了解如何使用不同精度来获得优势。要在不影响精准计算的情况下确保工作效率,您需要灵活使用多种功能来支持不同的浮点格式。

AMD Vivado™ Design Suite

AMD Vivado™ ML 和 System Generator for DSP 均提供功能强大的工具,可支持多种浮点精度,无论是多精度还是混合精度,都没问题。此外,这款出色的工具套件还提供高度灵活的定制精度来帮助加速设计、提高生产力以及高效利用资源。详细了解如何借助 AMD Vivado 提升计算效率。

掌握最新动态

订阅新闻通讯以接收最新数据中心动态,或与 AMD 销售代表取得联系。