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 编译器中提供,这两个编译器都将在明年年初正式发布。

相关文章

所以很多人都会选择将这些生活琐事来交给智能化产品,在众多...
“昨天的经历都将成为明天的力量。” 将绝大部分精力都奉献给...
最近,全球知名的通信产业盛会MWC 2024(2024世界移动通信大...
今年上半年有很多值得关注的机型,其中华为最新的影像旗舰华...
目前,2024世界移动通信大会(MWC)正在西班牙巴塞罗那举行,值...
就在去年,真我推出了11 Pro+,用一个2亿像素传感器和zoom变...