integer - CG 中的定点数据类型整数精度范围(12 位)

标签 integer opencl gpu nvidia type-conversion

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之后的下一个最小 float )

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

谢谢!

最佳答案

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

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

关于integer - CG 中的定点数据类型整数精度范围(12 位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19176509/

相关文章:

ruby-on-rails - rails : Converting currency from form to big decimal

image-processing - opencl中的共享内存与纹理内存

vb6 - Visual Basic 6 如何将整数转换为 boolean 值?

OpenCL local_work_size NULL

cuda - GPGPU相对于CPU能效的解释?

algorithm - GPU 上的线性排序。并行处理会改变 Big-O 吗?

ios - 使用 Metal 间接命令缓冲区时出错 : "Fragment shader cannot be used with indirect command buffers"

python - 仅针对选定的GPU架构编译Cupy

java - 为什么 for-each 循环不允许增量整数?

c - 非常数除数的矢量化整数除法最快方法