FPGA运算单元可以支援高运算力浮点

随着机器学习(Machine Learning)领域越来越多地使用现场可编程闸阵列(FPGA)来加速推论(inference),传统FPGA只支援定点运算的瓶颈日益突显。为了解决这一困境,Achronix设计机器学习处理(Machine Learning Processing;MLP)单元,不仅支援浮点的乘加运算,还可以支援对多种定浮点数格式进行拆分。

MLP单元是由一组至多32个乘法器的阵列,以及一个加法树、累加器,以及四舍五入(rounding)/饱和(saturation)/常规化(normalize)功能区块。同时还包括2个快取,分别是一个BRAM72k和LRAM2k,用于独立或结合乘法器使用。MLP支援定点模式和浮点模式,对应以下图1和图2。

图1:定点模式下的MLP方块图

图2:浮点模式下的MLP方块图

考虑到运算功耗以及准确度的折衷,目前机器学习引擎中最常使用的运算格式是FP16和INT8,而Google Tensor Flow支援的BF16格式则是透过降低精度,以获取更大的数值空间。下面的表1是MLP支援的最大位宽浮点格式,表2说明各自的取值范围。

表1: MLP支援的最大位宽浮点格式

表2:不同运算格式的取值范围

而且这似乎也成为未来的一种趋势。目前已经有不少研究显示,更小位宽的浮点或整数可以在确保准确度的同时,还可以减少大量的计算量。因此,为了顺应这一潮流,MLP还支援将大位元宽乘法单元拆分成多个小位元宽乘法,包括整数和浮点数。如以下的表3。

值得注意的是,这里的BFloat16即脑浮点(Brain Float)格式,而Block Float为块浮点演算法,即当应用Block Float16及更低位宽块浮点格式时,指数位宽不变,小数位缩减到了16bit以内,因此浮点加法位宽变小,并且不需要使用浮点乘法单元,而是整数乘法和加法树即可,MLP的架构可以使这些格式下的运算能力倍增。

表3是Speedster7t系列1500元件所支援的典型格式运算能力比较,从表中可以看到,单晶片FPGA的浮点运算力最高可达到123TOPS。

表3: Achronix Speedster7t系列1500元件支援的典型格式运算能力比较

下图3是MLP中FP24/FP16乘加单元的简化结构图,即一个MLP支援FP24/FP16的AxB+CxD,或者AxB、CxD。

图3: MLP中FP24/FP16乘加单元的简化结构图。

而以下的图4则是块浮点乘加单元结构。

图4:块浮点乘加单元结构。

在此考虑浮点数序列块:

浮点数序列块:

各序列块内均拥有相同的指数ea和eb。则:

因此,不难看出,乘法单元的个数取决于尾数(即整数)位宽。

表4: MLP中乘法单元的个数与整数位宽之关系。

嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!

分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!(点击找小助理领取)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值