英伟达开源深度学习加速器介绍

       数字逻辑设计的开源项目非常少,这一方面是因为门槛比较高,学生很难验证学习;另一方面是项目迭代反馈的周期很长。比较有名的开源代码网站当属OpenCore,它的官方网站是:https://opencores.org/,不过逛过的同学也发现其实开源的项目还是非常少的,只有基本的FFT、LMS算法等,鲜少大型开源项目。目前来说最有名的开源数字逻辑项目就是RISC-V微处理器项目了,官方网站是https://riscv.org/,不过该项目是使用伯克利大学自己开发的类似scala语言的chisel语言。

       现如今开源数字逻辑设计除了RISC-V微处理器,还有一个重量级玩家,那就是英伟达,它在2017年9月正式开源深度学习加速器,官方地址为http://nvdla.org/。开源代码的地址是https://github.com/nvdla/。其中sw是软件代码,hw是硬件代码。hw包括了c++建模代码(cmod)和verilog(vmod)实现代码,vmod/nvdla就是核心实现代码了,vmod/rams是NVDLA使用的RAM模型代码。

                             

                                                                     英伟达官方提供的NVDLA结构图

       NVDLA其实就是一个卷积神经网络加速器(只能推断,并不能进行训练),它还需要外部的CPU和内存单元才能完整驱动整个加速器,CPU通中断和CSB总线控制NVDLA加速器。http://nvdla.org/primer.html大致介绍了NVDLA的基本框架,http://nvdla.org/hw/v1/hwarch.html介绍了硬件实现的框架,http://nvdla.org/hw/contents.html是硬件的介绍手册。NVDLA的设计本身并没有特别创新之处,主要有卷积、池化、非线性激活函数操作等运算,为了降低带宽,权重阈值还进行了压缩。卷积加速使用MAC单元,可以支持多种模式,包括直接卷积,Winograd方法,某些非线性激活函数使用LUT实现,可编程配置。看它的源代码,发现它的部分运算单元的RTL代码貌似是生成的,不是人写的,调试仿真的代码比较具有参考性,可以看看大公司是怎么仿真验证的,但是注释也不是很多,阅读起来比较累。

       NVDLA可以在FPGA上实现(最初在十几个FPGA上实现的),官方推荐了亚马逊云计算的FPGA平台,目前不知道已经完成到什么地步了,按照国外论坛的问题,完整版本的NVDLA似乎还是无法在单片FPGA上实现,基本都是分开在几片FPGA上实现。国内也有人在FPGA平台上实现了,居然有人使用Xilinx的VC707平台进行仿真调试还做了视频上传到B站上。。。https://www.bilibili.com/video/av16833656,简直丧心病狂。

猜你喜欢

转载自blog.csdn.net/truecrab/article/details/80145891
今日推荐