如何学习FPGA

深度学习算法有望在FPGA和超级计算机上运行
发表于 13:39|
来源Gigaom|
作者Derrick Harris
摘要:由NSF资助的一个研究项目,目前正在研究如何使用RDMA高性能连接器将深度学习算法在FPGA和跨系统之间运行;另一个由Andrew Ng和两个超算专家牵头的项目,则希望把模型放在超级计算机上,给它们一个Python接口。
【编者按】随着人工智能技术的发展,各大科技公司都加大在深度学习上的投入,而作为美国国家科学基金会也同样如此,当下,它通过资助美国几所大学的研究人员,促进深度学习算法在FPGA和超级计算机上运行。虽然目前看到的还只是代表了深度学习的一个趋势,但是随着各大科技公司的商业运营以及更多的深度学习走进大学研究中心以及国家实验室,对深度学习的发展起到积极的促进作用。以下为原文:
机器学习在过去的几年里取得了很大的进步,在很大程度上归功于计算密集型工作负载扩展新技术的发展。NSF最新的资助项目似乎暗示我们看到的可能只是冰山一角,因为研究人员试图将类似深度学习的技术扩展到更多的计算机和新型的处理器上。
由纽约州立大学石溪分校团队实施的一个特别有趣项目,该项目旨在证明FPGA(现场可编程门阵列)优于GPU,他们发现深度学习算法在FPGA上能够更快、更有效地运行,这突破了当前传统的认识。
根据项目概要:
研究人员预计在GPU上算法的最慢部分,运行在FPGA上将实现明显的加速,同时,在GPU上算法最快的部分在FPGA上将有类似的运行性能,但是功耗会极低。
实际上,除了不同于GPU,在硬件上运行这些模型想法并不新奇,例如,IBM最近凭借一个新的brain-inspired芯片轰动一时,它声称可以完美支持神经网络和其他cognitive-inspired工作负载。微软在今年7月演示了它的Adam项目,这个项目是重新修改了一个流行的深度学习技术使其在通用英特尔
CPU处理器上运行。
由于其可定制的特点,FPGA有着独特的优势,今年6月,微软解释它如何通过卸载某些进程部分到FPGA来加快Bing搜索。当月晚些时候,在Gigaom的Structure大会上,英特尔宣布即将推出的混合芯片架构将FPGA在CPU共置在一起(实际上它们会共享内存),这主要针对专业大数据负载与微软必应这样的案例。
然而,FPGA对于深度学习模型来说并不是唯一的、潜在的基础架构选择。NSF还资助纽约大学的研究人员,让他们通过基于以太网远程直接内存访问技术来测试深度学习算法以及其他工作负载,这在超级计算机上广泛使用,但现在要将它带到企业系统,RDMA连接器通过直接发送消息到内存,避免了CPU、交换机和其他组件给进程带来的延迟,从而加快计算机之间传输数据速度。
说到超级计算机,另一个新的NSF资助项目,由机器学习专家斯坦福大学(百度和Coursera)的Andrew Ng和超级计算机专家田纳西大学的Jack
Dongarra以及印第安纳大学的Geoffrey Fox领导,旨在使深度学习模型利用Python可编程,并且将它带到超级计算机和扩展云系统。据悉,这个得到了NSF将近100万美元的资助的项目被称为Rapid
Python Deep Learning Infrastructure。
RaPyDLI将被构建成一套开源的模块,可以从Python用户界面访问,但是可以放心地在最大规模超级计算机或云的C / C++或Java环境中通过互动分析和可视化执行。RaPyDLI将支持GPU加速器和英特尔Phi协处理器以及广泛的存储技术包括Files、NoSQL、HDFS和数据库。
目前做的所有工作都是让深入学习算法更容易并且改善它们的性能,这三个项目只是一小部分,但是如果这些技术能够被科技巨头用到商业领域,或者进入研究中心以及国家实验室利用计算机解决真正的复杂问题将是非常有益的。
原文链接:
&(编译/魏伟
审校/仲浩)
免费订阅“CSDN云计算(左)和CSDN大数据(右)”微信公众号,实时掌握第一手云中消息,了解最新的大数据进展!
CSDN发布虚拟化、Docker、OpenStack、CloudStack、数据中心等相关云计算资讯, & & 分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务。 & & & & & &
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章8596人阅读
FPGA(22)
PS:笔者强烈建议诸位注册一个EETOP的账号,每天签到或者发贴、回贴就有积分了,里面的资源非常丰富,各种软件、资料都能找到。
一、入门首先要掌握HDL(HDL=verilog+VHDL)。
&&&&&&&第一句话是:还没学数电的先学。然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它。当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多。
&&&&&&&接下来,首先找本实例抄代码。抄代码的意义在于熟悉语法规则和编译器(这里的编译器是硅编译器又叫综合器,常用的编译器有:、、、 、的、iverilog、的、Microsemi/Actel的、),然后再模仿着写,最后不看书也能写出来。编译完代码,就打开RTL图,看一下综合出来是什么样的电路。
&&&&&& HDL是硬件描述语言,突出硬件这一特点,所以要用数电的思维去思考HDL,而不是用C语言或者其它高级语言,如果不能理解这句话的,可以看《》。在这一阶段,推荐的教材是《》或者是《》。不看书也能写出个三段式状态机就可以进入下一阶段了。
&&&&&& 此外,你手上必须准备Verilog或者VHDL的官方文档,《》、《》,以便遇到一些语法问题的时候能查一下。
二、独立完成中小规模的数字电路设计。
&&&&&&&现在,你可以设计一些数字电路了,像交通灯、电子琴、DDS等等,推荐的教材是《》。在这一阶段,你要做到的是:给你一个指标要求或者时序图,你能用HDL设计电路去实现它。这里你需要一块开发板,可以选的cyclone IV系列,或者的Spantan
6。还没掌握HDL之前千万不要买开发板,因为你买回来也没用。这里你没必要每次编译通过就下载代码,咱们用(此外还有、、Diamond的Active-HDL、VCS、Debussy/等仿真工具),如果仿真都不能通过那就不用下载了,肯定不行的。在这里先掌握简单的testbench就可以了。推荐的教材是《》。
三、掌握设计方法和设计原则。
&&&&&&&你可能发现你综合出来的电路尽管没错,但有很多警告。这个时候,你得学会同步设计原则、优化电路,是速度优先还是面积优先,时钟树应该怎样设计,怎样同步两个异频时钟等等。推荐的教材是《》、《》、《Altera
FPGA/CPLD设计》第二版的和两本。学会加快编译速度(增量式编译、LogicLock),静态(),嵌入式逻辑分析仪()就算是通关了。如果有不懂的地方可以暂时跳过,因为这部分还需要足量的实践,才能有较深刻的理解。
四、学会提高开发效率。
&&&&&&& 因为Quartus和ISE的编辑器功能太弱,影响了开发效率。所以建议使用中代码片段的功能,以减少重复性劳动。Modelsim也是常用的仿真工具,学会TCL/TK以编写适合自己的,使得仿真变得自动化,推荐的教材是《》。你可能会手动备份代码,但是专业人士都是用的,所以,为了提高工作效率,必须掌握。文件比较器也是个比较常用的工具。此外,你也可以使用来替代testbench,这样效率会更高一些。如果你是做IC验证的,就必须掌握System Verilog和验证方法学(UVM)。推荐的教材是《》、《》、《》。
&&&&&&&& 掌握了TCL/TK之后,可以学习(ISE也有类似的工具)制作属于自己的调试工具,此外,有时间的话,最好再学个python。脚本,意味着一劳永逸。
五、增强理论基础。
&&&&&&& 这个时候,你已经会使用FPGA了,但是还有很多事情做不了(比如,FIR滤波器、、OFDM等),因为理论没学好。我大概地分几个方向供大家参考,后面跟的是要掌握的理论课。
1、信号处理——信号与系统、数字信号处理、数字图像处理、现代数字信号处理、盲信号处理、自适应滤波器原理、雷达信号处理
2、接口应用——如:、、、、、、、、、(10G以太网接口)、、光纤、
3、无线通信——信号与系统、数字信号处理、通信原理、移动通信基础、随机过程、信息论与编码
4、CPU设计——计算机组成原理、、计算机体系结构、编译原理
5、仪器仪表——模拟电子技术、高频电子线路、电子测量技术、智能仪器原理及应用
6、控制系统——自动控制原理、现代控制理论、过程控制工程、模糊控制器理论与应用
7、压缩、编码、加密——数论、抽象代数、现代编码技术、信息论与编码、数据压缩导论、应用密码学、音频信息处理技术、数字视频编码技术原理
&&&&&& 现在你发现,原来FPGA会涉及到那么多知识,你可以选一个感兴趣的方向,但是工作中很有可能用到其中几个方向的知识,所以理论还是学得越多越好。如果你要更上一层,数学和英语是不可避免的。
六、学会使用MATLAB仿真。
&&&&&&& 设计FPGA算法的时候,多多少少都会用到MATLAB,比如的系数矩阵、数字滤波器系数、各种表格和文本处理等。此外,MATLAB还能用于调试HDL(用MATLAB的计算结果跟用HDL算出来的一步步对照,可以知道哪里出问题)。推荐的教材是《》和杜勇的《》。
七、足量的实践。
&&&&&& 这个时候你至少读过几遍芯片手册(有),然后可以针对自己的方向,做一定量的实践了(期间要保持良好的,,绘制,的习惯)。比如:通信类的可以做调制解调算法,仪表类的可以做总线分析仪等等。不过这些算法,在书上只是给了个公式、框图而已,跟实际的差距很大,你甚至会觉得书上的东西都很肤浅。那么,你可以在、、、、、Q群共享、博客上面找些相关资料(校外的朋友可以在淘宝买个知网账号)。其实,当你到了这个阶段,你已经达到了职业级水平,有空就多了解一些前沿技术,这将有助于你的职业规划。
&&&&&&& 在工作当中,或许你需要关注很多协议和行业标准,协议可以在EETOP上面找到,而标准(如:国家标准GB和GB/T,国际标准ISO)就推荐《》和《》。
八、图像处理。(这部分只写给想学图像处理的朋友,也是由浅入深的路线)
1、Photoshop。花一、两周的时间学习PS,对图像处理有个大概的了解,知道各种图片格式、直方图、色相、通道、滤镜、拼接等基本概念,并能使用它。这部分是0基础,目的让大家对图像处理有个感性的认识,而不是一上来就各种各样的公式推导。推荐《》。
2、基于MATLAB或OpenCV的图像处理。有C/C++基础的可以学习OpenCV,否则的话,建议学MATLAB。这个阶段下,只要学会简单的调用函数即可,暂时不用深究实现的细节。推荐《》、《》。
3、图像处理的基础理论。这部分的理论是需要高数、复变、线性代数、信号与系统、数字信号处理等基础,基础不好的话,建议先补补基础再来。看不懂的理论也可以暂时先放下,或许学到后面就自然而然地开窍了。推荐《》。
4、基于FPGA的图像处理。把前面学到的理论运用到FPGA上面,如果这时你有前面第七个阶段的水平,你将轻松地独立完成图像算法设计(图像处理是离不开接口的,上面第五个阶段有讲)。推荐《》、《》。
5、进一步钻研数学。要在算法上更上一层,必然需要更多的数学,所以这里建议学习、、等。
下面这两个阶段是给感兴趣的朋友介绍的。
九、数电的尽头是模电。
&&&&&&&现在FPGA内部的事情是难不到你的,但是信号出了FPGA,你就没法控制了。这个时候必须学好模电。比如:电路分析、模拟电子技术、高频电子线路、PCB设计、EMC、SI、PI等等,能设计出一块带两片DDR3的FPGA开发板,就算通关了。具体的学习路线可以参考本博客的《》和《》。
十、学无止境。
&&&&&&&能到这个境界,说明你已经很厉害了,但是还有很多东西要学的,因为FPGA常常要跟CPU交互,也就是说你得经常跟软件工程师交流,所以也得懂点软件方面的知识。比如ARM(Xilinx的ZYNQ和Altera的SOC会用到ARM的硬核,请参考本博客的《》)、DSP、linux、安卓、上位机(、C#、JAVA)都可以学一下,反正学无止境的。
十一、其它问题。
a、为什么不推荐学习NIOS II和MicroBlaze等软核?
&&&&&&1、性价比不高,一般的软核性能大概跟Cortex M3或M4差不多,用FPGA那么贵的东西去做一个性能一般的CPU,在工程上是非常不划算的。不如另外加一块M3。
&&&&&&2、加上软核,可能会影响到其它的逻辑的功能。这是在资源并不十分充足的情况下,再加上软核,导致布局布线变得相当困难。
&&&&&&3、软核不开源,出现Bug的时候,不容易调试。
&&&&& 4、工程上很少使用,极有可能派不上用场。
b、为什么不推荐0基础学习ZYNQ或SOC?
&&&&& 1、容易让人有傍同心理。傍同心理是指一个人通过渲染与自己有亲近关系的人的杰出,来掩盖和弥补自己在这方面的不足,从而获得心理上的平衡。自己在学习很厉害的东西,然后也感觉自己很厉害,但这只是错觉而已。
&&&&& 2、入门应该学习尽量简单的东西,要么专心学习ARM,要么专心学习FPGA。这样更容易有成就感,增强信心。
&&&&& 3、ZYNQ和SOC的应用领域并不广,还有很多人没听过这种东西,导致求职的不利。
&&&&& 4、开发工具编译时间长,浪费较多时间。
&&&&& 5、绝大多数工作,都只是负责一方面,也就是说另一方面,很有可能派不上用场。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:155964次
积分:2457
积分:2457
排名:第15335名
原创:87篇
评论:67条
(1)(2)(1)(1)(2)(1)(2)(1)(3)(2)(3)(3)(5)(3)(3)(3)(1)(4)(10)(2)(2)(2)(5)(6)(1)(9)(7)(2)如何学习FPGA? - 知乎303被浏览34437分享邀请回答12047 条评论分享收藏感谢收起9541 条评论分享收藏感谢收起查看更多回答我们应该怎么去学习fpga?或者说应该是一种怎么样的学习模式?从菜鸟到高手可能都会需要。 - 知乎88被浏览2804分享邀请回答1添加评论分享收藏感谢收起16添加评论分享收藏感谢收起查看更多回答手把手教你学习FPGA_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
手把手教你学习FPGA
&&或许您可能听说过FPGA, 但不是很了解; 或许您已经知道FPGA
的存在,但没有掌握这门技术;或许您打算在不久的将来对 FPGA
进行初步尝试;不管怎样,只要您对 FPGA 感兴趣,那么就让我们
一起踏出通往 FPGA 世界的第一步,开始 FPGA 开发板 DIY 吧!本
次活动不仅让初学者掌握FPGA硬件电路设计以及焊接方面的知识,
更重要的是让初学者快速掌握 FPGA的设计方法,少走弯路,轻松
迈进 FPGA设计开发的大门。
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信