__fp16
浮点数据类型是 C 标准的一个众所周知的扩展,主要用于 ARM 处理器。我想在我的 x86_64 处理器上运行它们的 IEEE 版本。虽然我知道它们通常没有,但我可以使用“无符号短”存储(它们具有相同的对齐要求和存储空间)和(硬件)浮点运算来模拟它们。
有没有办法在 gcc 中请求它?
我认为四舍五入可能有点“不正确”,但这对我来说没问题。
如果这也适用于 C++,那将是理想的。
__fp16
浮点数据类型是 C 标准的一个众所周知的扩展,主要用于 ARM 处理器。我想在我的 x86_64 处理器上运行它们的 IEEE 版本。虽然我知道它们通常没有,但我可以使用“无符号短”存储(它们具有相同的对齐要求和存储空间)和(硬件)浮点运算来模拟它们。
有没有办法在 gcc 中请求它?
我认为四舍五入可能有点“不正确”,但这对我来说没问题。
如果这也适用于 C++,那将是理想的。
我没有在 gcc 中找到这样做的方法(从 gcc 8.2.0 开始)。
至于 clang,在 6.0.0 中,以下选项显示了一些成功:
clang -cc1 -fnative-half-type -fallow-half-arguments-and-returns
该选项-fnative-half-type
允许使用__fp16
类型(而不是将它们提升为浮动)。虽然该选项-fallow-half-arguments-and-returns
允许__fp16
按值传递,但 API 是非标准的,请注意不要混合不同的编译器。
话虽如此,它不提供使用__fp16
类型的数学函数(它会将它们提升到/从float
or double
)。
这对我的用例来说已经足够了。