更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们。概述随着深度学习的发展,为了解决更加抽象,更加复杂的学习问题,深度学习的网络规模在不断的增加,计算和数据的复杂也随之剧增。INTEL FPGA具有高性能,可编程,低功耗等特点,为AI应用加速提供了一种灵活、确定的低延迟、高通量、节能的解决方案。Arria10是INTELFPGA第一代集成IEEE754标准单精度硬浮点DSP block,可以为高复杂度的深度学习算法提供高精度,高能效的乘法运算。深度学习算法复杂度高,需要进行大量的乘法运算,如实现一个卷积核为5*5的特征提取,需要进行25*25次乘法运算,而随着特征提取量的增加,乘法运算也将成倍的增长。因此乘法器资源是实现深度学习算法的重要评估资源,本文主要介绍如何基于Arria10的一个18*18的乘法器实现两个11*11的浮点mini-fp运算,从而4倍提高DSP block资源。原理分析Arria10可变精度的
DSP Block支持配置为两个
18*18或者
18*19定点乘法器,进行
18*18乘法运算时,如图
1所示,将输入拆分为低
6位,中
6位,高
6位,进行运算分析。
图1 18*18乘法器运算
则对应的运算结果如下表所示:乘法器输入乘法器输入结果低
6位低
6位
0-11位低
6位中
6位
6-17位低
6位高
6位
12-23位中
6位低
6位
6-17位中
6位中
6位
12-23位中
6位高
6位
18-29位高
6位低
6位
12-23位高
6位中
6位
18-29位高
6位高
6位
23-35位将中
6位输入全设为
0,则可以得到对应的输出结果如下表所示:乘法器输入乘法器输入结果低
6位低
6位
0-11位低
6位中
6位
0低
6位高
6位
12-23位中
6位低
6位
0中
6位中
6位
0中
6位高
6位
0高
6位低
6位
12-23位高
6位中
6位
0高
6位高
6位
23-35位当高
6位及低
6位为带符号位的输入数据时,进行符号位提取,则剩余的实际数据有效位为
5位,因此低
6位
*高
6位及高
6位
*低
6位的乘法结果最高有效位均为
10位,进行两个结果的加法运算,可以保证结果在
12-23位以内,不会对高
6位
*高
6位乘法结果造成影响。因此
Arria1018*18的乘法器支持进行符号位提取后的两个
6*6的乘法运算,图
2是对应的仿真结果,乘法结果对应延时
2个时钟周期。
图
2 modelsim 仿真结果
浮点型数据如图3所示,包含符号位S,指数位E及尾数位M。 图
3 浮点型数据组合进行浮点型数据乘法运算,如图
4所示。
图4 浮点型数据乘法需要进行指数相加,尾数相乘,乘法结果取整及指数的调整。
11位的浮点型数据尾数及指数各占
5位,因此进行乘法运算仅需要进行包含符号位
6位的数据相乘及对应的处理即可。
Arria10的
DSPblock可支持配置为
2个
18*18乘法器,而一个
18*18的乘法器可以实现两个
6*6的乘法运算,因此一个
DSPblock可以实现
4个
11位浮点型数据
mini-FP的乘法运算。
本文转载自骏龙科技优先公司公众号,如涉及侵权,请私信小编删除。============华 丽 的 分 割 线============想加入我们FPGA学习交流群吗?可以长按或扫描以下二维码,审核通过后我们邀请您加入。这些微信群旨在打造一个提供给FPGA工程开发人员及兴趣爱好者(统称“FPGAer”)进行技术交流、答疑解惑和学习的平台。而且我们也将会通过网络举办FPGA技术讲座,分享相关研究文献。 了解更多FPGA知识可以长按或扫描以下二维码关注“FPGAer俱乐部”。