首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"__half“是一个本机C++类型吗?

"__half“是一个本机C++类型吗?
EN

Stack Overflow用户
提问于 2022-09-27 21:12:01
回答 4查看 148关注 0票数 1

我在看示例L117#L 115-L117,我看到了__half类型,我认为它对应于半精度浮动。我想知道这是否是本地的C++类型?如果没有,是否存在本机float16类型?

EN

回答 4

Stack Overflow用户

发布于 2022-09-27 21:18:07

它不是原生的C++类型。C++只支持float (典型的IEEE754 binary32)、double (通常是binary64)和long double (按实现可变宽度,但至少与double一样大)。CUDA支持半精度的float,因为GPU支持它,而GPU支持它,因为GPU需要做很多低精度的浮点计算,而且您可以使用半精度浮点来执行很多这些操作,但是没有语法允许您在标准C++中请求它们。

票数 1
EN

Stack Overflow用户

发布于 2022-09-27 21:18:28

虽然有一个IEEE-754定义的16位浮点,但目前还没有C++便携式类型。GGC使用_Float16,CUDA使用__half等。

还有一些像bfloat16这样的16位浮点变体.

对于DirectXMath,我目前定义了一个using HALF = uint16_t;,它不像我想的那样安全。

票数 1
EN

Stack Overflow用户

发布于 2022-09-27 21:15:43

C++需要floatdouble,它们是单精度和双精度浮点类型。这些问题的确切性质取决于执行情况。IEEE754很常见,但绝不是无处不在的。

实现半精度类型不需要C++。您的编译器可能支持一个。否则,您可以搜索实现一个库,以及一组很好的数学函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73873870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档