您好,请问c语言中如何定义半精度浮点型,float16?

Python021

您好,请问c语言中如何定义半精度浮点型,float16?,第1张

C中没有float16数据类型。

float16类型在深度学习领域CNN的模型压缩,加速推理中常用,因为float32太占空间了。

在numpy中:

float16半精度浮点数,包括:1 个符号位,5 个指数位,10 个尾数位

float32单精度浮点数,包括:1 个符号位,8 个指数位,23 个尾数位

float64双精度浮点数,包括:1 个符号位,11 个指数位,52 个尾数位

但是在一些芯片相关推理框架(c/c++实现)中确实有float16,还不清楚其怎么实现的。

C11标准是 ISO/IEC 9899:2011 - Information technology -- Programming languages -- C 的简称,曾用名为C1X。

C11标准是C语言标准的第三版,前一个标准版本是C99标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的C语言标准委员会(ISO/IEC JTC1/SC22/WG14)正式发布了C11标准。

名词解释:

C11标准的最终定稿的草案是免费开放的,为N1570 [3]  ,但是正式标准文件需要198瑞士法郎。

当前,支持此标准的主流C语言编译器有:GCC、Clang、Intel C++ Compiler等。

对IEEE754标准-2008的半精度浮点数的支持。尽管遵循GNU C标准规范的编译器(GCC以及Clang等)使用了C扩展关键字__fp16,但是只能对半精度浮点数进行引用,而不能做任何算术操作。因此,这个特性应当在下一个C语言标准中立马加入进去的,建议使用_Half作为半精度浮点数类型的关键字。