微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐