GCC 和 LLVM 已支持 x86-Bfloat16 类型

出品|开源中国

GCC 和 LLVM 编译器现已提供符合 x86-64 psABI 规范的 bf16 类型支持

BF16 是一种新的浮点数格式,又叫 BFloat16 或 Brain Float16 ,是专为深度学习 / 机器学习应用设计的 16 位浮点格式。

BF16 可以加速机器学习(尤其是深度学习训练)算法,与 Float16 不同, Bfloat16 有 8 位指数和 7 位尾数。在相同的 16bits 的空间中,通过降低精度(比 Float16 的精度低)的方式,来获得更大的数值空间(Dynamic Range)。

BF16 最先由英特尔 AVX-512 扩展引入,被称为 AVX-512_BF16。因此,在硬件方面英特尔至强 Cooper Lake 和 Sapphire Rapids 是目前具有原生 BF16 指令支持的处理器。

上周 LLVM 获得了对 x86 的 __bf16 类型支持,以适应其现有的 BFloat16 代码

现在 GCC Git 中也提供了 __bf16 类型支持

X86-64 System ABI 组的邮件描述了引入 x86 __Bfloat16 类型的动机:

目前 bfloat16 是 short 的 typedef,这会产生一个问题,即如果它用于加减乘除,编译器不会发出任何警报,但计算的结果实际上是没有意义的。

为了解决这个问题,需要引入一个真正的标量类型__Bfloat16(scalar type __Bfloat16 )。它主要用于内在函数(intrinsics),不适用于 C 标准运算符。

Bfloat16 也将用于传递参数、加载和存储、向量初始化、向量重置等功能,它需要相应的 psABI。

外媒 Phoronix 介绍称 BF16 类型支持将会在稳定的 GCC 13 和 LLVM 16 编译器中提供,这两个编译器都将在明年年初正式发布。

相关文章

红魔10 Pro手机入网:电竞芯+6500mAh超大电池
iPhone 16系列价格最高直降1000元 保值力显著下降
文石Poke6电子书阅读器预售:支持TF卡拓展 899元起
iPad mini 7仍维持20W快充标准:比亚迪代工
吉利星座在轨卫星达30颗 可24小时覆盖全球90%区域
ColorOS 15发布 首发搭载OPPO Find X8和一加13