假设我真的很需要内存并且想要更小的范围(类似于 short
vs int
)。着色器语言已经支持 half
用于具有一半精度的浮点类型(不仅仅是来回转换以使值在 -1 和 1 之间,即返回一个像这样的浮点数: shortComingIn / maxRangeOfShort
)。 2字节浮点数是否已经存在实现?
我也有兴趣知道为什么没有 2 字节浮点数的任何(历史?)原因。
原文由 Samaursa 发布,翻译遵循 CC BY-SA 4.0 许可协议
假设我真的很需要内存并且想要更小的范围(类似于 short
vs int
)。着色器语言已经支持 half
用于具有一半精度的浮点类型(不仅仅是来回转换以使值在 -1 和 1 之间,即返回一个像这样的浮点数: shortComingIn / maxRangeOfShort
)。 2字节浮点数是否已经存在实现?
我也有兴趣知道为什么没有 2 字节浮点数的任何(历史?)原因。
原文由 Samaursa 发布,翻译遵循 CC BY-SA 4.0 许可协议
各种编译器现在支持三种不同的半精度格式:
ARM 架构的编译器支持所有这三种类型,现在 x86 处理器的编译器也支持这三种类型。英特尔即将推出的 Golden Cove 处理器将支持 AVX512_FP16 指令集扩展,并且最新的 Clang、Gnu 和英特尔编译器都支持它。 _Float16 的向量在支持 AVX512_FP16 的编译器上定义为 m128h、m256h 和 __m512h。
参考:
https://clang.llvm.org/docs/LanguageExtensions.html#half-precision-floating-point
原文由 A Fog 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
回复:实现:显然有人为 C 编写了
half
,它(当然)可以在 C++ 中工作: https://storage.googleapis.com/google-code-archive-downloads/v2/code。 google.com/cellperformance-snippets/half.c回复:为什么是
float
四个字节:可能是因为低于此, 它们的精度是如此有限。在 IEEE-754 中,“半”只有 11 位有效数字精度,产生大约 3.311 位十进制精度(而 单次 24 位产生 6 到 9 位十进制精度,或 53 位 双 精度产生15 和 17 位精度的十进制数字)。