【发布时间】:2022-01-23 12:12:11
【问题描述】:
我打算在我的代码中使用半精度浮点,但我不知道如何声明它们。例如,我想做如下的事情-
fp16 a_fp16;
bfloat a_bfloat;
但是,编译器似乎不知道这些类型(fp16 和 bfloat 只是虚拟类型,用于演示目的)
我记得读过 bfloat 支持已添加到 GCC-10,但我无法在手册中找到它。我对 bfloat 浮点数特别感兴趣
其他问题 -
- FP16 现在在 Intel / AMD 支持上支持硬件吗?我认为自 Ivy Bridge 本身以来就添加了本机硬件支持。 (https://scicomp.stackexchange.com/questions/35187/is-half-precision-supported-by-modern-architecture)
- 我想确认使用 FP16 是否确实会增加 FLOP。我记得在某处读到,
fp16上的所有算术运算都首先在内部转换为 fp32,并且只会影响缓存占用空间和带宽。 - SIMD 对半精度浮点数的内在支持,尤其是
bfloat(我知道像_mm256_mul_ph这样的内在函数,但不确定如何传递 16 位 FP 数据类型,如果有人能强调这一点,我将不胜感激) - 这些类型是否也添加到英特尔编译器中?
PS - 相关帖子 - Half-precision floating-point arithmetic on Intel chips ,但它不包括声明半精度浮点数。
TIA
【问题讨论】:
标签: c++ c x86 intrinsics half-precision-float