【问题标题】:fixed-point data type integer precision range (12 bit) in CGCG 中的定点数据类型整数精度范围(12 位)
【发布时间】:2013-10-11 04:10:04
【问题描述】:

wiki文章目前对半精度浮点整数范围(16位)有非常清晰的描述:

0到2048之间的整数可以精确表示..... 2049 到 4096 之间的整数舍入为 2 的倍数(偶数)..... 4097 和 8192 之间的整数舍入为 4 的倍数..... 8193 和 16384 之间的整数舍入为 8 的倍数..... 16385 到 32768 之间的整数舍入为 16 的倍数..... 32769 和 65536 之间的整数舍入为 32 的倍数..... 等于或大于 65520 的整数舍入到“无穷大”......

但是,对于定点整数,我在网上找不到有关整数范围的实用信息,它可以表示精确到 32 的整数? 64?

它说半精度,0 01111 0000000001 = 1 + 2−10 = 1.0009765625(1 之后的下一个最小浮点数)

有人能说出定点数据类型的等效小数吗?尤其是在 CG 代码中。

谢谢!

【问题讨论】:

  • 我找到了一点信息:fixed:低精度定点。通常为 11 位,范围为 -2.0 到 +2.0 和 1/256 精度......除了它本质上是一个整数,我在其他地方读到。所以在 GPU 上必须高于 2?

标签: integer opencl gpu nvidia type-conversion


【解决方案1】:

没有单一的定点值实现,每个实现可以表示的整数范围不同。对于 12 位有符号定点表示,实现者可以选择不使用这些位来表示数字的整数部分,而使用 11 位表示小数部分。在这种情况下,范围是(大约)-1 到 +1。另一方面,使用所有 11 位来表示整数部分,而没有一个位来表示小数部分,仍然是有效的定点数。对于这种情况,范围是 \$-2^{11}\$ 到 \$2^{11}-1\$。因此,对于 12 位有符号数,用于表示整数的位数可以是 0 到 11 之间的任意值。

此外,给定函数或代码块中的所有变量不一定都具有相同的定点格式。不同的变量可能有不同的位数用于表示整数部分,即使字长是固定的。

【讨论】:

  • 谢谢。忘了说我在考虑CG代码。我认为数据类型总是动态的,它们用尽可能多的位数表示最高和最低的数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2023-04-01
  • 2013-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
相关资源
最近更新 更多