技术论坛

  • FPGA

    Xilinx大学计划官方FPGA开发板(DIGILENT全球唯一原厂) & Pmods积木式传感器

    发帖数

    317
    跑pynq官方例子遇到了问题。
    一直报这个错误,求解答。。。
    发布于 前天 15:59
  • 开源微控制器(LabVIEW支持)

    树莓派(Raspberry Pi)、BeagleBone Black、chipKIT

    发帖数

    42
    BeagleBone Black安装run-time问题
    按照自学里的步骤安装run-time出现问题了请大神们帮我看看是什么原因导致不往下进行提示run-time版本14.1-11可供安装点击安装run-time然后跳出图片上的这个让我点击EXPANDPARTITION按钮点击后就是一直是working也不往下执行了然后其他按钮都点击不了整整等了5个小时一直就是这个界面不往下走
    发布于 07-15
  • 口袋仪器

    OpenScope、Analog Discovery 2、Analog Discovery、Digital Discovery、Electronics Explorer

    发帖数

    44
    使用Analog Discovery2时遇到一些问题,求大神指点。任意函数发生器的问题。
    我打算自己做一个基于AnalogDiscovery2的晶体管图示仪,在Labview上分别单独搞出来锯齿波和阶梯波之后,发现我不能同时使用AnalogDiscovery2的两个函数发生器。希望论坛的大神指教一下,是我使用不当呢,还是AnalogDiscovery2不支持函数发生器双通道同时工作。
    发布于 21小时前

创客圈

  • 创客小组(项目集散地)

    这里不仅有灵感与创意,更有实践、激情、与同道。创者无畏!

    发帖数

    22
    基于Basys3的2048小游戏
    首先十分感谢Digilent论坛提供的这次机会,我跟大家分享的是我设计的一款小游戏:基于Basys3的2048小游戏。游戏功能:游戏界面由4×4的16个方格组成,每个方格中可以存放一个数字。玩家通过操纵Basys3开发板的上下左右四个方向键和中央的reset键,控制方格中的数字移动。界面由VGA和Pmod接口oled两种方式显示。游戏成功时显示笑脸,失败时显示骷髅。游戏过程中,玩家每按动一次方向键,所有数字按照这个方向移动一次,该方向上相邻相同的数字合并为原来的2倍,并在反方向随机生成一个新的数字。玩家目标是在游戏中拼出2048或更高的数字,即为游戏成功。DIY动手指南:Ste1:材料准备硬件:Basys3开发板VGA连接线以及VGA显示器(可选)sh1106驱动的oled显示屏一块软件:Vivado2016.2Ste2:系统框架系统主要由以下几个模块构成,游戏主状态机、游戏数据寄存器{S16}、移动模块move、随机产生模块gen、随机数生成器ran、VGA驱动模块和oled驱动模块。Ste3:程序设计接下来分模块进行分析。1、按键去抖对每个按键设计了一个32位长的FIFO,按键值从低位进入直至高位溢出。每过10ms,FIFO被完全刷新一次,只有当32位为FFFFFFFFh时认为输入为1,00000000h时认为输入为0。2、游戏数据寄存器用4×4=16个4bit寄存器,存放16个格子中的数据,记为{S16},以【log2对数】形式存放。即如果格子中是512,则存放9;如果格子中是128,则存放7。特例是0用0来存放。这种存放的特点是,可以节约寄存器数量,而且原本的加法128+128=256可以用加1来表示:7+1=8。寄存器位置定义如下:3、游戏主状态机游戏主状态机中,主要操纵数据寄存器{S16}的数值,通过对这个寄存器中数值的改变来实现游戏的进行。状态机分为4个状态:检测按键+移动,产生随机数,游戏状态检测,游戏失败死循环。其中游戏状态检测时,检查当前游戏是否已经结束或成功,如果成功,游戏不中断,玩家可以继续下去,如果已经结束,则跳入游戏失败的死循环中,结束游戏。4、移动逻辑组合电路本游戏有4种移动方式,即上下左右,每次移动4条线,但本质都是相同的,只需要一个模块即可完成。如下图所示move(i3,i2,i1,i0,o3,o2,o1,o0)我们默认向右移动。(为什么呢?因为当我们调用这个模块时,可以以各种方向调用:如果向右移动,则调用move(15,14,13,12)向右,如果向左移动,则调用move(12,13,14,15)向右即可,还可以调用move{15,11,7,3}向下,调用move{1,5,9,13}向上等等。)那么向右移动时,用f3~f0判断这四位是否为空,通过对f3~f0的16种情况的mux来决定输出的值,如果有相同则合并后输出。(其实这个模块就是一个大mux)例如,下图所示,左图右移后,变为右图。再例如:2,2,4,8右移后变为0,4,4,8,再右移变为0,0,8,8再右移变为0,0,0,165、随机数生成器和随机产生模块随机数产生器为随机产生模块gen服务。随机数生成器产生3组随机数,分别为8bit,12bit和16bit。分别对应2空格、3空格和4空格的情况。例如,如果右移后的图片如下图所示,那么黄色格子里的2就是在最左列3空格情况下随机产生的一个位置。我们还是默认向右移动,那么最左边的四个格子(15,11,7,3)即可交给gen,在空白出产生一个随机位置的“2”。这里需要注意的是,2048游戏中规定必须是“有效移动”后才产生一个数字,以杜绝有投机的玩家一直按同一个方向键可以作弊的情况。这一逻辑只需要对上一步中move前后做一下对比即可。6、VGA显示模块640×480分辨率,25MHz的时钟信号。其中扫描时,将VGA坐标的后两位[1:0]舍去,即可将640×480像素变为160×120的色块。(注:源码中的VGA画图一段和oled画图一段看上去很复杂,其实是画点的方式比较奇怪,两种画法都是先将132x64的点阵水平划分为8条,每条8行,再以每列为1个byte的方式画出来。。。那么为什么要这么复杂呢?因为oled的sh1106驱动就是这么要求的,我先做了oled,后面vga就直接引用了~)Ste4:演示见视频~
    发布于 03-07
  • 竞赛 & 活动

    DIGILENT全可编程创新创业设计大赛(DDC)、江苏省虚拟仪器竞赛、极客DIY限时挑战等

    发帖数

    15
    特别活动 | Python on Everything 硬件项目挑战赛
    PythonforEverything!「Python+开源硬件」·创客项目设计主题活动▼PythonAI时代的头牌语言web开发、游戏开发、客户端开发...当这些软件应用领域逐渐被Python“玩坏了”之后凭借“语言简洁,无需编译,开发高效”的特性一场Python与开源硬件的邂逅悄然已成趋势人生苦短,我用Python当DIGILENT已为你准备好多款主流Python开发板当你的情敌暑期已在用Python加速项目设计开发不要告诉我们你还在家打王者荣耀暑期8月,DIGILENT有一个大胆的想法管它当讲不当讲「Python+开源硬件」·创客项目设计挑战赛Let'smakePythonforEverything!1先来一波DIGILENTPython支持开发板▼PYNQ世界上第一款支持Python的FPGA嵌入式开发板●主芯片:XilinxZynq-7020●Python开发战斗值:★★★★★●战力简介:支持开源的PYNQ项目,它直接对硬件底层进行的封装,用户借助封装库文件可以直接使用ython语言操作硬件I/O管脚等功能,不需要再使用复杂繁琐的开发工具,使用基于浏览器的JuyterNotebook工具就可以直接编辑工程代码。同时可轻松搭建开源的机器学习二值神经网络(BNN)。●了解详情:www.digilent.com.cn/roducts/ynq-z1▼Zedboard世界上第一款也是最为经典的XilinxZynqAPSoC开发板●主芯片:XilinxZynq-7020(双核ARMCortex™-A9)●Python开发战斗值:★★★★●战力简介:在Linux系统中配置Python3或Python2.7(如果使用的是Ubuntu,Python2,3已被预安装),即可用Python进行应用设计。调用驱动控制外设。环境配置步骤:1)安装Linux系统;2)安装Python;更新系统:$sudoat-getudate检查版本:$ython3-V3)安装所需的库;$iinstall$sc●了解详情:www.digilent.com.cn/roducts/roduct-zedboard-zynq-7000-arm-fga-soc-develoment-board▼Zybo享有“MiniZedboard”美誉的Zynq入门级训练板●主芯片:XilinxZynq-7010(双核ARMCortex™-A9)●Python开发战斗值:★★★★●战力简介:在Linux系统中配置Python3或Python2.7(如果使用的是Ubuntu,Python2,3已被预安装),即可用Python进行应用设计。调用驱动控制外设。环境配置步骤:1)安装Linux系统;2)安装Python;更新系统:$sudoat-getudate检查版本:$ython3-V3)安装所需的库;$iinstall$sc●了解详情:www.digilent.com.cn/roducts/roduct-zybo-zynq-7000-arm-fga-soc-trainer-board▼Arty-Z7全新问世兼容Arduino接口的Zynq-7000开源创客开发板●主芯片:XilinxZynq-7020/10(双核ARMCortex™-A9)●Python开发战斗值:★★★★●战力简介:在Linux系统中配置Python3或Python2.7(如果使用的是Ubuntu,Python2,3已被预安装),即可用Python进行应用设计。调用驱动控制外设。环境配置步骤:1)安装Linux系统;2)安装Python;更新系统:$sudoat-getudate检查版本:$ython3-V3)安装所需的库;$iinstall$sc●了解详情:www.digilent.com.cn/roducts/roduct-arty-z720-asoc-zynq-7000-develoment-board-for-makers-and-hobbyists▼树莓派2为Python编程而生的Geek最爱嵌入式开发板●主芯片:900MHz双核ARMCortex-A7CPU●Python开发战斗值:★★★★★●战力简介:在早先BBC的一篇采访中,RasberryPi的创始人之一EbenUton就曾提到,RasberryPi的命名中,Pi所指的就是Python。树莓派基金会提供了基于ARM的Debian和ArchLinux的发行版供大众下载。还计划提供支持Python作为主要编程语言,支持Java、BBCBASIC(通过RISCOS映像或者Linux的"BrandyBasic"克隆)、C和Perl等编程语言。●了解详情:www.digilent.com.cn/roducts/roduct-labview-for-rasberry-i-2▼BeagleBoneBlack为数不多可以在10秒内启动Linux的开发板,三大开源硬件平台之一●主芯片:AM335x1GHzARMCortex-A8●Python开发战斗值:★★★★★●战力简介:不可多得的支持Python编程的实战力器,默认安装有Python2.7.3以及相应的Python库。●了解详情:www.digilent.com.cn/roducts/roduct-labview-for-beaglebone-black2活动参与方式与福利01挑战任务基于任意一款DIGILENTPython支持开发板,在为期四周的时间内(9月8日前)使用Python语言编写一个应用设计。应用主题不限,但需要利用硬件外设,如Pmod模块、摄像头,或板上自带的IO/WiFi模块/传感器等。02奖项设置●最佳「Python+开源硬件」设计作品奖【1名】获赠全新DigilentPYNQ开发板一块受邀参与2017DIGILENT创客夏令营●优秀创意作品奖【2名】获赠全新DigilentchiKITWF32嵌入式开发板一块受邀参与2017DIGILENT创客夏令营●实际作品提交参与奖【若干】所有最终按照活动要求提交作品的挑战者,都将获得人气FPGA教材一套03参与方式&am;项目提交●参与方式:加入“PythonforEverything”创客小组传送门:www.digilent.com.cn/makerhubs/ython-on-everything.html●项目提交:项目完成后,进入上述页面”发布项目”●截止时间:9月8日中午12时04指定软硬平台指定硬件(优秀创意项目DIGILENT提供免费租借):●PYNQ/Zedboard/Zybo/Arty-Z7/RasberryPi2/BeagleBoneBlack指定软件:●XilinxVivado/Linux系统/Python语言05作品评分细则●所有最终提交的作品将由DIGILENT工程师依据以下评分项综合打分评选出最终的名次:1)作品创意20’2)作品完成度30’3)作品实现难度20’4)作品提交内容的完整度30‘5)额外加分项:使用Zedboard,Zybo,Arty-Z7参与活动,额外+10'3推荐阅读资料推荐阅读社区多篇热门Python阅读集结:1《项目教程|手把手教你如何在Zybo上跑Python制作一个LED呼吸灯》2《资源分享|基于Python的开源人脸识别库》3《学习笔记|PythonImage库(PIL)常用操作函数》4《知乎问答|你们都是怎么学Python的?》5《话题讨论|Python为何能坐稳AI时代头牌语言》6《机器学习|Zynq+PYNQ+Python:在PYNQ-Z1上搭建二值神经网络(BNN)》活动参与:1)www.digilent.com.cn/makerhubs/ython-on-everything.html2)申请加入部落3)9月8日前提交完成作品想要申请开发板租借,参与此次活动的童鞋(限在校学生),请在本帖内留言哟~~
    发布于 08-08
  • 工科街(求职招聘区)

    一条纯粹属于在校工科生的话题街。尽情释放内心的小怪兽,海侃校园内外,闲聊天南地北

    发帖数

    49
    2017年集成电路行业应届生薪资表曝光ZT
    虽然天气寒冷,但IC公司们对人才都是充满了热情。无论是大公司还是小公司都给出了至少10k的薪资……今年的秋天来的比往常早,也更冷一些。对于想找工作的同学们来说,可能没有比一份收集了许多IC公司薪资待遇的文章更加暖心的了。路科验证一直致力于为广大高校学生提供专业的知识和优秀的学习方法,当然我们偶尔也会在寒冷的秋日给同学们煮一杯上好的鸡汤。希望这杯鸡汤能驱散寒冷,让大家鼓起勇气继续为了自己想要的生活而努力。当然,也希望大家可以把这篇文章转给需要它的人,继续把温暖传递下去。小编说的再多,也没有红果果的数字更能振奋各位的内心。因此没有太多套路,一开始就放出大家最关心的薪资待遇:(少数企业还没开始招聘,暂用去年数据)从上面这张表中,我们可以看出:1.虽然天气寒冷,但IC公司们对人才都是充满了热情。无论是大公司还是小公司都给出了至少10k的薪资,而作为今年的标王大疆甚至拿出了20k+的月薪来招兵买马。可见如今国内集成电路的整体环境还是十分火热的。2.上海来招聘的IC公司比较多,并有很多外企,北京深圳次之。一般来说同一公司在北上深的薪资比二线城市高1-2k。3.很多小公司的薪资也很有竞争力,即使因为一些原因未能拿到自己向往公司的offer,也可以去一些条件和实力不错的小公司。4.据说研究所只招应届生,因此有想进入研究所的同学们,请不要兜兜转转了,好好利用好自己的应届生身份。下来我们会分地区介绍一些公司和招聘情况。西安地区:海思(华为):海思是华为的子公司,也是中国最大的fabless公司,它设计的麒麟970等手机SOC芯片在全球都是非常领先的。总部在深圳,在上海有比较大的研发中心。(由于身边很多同学都倾向于西安海思,因此请原谅小编把它划到西安地区。)海思(华为)以前基本每年都是可以开出IC公司中的最高薪资,并且收走大量的优秀毕业生。但今年华为给的薪资中规中矩,并且很少接受议价,因此大部分人拿到的是普通offer,招的人也比起往年较少。但海思毋庸置疑是国内最好,最吸引毕业生的IC公司。中兴:中兴是国内非常大的通讯设备公司,也十分受到优秀毕业生的青睐。(由于和上面同样的原因,请原谅小编把中兴划到西安。)中兴在芯片设计上比起海思有一定差距,开的工资也不是很理想。但今年中兴大幅提高了薪资待遇,并且一直拥有着强大的研发实力,相信也会是一个不错的选择。兆芯:兆芯的总部在上海,去年在西安建立了研究中心。它的薪资在西安十分有竞争力,因此也吸引了很多优秀的同学们。另外,兆芯(西安)位于西安高新区的腾飞创业中心。想从事IC的同学们可以多来这里看看,你会发现不少惊喜呦。上海/北京地区:大疆:大僵创新是民用无人机领域的领军企业,被誉为无人机界的苹果。虽然多次否认自己会去做芯片,但以20k+招IC设计和验证应届生来看,大疆自主的无人机芯片已经在路上了。作为一个利润丰厚,还未上市的独角兽公司,如果能早点加入可能也是一个非常不错的机会。展讯:展讯可能很多同学都不够了解,但它是全国第二也是世界前十的芯片设计商。如果说高通是高端,联发科是中端,展讯就是主攻低端市场。但展讯背靠国家资本,在非洲和拉美地区取得了巨大的成功,也打进了三星手机和平板的供应链,同时也在为走向高端而努力。听有同学讲,展讯招聘时对应届生的态度非常好,因此加入这样一个优秀且低调的公司也是很好的选择。NVIDIA:NVIDIA是全球图形技术和数字媒体处理器(GPU)行业的领导厂商。得益于这两年人工智能爆发对GPU的强劲需求,英伟达的股价翻了很多倍,并且顺势向人工智能方向转型。前景非常好,薪资也很有竞争力。AMD:AMD是老牌CPU和GPU厂商。在一段时间的沉寂后,AMD的Ryzen处理器表现十分优异,也因此迎来了一波成长。也十分看好它在CPU和GPU方面的长期积淀。深圳地区:汇顶科技:汇顶科技原本是平板触控方面的主流厂商,后投入重资自主研发指纹识别技术,并于2014年同魅族发布了第一款正面指纹识别的安卓手机。此后汇顶科技逐渐成长为全球领先的指纹识别芯片提供商,可以看出这是一家十分注重研发并且很有魄力的一家公司。合肥地区:联发科技:联发科技是全球排名第二的移动芯片设计商,总部在台湾。联发科以前一直是OPPO,VIVO,魅族,红米等品牌的主要芯片提供商,拥有雄厚的研发实力。联发科(合肥)应该是它在大陆最大的研发中心,提供的工资在当地也很有竞争力。如果你觉得合肥也挺不错,并十分向往这样的大公司的话,联发科是很好的选择。另外注意,在面试过程中请不要对工作地点有犹豫,否则会被直接刷掉。武汉地区:Synosys:Synosys是全球著名的EDA工具提供商,如果从事IC行业你应该绕不过这个名字。Synosys(武汉)主要招收的是IC后端的人员,今年的招聘力度比较大,也提供了在当地比较有竞争力的工资。是从事IC设计后端的同学们的理想选择。文章转自:电子工程专辑原文链接:htt://www.eet-china.com/news/article/201710160812
    发布于 前天 21:23

干货热帖

  • 一张通往计算机世界的地图ZT
    转自“原理”微信公众号我们通过计算机来拓展我们自己的大脑。最开始计算机被用来解决和算数有关的问题,但其自身的价值很快地延伸到了各个领域。像是运行互联网络,处理实时图像,制造人工智能,以及模拟整个宇宙等等。而其神奇的地方就在于这一切强大功能的背后,竟然仅是0和1的来回变化。计算机正以无法置信的速度变小变快。现在手机的计算能力已经超过了60年代超级计算机计算能力的总和(详见:《计算机所面临的极限是什么?》)。当年阿波罗11号的整个登月系统如今甚至只需要在两个任天堂就能完成。计算机科学总的来说就是研究计算机能做什么。计算机科学如今已经扩展出了很多相互关联的分支,但我仍然把整个学科分成三个部分:计算机理论,计算机工程,以及计算机应用。计算机理论○第一大分支:计算机理论。|图片来源:DominicWalliman讲到计算机理论。我们得从计算机之父,创造了图灵机(TuringMachine)的阿伦·图灵讲起。图灵在一篇名为《论可计算机器判定问题的应用》一文中首次定义了“有限次运算”并提出了图灵机的原型。图灵机是一个对现在通用计算机的一个简单的描述,而并非一个实体的机器。之后的科学家们提出了很多计算机模型,但这些模型的根本都是图灵机。所以说图灵机也是现代计算机的理论基础。图灵机由几个部分组成,一个写有符号的无限长的带子,一个可以在带子上读写的读写头,一个储存当前状态的状态寄存器,以及一串命令。在如今的电脑上,带子就是现在的内存(当然不再是无限大的),读写头就是现在的处理器(CPU)。命令串被存在电脑的内存里(详见:《一个无法证明的逻辑问题》)。虽然图灵机是一个简单的描述,但也却是对电脑设计的一个非常全面的描述。现在的计算机当然由更多部分组成,例如硬盘,键盘,音响,显卡,屏幕等等,但其运行原理皆在图灵机概念的之内。○图灵机与现代计算机。|图片来源:DominicWalliman图灵通过对机器的描述为计算机的发展奠定了基础。然而与此同时,我们更加不能忘了另外一位与图灵密切相关的计算机科学家,他的博士导师——阿隆佐.丘奇。丘奇发明了lambda算子,通过整套严谨的数学理论描述出了计算机运算的概念。所有能用图灵机解决的问题都能用lambda算子进行等价的计算。如果图灵机的思想代表了算法和机器的原型,那么lambda算子则是现在所有的编程逻辑和语言的基础(详见:《他的思想代表了逻辑和语言》与《“计算”与“机”》)。正如最开始说到的,在计算机理论中最基础的问题就是计算机是万能的吗?如果不是,它能做或不能做什么呢。这个问题直接在计算机理论这个分支中延伸出了一个领域——可计算性理论(ComutabilityTheory)。可计算性理论是一个用来确定哪些问题能够用图灵机进行计算并得出最终结果的学科。有些问题是本身是不可能用计算机得出结果的,其中最著名的代表就是停机问题。总结来说,停机问题代表着一些无法确定计算机程序是否会无限运行的问题。图灵却巧妙地运用了自洽的概念证明了只要没有跳出图灵机的范畴,计算机都不是全能的。有些问题穷计算机的一生也是无法得到解决的(详见:《一个无法证明的逻辑问题》)。○复杂度理论分类。|图片来源:DominicWalliman在可以用计算机解决的问题中,也有很多问题需要花太长的时间来解决(甚至可能超过宇宙能存在的时间)。基于此,计算复杂度(ComutationalComlexity)理论便成为了计算机理论中另外一个重要的组成部分。复杂度理论基于解决一个问题所需时间随问题输入增大而增大的程度,将问题分类成P类问题(例如将数列从小到大排序),NP类问题(例如在指定城市内寻找一条能遍历所有城市且总路程小于N的路线)等等。虽然现实中有很多问题在理论上是不可以被解决的,但计算机科学家们可以通过一些技巧上的简化来得出大概的答案,然而没人可以确定这些答案是否是最佳答案。正如上述NP问题中我们能在多项式级时间内找到遍历所有城市且总路程小于N的路线,但却不能在多项式级时间内找到最短的路程(详见《一个价值百万美金的问题》及《误解带来的乐观与恐慌》)。○算法及算法复杂度。|图片来源:DominicWalliman计算机理论这一分支也包含了对算法(Alogorithm)和信息理论的研究。算法是独立于所有的编程语言以及计算机硬件的解决问题的套路。算法是创建程序的基础,很多计算机科学家都致力于通过研究算法而找到解决问题的最优解。比如不同的算法可能可以解决同样的问题并得到相同的结果,像是将杂乱无章的数字从小到大排序。但有些算法却比另一些更加快速有效。而这些都属于算法复杂度这一领域。信息理论(InformationTheory)通过研究信息的性质,研究信息如何被接受,储存,以及传播。例如如何在保留大多数甚至所有信息的基础上压缩信息,使得我们能用更少的内存来储存这些信息。编码理论(CodingTheory)和加密理论(EncrytionTheory)也是信息理论中非常重要的一个部分。这两个理论使用复杂的数学作为辅助,将传输的信息进行重新的加密,使得信息在网络传输中的安全性得到了大大的增加。○信息理论和密码学。|图片来源:DominicWalliman以上就是计算机理论分支中非常重要的部分。当然除此之外,还有很多其他组成部分,包括逻辑学,图形学,计算几何学,自动机理论,量子计算,并行处理,数据结构等。这里不再一一列举。计算机工程○第二大分支:计算机工程。|图片来源:DominicWalliman计算机科学的第二个大的分支是计算机工程。设计计算机是一个很大的挑战,因为要考虑到从底层硬件到上层软件很多不同的方面。设计者必须保证计算机能够以尽量优化的方式解决尽量多的问题。处理器(CPU)是计算机的中心,计算机执行的所有任务都经过处理器,并通过其进行调度。在单个处理器处理多个任务的时候,处理器需要在每项任务中来回执行,所有任务都能在用户可接受的时间里完成。任务的调度(Scheduling)是一个复杂的过程,由处理器中的调度器完成。调度器决定什么时候执行什么任务,并尝试用最优化的方式调度所有任务。在这种情况下,使用多核处理多个任务可以提升计算机执行的速度,因为每个任务现在可以由一个单独的核执行。但与此同时多核执行也使得调度器的设计更加复杂。而这些设计都隶属于体系结构(ComuterArchitecture)的研究范畴。不同的体系结构适合完成不同的任务。处理器(CPU)适合执行通用程序例如我们所用的操作系统。图像处理器(GPU)适合图像处理,例如我们玩的高画质的游戏,而现场可编程门阵列(FPGA)适合高速执行一些范畴非常狭窄的任务,比如挖比特币等。○单核与多核的调度。|图片来源:DominicWalliman软件机编程语言(SoftwareandProgrammingLanguages)也是组成计算机工程的重要部分。在硬件之上有以各种编程语言写成的软件层。从底层的汇编语言到高层的Java语言,编程语言是程序员给计算机下达命令的语言,并以不同的语法特征编写不同特性的任务。例如我们汇编语言编写计算机底层的执行,用Java来编写网页应用。可想而知,越底层的编程语言越贴近计算机本身的结构,但越难让人们理解。然而无论多高层或底层的语言,最终都会被转化成处理器能执行的二进制码。这个转换机制由编译器通过一个或多个步骤完成。每个编程语言都会有它自己的编译器以便将程序翻译为可执行的二进制码并进行优化。编译器和编程语言的设计在计算机里非常重要,因为这些设计必须既简单适用,又灵活多变,使得程序员能够容易的将他们疯狂的想法付诸实践。○编程语言及编译器。|图片来源:DominicWalliman操作系统(OeratingSystem)是计算机系统中最重要的软件,也是用户和计算机打交道必须通过的介质。操作系统在接受用户指令的同时控制着所有计算机的硬件。因此设计制造一款好的操作系统是一个很大的挑战。所以软件工程(SoftwareEngineering)也因此成为了计算机工程分支的重要组成部分。软件工程师们通过设计软件,新的操作系统或和现有操作系统互动来告诉计算机在什么时候做什么。设计软件是一门艺术,需要工程师们将极富创造性的思维通过特定的编程语言转化成严谨的逻辑程序,并使得转化后的逻辑程序能够有效快速的在计算机上运行。因此,软件工程作为一项独立的学科也有很多设计思想和哲学供程序员们学习、使用以及研究。○操作系统。|图片来源:DominicWalliman当然,计算机工程还包含了许多其他的组成部分,例如实现多台计算机大规模协作的网络(例如淘宝的服务器),大数据存储(例如谷歌脸书中需要储存的个人信息),机器性能研究(例如编写大型软件作为测试计算机性能的基准)以及计算机图像处理(例如简单的美图秀秀)等。我们会在今后的文章中具体提到。计算机应用○第三大分支:计算机应用。|图片来源:DominicWalliman接下来讲讲计算机科学的第三个分支——计算机应用。这个分支旨在使用计算机来解决现实生活中的各种问题。当你出门旅游的时候你希望找到最大的旅游性价比,这就涉及到了使用计算机解决最优解(Otimisation)的问题。最优解问题自古以来也是生意场上最重要的部分之一,因为正确的解答该问题能为公司省下巨额的资金。然而最优解的问题有时可能无法用计算机有效地得到答案,例如上述提到的在所有城市中找到能遍历所有且最短的一条路程。于是有些人开始指望新的科技(例如人工智能或量子计算机),看他们是否能够为这类问题的解决带来转机。人工智能(ArtificialIntelligence)在计算机应用这个分支中占有举足轻重的地位。计算机拓展了我们的大脑,数倍地提高了我们的认知能力。前沿的人工智能研究正试图让机器像人类一样思考。人工智能的研究有很多部分组成,其中发展最迅速的当属机器学习(MachineLearning),让机器通过事先定下的算法,以大数据为输入进行学习,最终达到能准确分辨实物或作出决定的目的。这里最成功的例子当属谷歌AlhaGo接连大败围棋冠军的事情。除此之外机器学习也分成有监督(通过现有的样本对未知的数据分类),无监督(没有任何样本,单从数据中的某一特性将数据分类)与增强学习(例如训练之前很有名的一款小游戏flaybird中的小鸟。如果小鸟撞到柱子了,那就获得-1的回报,否则获得0回报。通过这样的若干次训练,我们最终可以得到一只飞行技能高超的小鸟,知道在什么情况下采取什么动作来躲避柱子)三种。除此之外,计算机视觉(ComuterVision)和自然语言处理(NaturalLanguageProcessing)也是人工智能中很重要的组成部分。计算机视觉希望通过图像处理让计算机能和人类一样分辨事物。自然语言处理则旨在让计算机和人类能够通过人类的语言进行交流,或以文字为输入进行对文字的分析。这些人工智能的各个领域我们今后也将会一一讨论。○人工智能的领域。|图片来源:DominicWalliman机器学习的成功大大受益于大数据(BigData)的发展。于是大数据的研究也成为了计算机应用分支中很重要的领域。大数据的研究旨在总庞大的数据中找出有价值的信息。物联网(InternetofThings)更进一步为大数据的研究添砖加瓦,通过连接各种物体提供更庞大的数据。黑客(Hacking)技术不是一个正统的学术界领域,但在此也非常值得一提。黑客利用计算机系统及网络中的漏洞在不被别人发现的情况下在他人计算机系统中窃取他们所需要的信息,例如最近刚发生的针对windows操作系统漏洞的攻击。即便是如今的技术,对这些黑客的攻击也只能是一筹莫展。除了上述的领域,计算机应用这一分支也利用计算机来研究科学问题,例如物理学和神经学。这个领域通常使用超级计算机来解决大规模的模拟(Simulation)问题。与此同时计算机应用还包括人机交互(HumanComuterInteraction)的研究,旨在设计让用户更加轻松使用的计算机系统。同时,虚拟现实(VirtualReality,例如戴在头上的VR眼镜),增强现实(AugmentedReality,例如之前很流行的一款okemongo的游戏)以及混合现实(MixedReality,例如用手机扫描实体书的时候能看到网上的书评)的研究将虚拟和现实世界渐渐联系在一起。机器人(Robotics)的研究也将机器在形态和运动方式上和人更加相似。这就是通往计算机科学的地图。原理《走进计算机文化史》通过一系列的文章介绍了这张地图的第一个部分——计算机理论。今后也会和大家一同走完这张地图。如今的计算机仍然在高速发展。虽然在硬件方面的研究因为很难再将晶体管做小而遇到了瓶颈,计算机科学家们试图通过对其他领域的研究来解决这个问题。计算机对整个人类的发展有着至关重要的影响,所以计算机在今后的一个世纪将如何发展也成了科学家们争相追捧的问题。谁知道呢?可能到了未来的某一天我们都会多多少少以计算机的形式而存在在这个世界上。
    亮了(0) 23 0 10-12
  • 「让真实信号走进电路原理」在线课程完整版课件资源
    「让真实信号走进电路原理(RealAnalog)」是一门精品网络课程,结合理论讲解、案例分析与动手实验,辅以精心制作可供下载的讲解PPT、课程笔记以及课后作业,由浅入深带你轻松学习、掌握、并最终驾驭模拟电路。这一世界级的精品课程被国内外众多高校在教学中广泛应用,适用于「电路原理」、「模拟电路」等课程教师的备课以及学生的自学。课程包括:·超过40个单元章节的讲座课时·每个单元精心设计的课上习题及课后作业来帮助学生巩固知识点·多样性的设计性实验,让学生通过真正的动手实践来掌握枯燥的理论·完整的教学视频,帮助学生能够课后重温课上内容(视频链接:htt://www.digilent.com.cn/studyinfo/54.html)此门课程基于:·DigilentAnalogDiscovery(www.digilent.com.cn/roducts/roduct-analog-discovery-100mss-usb-oscilloscoe-logic-analyzer),或·升级版的DigilentAnalogDiscovery2(www.digilent.com.cn/roducts/roduct-ad2)·AnalogDiscovery配件包(www.digilent.com.cn/roducts/roduct-analog-arts-kit-by-analog-devices-comanion-arts-kit-for-the-analog-discovery)作为辅助教学的元件工具。配套学习视频地址:htt://www.digilent.com.cn/studyinfo/54.html现将完整版的课程开课指导与教学资源分享,供有需要的高校教师与学生下载学习使用。
    亮了(0) 58 0 10-12
  • 深度长文 | 从GPU、TPU到FPGA及其它:一文读懂神经网络硬件平台战局
    来源:机器之心作者:MattHurd声明:本人经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载在如今深度学习大爆发的时代,相关的硬件平台也在百花齐放,既有英伟达和谷歌这样的科技巨头,也有地平线机器人和Grahcore等创业公司——它们都各自提出了自己的解决方案。近日,多家公司的技术顾问MattHurd在其博客上发表了一篇全面评点各种神经网络硬件平台的长文,机器之心对本文进行了编译介绍。这是我几周前做的一个传统的90年代风格的性别识别神经网络的很好的隐藏节点。一个简单的性别识别器网络中的90年代风格的隐藏节点图像我的硕士项目是一种类似级联相关(cascadecorrelation)的神经网络Multi-rateOtimisingOrderStatisticEqualiser(MOOSE:多速率优化顺序统计均衡器),可用于日内的Bund(国库债券产品)交易。MOOSE曾经是为获取高速的LEO卫星信号(McCaw的Teledesic)而设计的一点成果,后来在从LIFFE迁移到DTB时将目标转向了Bund。作为一家投资银行的职业交易员,我可以购买很好的工具。我有那时候世界上最快的计算机:一个IBMMicroChanneldualPentiumPro200MHz处理器外加带有几MBRAM的SCSI。在1994年那会儿,将800,000个数据点输入到我的C++stream/dag处理器中看上去就像是黑魔法。有限差分方法让我可以做许多O(1)增量线性回归这样的运算,以获得1000倍的加速。那时候这看起来已经很好了。现在,你的手机都能嘲笑我的大方向。那时候,在神经网络领域有很多研究。倒不是说它有过人的生产力,只是因为有用。读到LindsayFortado和RobinWigglesworth的FT文章《Machinelearningsettoshakeuequityhedgefunds》中EricSchmidt关于机器学习和交易的看法,还真有点让人高兴:EricSchmidt是谷歌母公司Alhabet的执行董事长,他上周对一众对冲基金经理说他相信在50年内,所有交易都会有计算机解读数据和市场信号。「我期待出现在交易方面做机器学习的创业公司,看看我描述的这种模式识别能否比数据分析专家的传统线性回归算法做得更好。」他补充说,「我这个行业内的许多人都认为这注定将成为一种新的交易形式。」老朋友Eric,我在90年代早期就已经算是迟到了,你真是有点后知后觉。好吧,现在情况已经不同了。我喜欢思考它,并喜欢将神经网络的这次新复兴称为感知时代(TheAgeofPercetion)。这并不是智能,只是擅长模式而已。它仍然无力应对语言歧义。它还要一些时间才能理解基本的价值和概念,从而形成深刻的金融理解。深度学习既被夸大了,也被低估了。这不是智能,但会有助于帮我们实现智能。一些人将其夸大为将会给我们带来替代人的类人机器的人工智能突破。我们仍然还受困于常识以及用于推理的简单文本中的歧义。我们还有很长的路要走。相对简单的规划算法和启发式方法以及基于神奇的深度学习的视觉、声音、文本、雷达等等的感知能力将会带来深刻的影响,就像是每个人和他们的狗现在理解的那样。所以我叫它「感知时代」。就好像是我们口袋里的超级计算机突然有了眼睛,并且快速适应了真实世界所带来的闪光性致盲。深度学习将会带来巨大的影响,并且将会改变这颗行星上全人类的生活方式。但我们低估了其对我们的危险。不,我们不会和能激起或挑战我们最深刻的思想的深度图灵对话者约会——还不会。这将不可避免地到来,但在可见的未来里还不可见。借助语音、文本和Watson那样的数据库的智能代理可以实现非常先进的Eliza,但不会更先进了。自动化运输、食物生产、建筑、协助家事将会极大地改变人们的生活方式和不动产的价值。除了这些泛泛之谈,本文的目的是收集一些关于芯片的思想见解——它们驱动着当前的神经网络革命。其中很多见解都不是最为激动人心的,但这对我来说是一个有用的锻炼。神经网络硬件与20年前相比,今天的神经处理方法并没有很大不同。深度更多的是一个品牌,而不是一项差异。激活函数已经得到了简化,以更好地适配硬件。主要的成功之处在于我们有了更多数据,对如何初始化权重、处理许多层、并行化和提升鲁棒性也有了更好的理解,其中要用到像是droout这样的技术。1980年的Neocognitron架构与今天的深度学习器或CNN并没有显著差异,但YannLeCun让它具备了学习能力。在90年代那会儿也有很多神经硬件平台,比如CNAPS(1990),它带有64个处理单元和256kB内存,可以在8/16位条件下达到1.6GCPS的速度(CPS是指每秒连接次数/connectionsersecond)或在1位条件下达到12.8GCPS的速度。你可以在《神经硬件概述(Overviewofneuralhardware)》[Heemskerk,1995,draft]中读到Synase-1、CNAPS、SNAP、CNSConnectionistSuercomuter、HitachiWSI、My-Neuower、LNeuro1.0、UTAK1、GNU(通用神经单元/GeneralNeuralUnit)Imlementation、UCL、Mantra1、Biologically-InsiredEmulator、INPGArchitecture、BACHUS和ZISC036。阅读地址:htts://dfs.semanticscholar.org/5841/73aa4886f87da4501571957c2b14a8fb9069.df好吧,东西还真多,但实际上还排除了软件和加速器板/CPU组合,比如ANZAlus、SAICSIGMA-1、NT6000、Balboa860协处理器、Ni1000识别加速器硬件(英特尔)、IBMNEP、NBC、NeuroTurboI、NeuroTurboII、WISARD、MarkII&am;IV、Sandy/8、GCN(索尼)、Tosi、BSP400(400微处理器)、DREAMMachine、RAP、COKOS、REMAP、通用并行神经计算机(GeneralPuroseParallelNeurocomuter)、TINETSIM和GeNet。另外还有一些模拟和混合模拟的实现,包括英特尔的电气式可训练模拟神经网络(801770NX)。你懂我要表达的意思了,那时候的东西还真是多。这在1994年迎来了一次爆发:乐观的摩尔定律告诉我们,TeraCPS即将实现:「未来十年,微电子很可能将继续主导神经网络实现的领域。如果进展和过去进步得一样快,那就意味着神经计算机的性能将会增长大约2个数量级。因此,神经计算机将会接近TeraCPS(10^12CPS)的性能。由100万个节点(每个节点有大约1000个输入)组成的网络可以达到大脑的计算速度(100-1000Hz)。这将能为实验合理巨大的网络提供良好的机会。」由于Minsky和Paert对隐藏层的不正确简单概括,打击了Rosenblatt的感知器梦想并最终导致了他不幸的死亡,神经网络研究遭遇了第一个冬天,研究资金被残酷地撤销了。1995年,又出现了另一次神经网络冬天,尽管那时候我其实并不知道。作为温水锅里的一只青蛙,我没有注意到正在加热。第二个冬天的主要原因是缺乏激动人心的进展,让人们普遍感到无聊了。到了2012年,多亏了GeoffreyHinton的冬季生存技能,多伦多大学基于AlexNet开发的SuerVision在ImageNet处理上实现了极大的提升,第二个神经网络冬天也由此终结了。之后谷歌的LeNetIncetion模型在2014年打破了它的记录。所以据我估计,感知时代始于2012年。将它记在你的日历里面吧,五年已经过去了。谷歌在几千台普通机器上进行了出色的并行CPU有损更新研究。吴恩达教授和他的朋友们让数十台GPU就能完成数千台CPU的工作,从而让规模化成为了可能。因此,我们从需要很好的资助的神经处理前景中解放了出来。好吧,或多或少吧,现在最先进的网络有时候需要数千台GPU或专用芯片。更多数据和更多处理能力是其中的关键。让我们进入本文的重点,列出一些感知时代大数据之战中的一些关键平台:英伟达的GPU这一家是很难被战胜的。来自大型视频处理市场的收益驱动着巨大的规模经济。新款英伟达V100带有一种新的TensorCore架构,速度可达15TFlos(单精度/SP)或120TFlos(浮点精度,其中带有FP16的乘法和FP32的累加或加法,非常适合机器学习)。英伟达在它们的DGX-1中装入了8块计算卡,速度可达960TensorTFlos.AMD的GPU在机器学习领域,AMD一直是英伟达的追赶者。即将发布的AMDRadeonInstinctMI25有希望达到12.3TFlos(SP)或24.6TFlos(FP16)。如果你把英伟达的TensorCore也算进来,则AMD完全无力竞争。英伟达设备的带宽900GB/s也是AMD484GB/s的两倍。谷歌的TPU谷歌原来的TPU相比于GPU有很大的领先,并帮助DeeMind的AlhaGo赢得了与李世石的围棋大战。据描述,原来的700MHzTPU有95TFlos的8位计算能力或23TFlos的16位计算能力,同时功耗仅有40W。这可比当时的GPU快得多,但现在落后于英伟达的V100;但在单位功耗的计算能力上,TPU并没落后。据称新的TPU2是一款带有4块芯片的TPU设备,速度可达到180TFlos左右。每块芯片的性能都翻倍了,达到了45TFlos的16位计算能力。你可以看到与英伟达V100的差距正在变小。你没法买到TPU或TPU2。谷歌正在通过它们的云提供这些TPU服务,包含64台设备的TPUod速度高达11.5PetaFlos。TPU2上巨大的散热片说明了一些原因,但市场正在发生变化——从单独的设备转向了设备的组合以及将这些组合以云的形式提供。WaveComutingWave之父澳洲人CTOChrisNicol博士的成果斐然,领导开发了Wave的ComuteAliance中的异步数据流处理器(asynchronousdataflowrocessor)。几年前,Metamako的创始人CharlesThomas在加州简单介绍了我和Chris认识。他们俩都曾在NICTA研究过无时钟异步。这两人都很出色。我不确定Wave的设备最早是不是针对机器学习设计的,但在他们的3RUaliance上运行TensorFlow的速度可以达到2.9PetaOPS/s,这实在了不起。Wave将他们的处理器称为DPU,一个aliance有16个DPU。Wave使用了他们称之为粗粒度可重构阵列(CGRA:CoarseGrainedReconfigurableArray)的处理元素。我还不清楚2.9PetaOPS/s的速度对应多少位宽。根据他们的白皮书,其ALU可以执行1位、8位、16位和32位计算:「算术单元是分区的。它们可以并行执行8位运算(完美适用于DNN推理)以及16位和32位运算(或以上的任何组合)。也可以执行一些64位运算,而且可以使用软件扩展到任意精度。」关于其aliance中的16个DPU,还有一些额外的信息:「WaveComutingDPU是一种包含了16384PE的SoC,它们被配置成了一个32×32集群的CGRA。它包含了4个HMC(HybridMemoryCube)第二代接口、一个PCIe第三代16通道接口和一个用于SoC资源管理的嵌入式32位RISC微控制器。这款WaveDPU可以在没有主机CPU时自动执行。」对于TensoFlow指令:「WaveDNNLibrary团队为TensorFlow等工作流程中所使用的常见DNN函数创建了预编译的可重新定位的kernel。它们可以被组合到Agent中并且可以被实例化成机器,以构建大型的张量数据流图和DNNkernel。」「……一个可与TensorFlow、CNTK、Caffe和MXNet等机器学习工作流程交互的session管理器,可作为用于训练和推理的工作器过程(workerrocess)。这些工作流程可为工作器过程提供张量的数据流图。在运行时,Wave的session管理器会分析数据流图并将这些软件智能体放置到DPU芯片中,然后将它们连接起来以构建数据流图。这些软件智能体会被分配用于输入缓冲和本地存储的全局内存区域。CGRAkernel的静态本质和分布式的内存架构可以让一个性能模型准确估计智能体的延迟。session管理器可使用该性能模型来在智能体之间插入FIFO缓冲,这有助于DPU中通信和计算的重叠。这个可变智能体支持穿过整个图的数据流的软件流程,从而可以进一步增加并发性和性能。这个session管理器可以监控数据流图运行时的性能(通过监控卡顿、缓冲区下溢出和/或上溢出),并且可以动态地调节FIFO缓冲区的大小以实现吞吐量的最大化。在附加了DPU的处理器中,有一个分布式运行时管理系统会在运行时安装和卸载数据流图的一些部分,从而平衡计算和内存的使用量。这种在数据流计算机中的数据流图上的运行时重新配置还是有史以来第一次。」是的,我也觉得非常酷。这个平台的惊人之处是它在架构方面比FPGA更加粗粒度,因此灵活性更低,但却很可能表现更好。非常有意思。KnuEdge的KnuPath在2016年6月时我在Twitter上谈过KnuPath。那以后他们的产品页面却失踪了。我不确定他们要把那1亿美元如何用到他们的MIMD架构上。那时候他们向我这样描述的:每个ASIC中有256个微型DSP(即tDSP)核以及一个ARM控制器,适用于35W包络中的稀疏矩阵处理。它的性能未知,但他们把自己的芯片与一款当时的英伟达芯片进行了比较,那时候他们说实现了2.5倍的性能。我们知道英伟达现在凭借Tensor内核已经提速了十倍以上,所以KnuEdge还要努力才能跟上节奏。MIMD或DSP方法必须要得到非常好的效果才能在这一领域占据一席之地。时间会给我们答案。英特尔的NervanaNervanaSystems曾经除了开发他们的NervanaEngineASIC,还开发着一种GPU/软件方法,后来英特尔收购了这家公司。性能比较方面还不清楚。英特尔也在规划通过一个KnightsCrest项目将其集成到Phi平台中。NextPlatform认为其2017年在28nm节点上的目标是在某个位宽的运算速度达到55TOPS/s。英特尔还安排一个NervanaCon,将在12月份举办,所以那时候我们也许将能看到他们的第一批成果。地平线机器人这家中国创业公司正在研发一种大脑处理单元(BPU:BrainProcessingUnit)。余凯博士是正规军出身,他曾是百度深度学习研究院的负责人。今年早些时候,一段YouTube视频演示了基于Arria10FPGA的BPU仿真:htts://youtu.be/GI9U9lUFaDo。目前关于这一平台的公开消息还很少。EyerissEyeriss是MIT的一个项目,开发出了一款具有出色原始性能表现的64nmASIC。在AlexNet上,这款芯片的速度大约是英伟达TK1的一半。其优势在于借助于其行固定(rowstationary)方法,仅需要一个278mW的可重新配置加速器就能实现这样中规中矩的性能。赞。Grahcore去年Grahcore拿到了3000万美元的A轮融资,以开发他们的智能处理单元(IPU:IntelligenceProcessingUnit)。他们的网站还缺少细节,只是给出了一些亮眼的事实,比如多于14000个独立的处理器线程和大于100倍的内存带宽。根据NextPlatform报道的零星信息,其在一块芯片上具有多于1000个真实内核,并且采用了定制的互连方式。它的PCIe板具有一个16个处理器的元件。听起来似乎是数据流。抛开公关的言论,这个团队确实有很强的背景,而且投资者也不并不傻,所以就拭目以待吧。TenstorrentTenstorrent是加拿大多伦多的一家小创业公司,它宣称在深度学习的效率上实现了一个数量级的提升,和大多数公司一样,还没有什么公开的细节,但该公司入选了Cognitive300榜单。CerebrasCerebras值得一提,因为它得到了Benchmark的支持,而且其创始人是SeaMicro的CEO。它似乎已经融资2500万美元了,而且仍然处于隐身模式。ThinciThinci正在美国萨克拉门托开发视觉处理器,并且在印度也有员工。他们宣称即将推出他们的第一款硅芯片Thinci-tc500,而且已经开始进行标准评测和赢得客户了。但除了「一切都并行处理」之外,我们所知甚少。KonikuKoniku的网站正在倒计时,现在还有20几天。我已经等不及了。他们没有融到多少钱,而看过它们在福布斯上的这个视频之后(htts://goo.gl/VA1PJx),你很可能也不得不相信他们,但你也无法预料究竟会如何。利用生物细胞肯定是不一样的。听起来就像是一个科研项目,但他们这样说:「我们是一个企业。我们不是一个科研项目。」下周将在维也纳的PioneersFestival上发表演讲的Agabi这样说,「今天有些需求是硅所不能满足的,而我们可以通过我们的系统提供。」Koniku提供的核心是所谓的神经元壳(neuron-shell),这家创业公司称其内部可以控制神经元彼此通信的方式,加上一种正在申请专利的电极,就可以在神经元上读写信息。所有这些都可以装在一个iPad大小的设备里,他们还希望能在2018年之前将其减小到一枚五美分硬币大小。AdatevaAdateva是我最喜欢的一家小技术公司,正如你在之前文章《AdatevataesoutEihany-V:一款1024核64位RISC处理器》:htts://goo.gl/6ZH7JP。去年年底时AndreasOlofsson拿出了他的1024核芯片,我们都等着看它的性能表现。Eihany-V有用于深度学习的新指令,我们必须要看看这种带有64MB片上内存的更少内存控制器的设计是否具有合适的扩展能力。Andrea的设计和构建的出色效率可能能让我们真正负担得起这种芯片,所以让我们希望它有良好的表现吧。KnowmKnown研究的是Anti-HebbianandHebbian(AHaH)可塑性和忆阻器。这里有篇覆盖这一主题的论文《AHaH计算:从MetastableSwitches到Attractors到机器学》:htts://doi.org/10.1371/journal.one.0085175。这对我来说有点太高级了。简单看了看,我看不出这项技术和胡言乱语的区别,但看起来确实科学味道十足。我需要亲眼看到才能相信。神经忆阻式处理器(neuromemristiverocessor)的思想是很有趣的。我早上确实需要一个好的流行术语。MythicMythic的一款电池驱动的神经芯片具有低50倍的功耗。目前还看不到太多真正的细节。这款芯片大约纽扣大小,但大多数芯片不都这样吗?「Mythic的平台能在纽扣大小的芯片上提供桌面GPU的性能。」也许这又是一款适合无人机和手机的芯片,很可能被用在手机中,也可能被排除在外。高通手机显然是机器学习硬件的一大用武之地。我们希望能够识别狗的品种、花朵、树叶、癌症痣、翻译标识、理解口语等等。我们口袋里的超级计算机愿意用上它能得到的所有帮助,以便能迈入感知时代。高通一直以来都在鼓捣机器学习,推出了ZerothSDK和Snadragon神经处理引擎(NPE)。这种NPE显然在高通所用的HexagonDSP上效果良好。HexagonDSP已经远远不止是一个非常广泛的并行平台了,YannLeCun已经证实高通和Facebook正在合作开发一种更好的方法,参见Wired的文章《业界|谷歌TPU之后还有高通,人工智能芯片竞赛已经展开》:「最近,高通已经开始制造执行神经网络的专用芯片,这条消息来自LeCun,因为Facebook正帮助高通开发机器学习相关技术,所以他对高通的计划很了解;高通技术副总裁JeffGehlhaar证实了这个项目,他说:『在原型设计和开发方面,我们还有很长的路要走。』」也许我们很快就会看到KryoCPU、AdrenoGPU、HexagonDSP和HexagonVectorExtensions之外的其它东西。对于这一领域的创业公司来说,和高通的机器学习竞争将会艰难无比。Pezy-SC和Pezy-SC2这两者是Pezy开发的1024核和2048核处理器。Pezy-SC1024核芯片可以驱动2015年Green500超级计算机榜单的前三名的系统。Pezy-SC2是现在已经开始提供的后续芯片,我在6月份也做过关于它的演讲,但相关细节还很少,不过仍然很吸引人:「PEZY-SC2HPCBrick:单个机箱中有32个带有64GBDDR4DIMM(2.1PetaFLOPS(DP))的Pezy-SC2模块卡,速度可达6.4Tb/s.」不知道2048个MIMDMIPSWarrior64位核的机器能做到什么?在6月份的2017年Green500榜单中,一个英伟达P100系统拿到了头把交椅,而排名第7的是一个Pezy-SC2系统。所以看起来这款芯片还活着,但相关细节却很少。MotoakiSaito(齊藤元章)当然值得一看。Kalray尽管做了很多承诺,但Kalray的芯片还没有超过256核,我在2015年的一篇文章就谈到:htts://goo.gl/xqn7Z。Kalray宣传自己的产品说是适合嵌入式自动驾驶汽车应用,但我觉得其目前产品架构的形式并不是一种完美的CNN平台。Kalray有一个KalrayNeuralNetwork(KaNN)软件包并且宣称有比GPU更好的效率,在芯片上能实现高达1TFlo/s的速度。随着即将到来的产品更新,Kalray的神经网络财富可能还会提升,就在这个月Kalray完成了新一轮2600万美元的融资。他们新的Coolidge处理器预计将在2018年年中上市,它会带有80或160个核,另外还有80或160个为视觉和深度学习优化的协处理器。这在他们的多于1000核的方法上有了很大的改变,而我认为这是最明智的。IBMTrueNorthTrueNorth是IBM的神经形态CMOSASIC,是与DARPA的StNAPSE项目一起开发的。这是一种单个芯片设计上的多核处理器网络,具有4096个核,每个核模拟256个可编程的硅「神经元」,总共就超过了100万个神经元。另外,每个神经元还有256个可编程的「突触」,信号可以在这些突触之间传递。因此,可编程突触的总是超过了2.68亿(2^28)。在基本构建模块方面,它的晶体管数量为54亿。因为存储、计算和通信都是在这4096个神经突触核中各自处理的,所以TrueNorth避开了冯·诺依曼架构的瓶颈,而且能效非常高,功耗为70mW,大约是传统微处理器的功率密度的万分之一(来自维基百科)。IBM之前还在批评脉冲神经网络(sikingneuralnetwork)无法适配深度学习,现在IBM开发了一种在TureNorth上运行CNN的新算法。这些神经元不会在每个周期内都放电,脉冲神经网络中的神经元必须逐渐积累它们的电势,然后才能放电……深度学习专家普遍认为脉冲神经网络在深度学习上没有效率——至少和卷积神经网络比起来是这样。Facebook人工智能研究院主任和深度学习先驱YannLeCun曾经批评过IBM的TureNorth芯片,因为它主要支持脉冲神经网络…………这种神经形态芯片不会太激动人心,因为它们注重的脉冲神经网络在深度学习领域并不受欢迎。为了让TrueNorth芯片很好地契合深度学习,IBM不得不开发了一种新算法,让卷积神经网络可以在这款神经形态计算硬件上很好地运行。这种组合方法实现了IBM所谓的「接近当前最佳」的分类准确度,实验涉及了视觉和语音挑战赛方面的8个数据集。在最好的情况下,它们的准确度达到了65%到97%。当只使用一块TrueNorth芯片时,它只在这8个数据集中的1个数据集上超越了当前最佳的准确度。但如果使用多达8块芯片,IBM的研究者可以极大提升这款硬件在深度学习挑战上的准确度。这使TureNorth可以在其中3个数据集上媲美或超越当前最佳的准确度。这个TureNorth测试也做到了每秒处理1200到2600视频帧。这意味着单个TureNorth芯片就能实时检测来自多达100个同时工作的相机的数据的模式……(来自IEEESectrum)TrueNorth的功率效率非常出色,所以非常值得考虑。Brainchi的脉冲神经元自适应处理器(SNAP:SikingNeuronAdativeProcessor)SNAP不能做深度学习,这只是一个源于好奇心的项目,还没有实际落地成CNN工程解决方案,至少现在还没有。如果你想探索这条路,IBM的随机相变神经元(stochastichase-changeneurons)似乎更有意思。苹果的神经引擎(NeuralEngine)到底会不会有?彭博社报道称这会是一款次级处理器,但没有什么细节信息。对苹果来说,这不仅是一个重要领域,而且也有助于与高通的竞争。其它1.寒武纪(Cambricon)——中国科学院在芯片上投入的140万美元。它是一个用于神经网络的指令集架构,具有数据级的并行、自定义向量/矩阵指令、片上scratchadmemory。宣称速度是x86CPU的91倍,是K40M的3倍,且峰值功率仅有1%,即1.695W。参阅这两篇论文:Cambricon-X:一个用于稀疏神经网络的加速器:htt://cslt.riit.tsinghua.edu.cn/mediawiki/images/f/f1/Cambricon-X.dfCambricon:一个用于神经网络的指令集架构s:htt://dl.acm.org/citation.cfm?id=30011792.前谷歌员工创立的GroqInc.,也许是另一种TPU?3.Aimotive:htts://aimotive.com/4.DeeVision正在开发用于深度学习的低功耗芯片,也许这两篇创始人的论文能提供一点线索:ConvolutionEngine:BalancingEfficiency&am;FlexibilityinSecializedComuting[2013]:htt://csl.stanford.edu/~christos/ublications/2013.convolution.isca.dfConvolutionEngine:BalancingEfficiencyandFlexibilityinSecializedComuting[2015]:htt://csl.stanford.edu/~christos/ublications/2015.convolution_engine.cacm.df5.DeeScale6.ReducedEnergyMicrosystems正在开发用于CNN推理的低功耗异步芯片。据TechCrunch报道,REM是YCombinator第一个ASIC领域的风险投资。7.Leamind也很忙。FPGA微软已经站队FPGA了。Wired这篇文章说得很好:《深度|《连线》长文揭秘微软ProjectCatault:人工智能时代押注FPGA》。「Bing占据着世界上20%的桌面搜索市场和6%的移动手机市场,在Bing上,这个芯片能帮助Bing适应新品种的人工智能:深度神经网络。」我对这种方法也有些兴趣。赛灵思和英特尔(收购了Altera)的FPGA是很强大的引擎。赛灵思自然宣称他们的FPGA是对INT8最好的,他们的一份白皮书里面包含了下面的幻灯片:这两家供应商都很支持使用他们的FPGA做机器学习:Xilinx-AccelerationZone:htts://goo.gl/KheG5WIntelFPGAOenCL(htts://goo.gl/S62fMA)和Solutions(htts://goo.gl/zkYyXB)尽管FPGA单位功耗的性能是很出色的,但这些供应商的更大型的芯片的售价却长时间以来都高得吓人。赛灵思的VU9P在Avnet上的售价超过5万美元。寻找价格和能力之间的平衡点是FPGA的主要难题。FPGA方法的一大优势是可以用来制定一些非常出色的架构决策。比如如果因为HBM,你想在板上DRAM压缩并且实时地解压,然后希望借此改善你的内存的浮点数据流,如果你足够努力,你能找到解决方案。参阅《用于基于FGPA的高性能计算的浮点数值数据流的带宽压缩(BandwidthComressionofFloating-PointNumericalDataStreamsforFPGA-BasedHigh-PerformanceComuting)》:htt://dl.acm.org/citation.cfm?id=3053688。这种动态的架构敏捷性(architecturalagility)很困难,几乎无法用其它任何方法实现。架构选择太多可能也是一个问题,但我自己还是挺喜欢这个问题的。这篇论文很不错《使用TILT减少SoftScalarCPU和定制硬件之间的性能差距(ReducingthePerformanceGabetweenSoftScalarCPUsandCustomHardwarewithTILT)》:htt://dl.acm.org/citation.cfm?id=3079757,其中研究了定制硬件和FPGA处理器(带有基于FPGA的水平微编码的计算引擎)的性能差距,这让人想起了古老的DISC和很多个月前的离散指令集计算机(discreteinstructionsetcomuter)。谁是赢家?在这样的竞争中,预测谁是赢家是傻瓜的举动。高通凭借其手机市场的主导地位,可以轻松进入赢家榜单。苹果不管做什么都会成功的。英伟达的V100有Tensor单元,也基本上赢了。我不确定我能否看到谷歌的TPU在无休止的长期硅谷竞赛中幸存下来,尽管目前它的性能很出色。我很喜欢FPGA方法,但我也不禁想他们应该以远远更低的价格发布DNN版本,这样才不会被大众漠视。英特尔和AMD会做自己的协处理器。因为所有主要玩家都参战了,所以其中很多都会支持标准的工具包,比如TensorFlow,这样我们就不必太在意规格了,关心基准就可以了。在更小型的玩家中,我很喜欢而且支持的是Adateva方法,我认为他们的内存架构可能并不适合DNN。我希望我错了。WaveComuting可能是我继FPGA之后最喜欢的方法。他们的整个异步数据流方法是非常棒的。REM似乎也在做类似的事情;但我认为他们可能太迟了。WaveComuting能否在面对所有竞争对手时继续保持领先吗?也许只要他们的异步CGRA有一个本质优势,就可以。尽管我不确定他们是否只要DNN上的成功,因为他们的技术有更加广泛的应用能力。神经形态脉冲处理器也许现在暂时可以忽略,但也可以保持关注,因为它们有很大的功耗优势。量子计算反正会让所有这些都稍逊风骚。IBM的TrueNorth可能会是个例外,因为它不仅能执行脉冲网络,还能有效地运行DNN。原文链接:htts://meanderful.blogsot.j/2017/06/fgas-and-ai-rocessors-dnn-and-cnn-for.html
    亮了(0) 177 0 08-29
  • 手把手教你如何在Arty开发板上,构建开源MCU,利用Arduino编程
    Arduino+FPGA在Arty开发板上「用Arduino搞事情」导读作为一名内心有着“不安分”创客基因的FPGA爱好者,自Xilinx联合DIGILENT发布了Arty系列FPGA开发板以来,这款主打Aurdino+FPGA的产品,就一直吸引着自己的注意。在这篇文章中,我们将看看如何在专门为极客和爱好者设计的基于高性价比XilinxArtix-7FPGA的DigilentArty开发板上,利用RTL源代码开源的RISC-V微控制器架构配置一个开源MCU,并通过ArduinoIDE或者GNU工具链编程。手上有Arty开发板的同学们,掏出来,搞事情吧!*设计基础需要对Linux,Git和Makefile软件编译熟悉。1基于RISC-V内核的FreedomE310微控制器FreedomE310平台的顶层架构图RISC-V是一个自由开放的指令集架构(ISA),是在一个自由许可证下发布的。它鼓励广泛采用并允许任何人实现他们自己的兼容设备,无论是在仿真、FPGA还是ASIC。这些可能是任何东西,从一个超低功率的IoT类设备,到移动,笔记本电脑/桌面和服务器类,甚至针对HPC应用的设备。请注意,RISC-V本身并不是一个处理器,它是一个ISA规范。尽管RISC-V基金会确实提供了一个名为Rocket的参考处理器实现,以及促进内核生成的工具,还有一个GNU编译器工具链。由RISC-V的发明者创立的商业组织SiFive提供了包括IP核和SoC平台在内的产品,由咨询服务支持。他们的E300SoC平台基于E3Corelex,可用作ASIC,也可以用于FPGA。我们将载入Arty开发板配置内存的FreeedomE310微控制器正是基于上图所示的SOC架构。2硬件部分虽然DigilentArty开发板集成USB-JTAG适配器可用对XilinxFPGAArtix-35T和用于上电时配置FPGA的Quad-SPIflash芯片进行编程,但是还需要ARM-USB-TINY-HUSBJTAG适配器,用于连接RISC-V内核调试与编程。虽然需要连接这么多接口,但是请记住,我们使用的是一个完全可编程的平台,你可以自由修改MCU本身的设计,此外还可以上传自己的代码来运行。USB-JTAG连线图《E300的ArtyFPGA开发工具包入门指南》www.sifive.com/documentation/freedom-soc/freedom-e300-arty-fga-dev-kit-getting-started-guide/包含了如何连接USB-JTAG的细节,以及说明如何构建SoC和GNU工具链和对开发板进行编程等。这显然是规范化文档,在这篇文章中描述的步骤是基于包含在《指南》中的指令。PMOD-JD接口连线图使用《指南》中建议的线颜色,不需要更改板上的跳线帽,只需要确保你连接到PMOD-JD接口,而不是其它PMOD接口。为了连接上ARM-USB-TINY-H,我们需要添加新的udev规则,打开/etc/udev/rules.d/99-oenocd.rules,并添加如下代码:#ThesearefortheOlimexDebuggerforusewithE310ArtyDevKitSUBSYSTEM=="usb",ATTR{idVendor}=="15ba",ATTR{idProduct}=="002a",MODE="664",GROUP="lugdev"SUBSYSTEM=="tty",ATTRS{idVendor}=="15ba",ATTRS{idProduct}=="002a",MODE="664",GROUP="lugdev"返回控制终端,使用如下命令,重新加载udev规则:$sudoudevadmcontrol--reload-rules如果你的用户帐户尚未在lugdev组中,则需要将其添加到用户组,然后退出用户,然后再登陆。3FPGA工具链部分登录到Xilinx网站,下载一个工具下载器,选择免费的“WebPACK”版本的VivadoHL工具就足够了。在完成安装后,必须添加Digilent板卡支持包,这只是获取板卡文件并将其复制到适当位置的问题。例如,在下载Vivado2017.1安装程序后,流程是:1切换到root用户,使安装文件获得可执行属性,并执行:$chmod+xXilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin$sudo./Xilinx_Vivado_SDK_2017.1_0415_1_Lin64.bin2安装驱动:$cd/ot/Xilinx/Vivado/2017.1/data/xicom/cable_drivers/lin64/install_scrit/install_drivers$sudo./install_drivers3获取Digilent开发板支持包,并复制到适当位置:$gitclonehtts://github.com/Digilent/vivado-boards.git$sudoc-rvivado-boards/new/board_files/*/ot/Xilinx/Vivado/2017.1/data/boards/board_files/4返回home目录,建立环境变量:$cd$source/ot/Xilinx/Vivado/2017.1/settings64.sh注:该指令在每次打开新的命令行终端时都要执行一遍。5打开Vivado图形化界面可以输入:$vivado4开发板配置已经建立好的FPGA固化程序,还包含一个演示工程。该程序可以从SiFive网站下载(需要注册)。htts://dev.sifive.com/dashboard/打开Vivado后,点击打开硬件管理器,并连接上目标板卡(Arty开发板)。选中FPGA右击,选择AddConfigurationMemoryDevice,选择型号为Micronartn25q128-3.3v的Flash芯片。点击OK后,可以选择下载好的.mcs文件对Flash进行固化。当固化完成时,可以按下板卡上标注PROG的红色按钮,FPGA将自动配置。接着演示程序将开始运行,LED1和LED2将被点亮。如果你用终端模拟器连接上了/dev/ttyUSB1,可以看到输出信息。至此,你可以跳过下一节内容,直接利用ArduinoIDE或者GNU工具链对该SoC进行编程。当然你可以尝试对SoC进行编译。5Soc芯片编译首先我们需要利用Git工具将SiFiveE300和U500平台的RTL源代码(htts://chisel.eecs.berkeley.edu/)下载下来。$gitclone--recursivehtts://github.com/sifive/freedom.git这将需要一些时间,因为需要将依赖关系的所有git子模块,如Rocket芯片生成器和芯片组等都下载下来。当Git执行完成,我们可以对Verilog源文件进行编译。$make-fMakefile.e300artydevkitverilog在生成固化程序之前,需要确认已经建立Vivado的环境变量,然后再生成固化程序:$make-fMakefile.e300artydevkitmcs这个命令会利用Vivado工具对Xilinx的FPGA进行综合,以及布局布线等。该过程需要等待一段时间,执行结束后,生成了新的.mcs文件,可以用于配置Flash。需要注意的是,新生成的配置文件没有包含演示程序。当然,也可以通过修改makefile文件将演示程序添加进配置文件。6兼容ArduinoIDE针对Arty开发板的FreedomE310已经支持利用ArduinoIDE进行开发,因此这是目前,最简单的软件开发方式。我们需要做的是选择File→Preferences→Settings和添加开发板管理的网址:htt://static.dev.sifive.com/bs/arduino/ackage_sifive_index.json然后点击Tools→Board→BoardManager,搜索SiFiveFreedomBoards,并安装开发板支持文件。这样,我们就可以选择FreedomE300ArtyDevKitboard,打开blinkexamle演示程序,编译并上传至板卡。注意,如果USB-JTAG没有正确连接到PMOD接口,或者udev没有配置,又或者用户不在lugdev用户组,都有可能导致下载程序失败。7freedom-e-sdk如果你更喜欢使用文本编辑器和makefile进行开发,freedom-e-sdk的GNU工具链会是很好的选择htts://github.com/sifive/freedom-e-sdk。构建GNU工具链同样很简单。1首先安装工具链的依赖库$sudoat-getinstallautoconfautomakelibmc-devlibmfr-devlibgm-devgawkbisonflextexinfolibtoollibusb-1.0-0-devmakeg++kg-configlibexat1-devzlib1g-dev2下载、编译freedom-e-sdk的源文件$gitclone--recursivehtts://github.com/sifive/freedom-e-sdk.git$cdfreedom-e-sdk$maketools3编写代码,并编译上传至开发板$makesoftwarePROGRAM=demo_gioBOARD=freedom-e300-arty$makeuloadPROGRAM=demo_gioBOARD=freedom-e300-arty有时间和精力的话,你甚至可以定制属于你自己的微控制器平台,自由设计SoC芯片。当然如果你觉得这部分超出了你的能力范围,跟着上述指南操作到这里,你已经拥有了最酷的兼容Arduino的FPGA开发板啦!
    亮了(0) 331 0 08-14
  • 深度神经网络全面概述:从基本概念到实际模型和硬件基础
    来源机器之心作者:JoelEmer等声明:本文经机器之心(微信公众号:alomosthuman2014)授权转载,禁止二次转载深度神经网络(DNN)所代表的人工智能技术被认为是这一次技术变革的基石(之一)。近日,由IEEEFellowJoelEmer领导的一个团队发布了一篇题为《深度神经网络的有效处理:教程和调研(EfficientProcessingofDeeNeuralNetworks:ATutorialandSurvey)》的综述论文,从算法、模型、硬件和架构等多个角度对深度神经网络进行了较为全面的梳理和总结。鉴于该论文的篇幅较长,机器之心在此文中提炼了原论文的主干和部分重要内容,更多内容请点击文末「阅读原文」下载原论文了解。论文原稿:见附件目前,包括计算机视觉、语音识别和机器人在内的诸多人工智能应用已广泛使用了深度神经网络(deeneuralnetworks,DNN)。DNN在很多人工智能任务之中表现出了当前最佳的准确度,但同时也存在着计算复杂度高的问题。因此,那些能帮助DNN高效处理并提升效率和吞吐量,同时又无损于表现准确度或不会增加硬件成本的技术是在人工智能系统之中广泛部署DNN的关键。本文旨在提供一个关于实现DNN的有效处理(efficientrocessing)的目标的最新进展的全面性教程和调查。特别地,本文还给出了一个DNN综述——讨论了支持DNN的多种平台和架构,并强调了最新的有效处理的技术的关键趋势,这些技术或者只是通过改善硬件设计或者同时改善硬件设计和网络算法以降低DNN计算成本。本文也会对帮助研究者和从业者快速上手DNN设计的开发资源做一个总结,并凸显重要的基准指标和设计考量以评估数量快速增长的DNN硬件设计,还包括学界和产业界共同推荐的算法联合设计。读者将从本文中了解到以下概念:理解DNN的关键设计考量;通过基准和对比指标评估不同的DNN硬件实现;理解不同架构和平台之间的权衡;评估不同DNN有效处理技术的设计有效性;理解最新的实现趋势和机遇。I.导语深度神经网络(DNN)目前是许多人工智能应用的基础[1]。由于DNN在语音识别[2]和图像识别[3]上的突破性应用,使用DNN的应用量有了爆炸性的增长。这些DNN被部署到了从自动驾驶汽车[4]、癌症检测[5]到复杂游戏[6]等各种应用中。在这许多领域中,DNN能够超越人类的准确率。而DNN的出众表现源于它能使用统计学习方法从原始感官数据中提取高层特征,在大量的数据中获得输入空间的有效表征。这与之前使用手动提取特征或专家设计规则的方法不同。然而DNN获得出众准确率的代价是高计算复杂性成本。虽然通用计算引擎(尤其是GPU),已经成为许多DNN处理的砥柱,但提供对DNN计算更专门化的加速方法也越来越热门。本文的目标是提供对DNN、理解DNN行为的各种工具、有效加速计算的各项技术的概述。该论文的结构如下:SectionII给出了DNN为什么很重要的背景、历史和应用。SectionIII给出了DNN基础组件的概述,还有目前流行使用的DNN模型。SectionIV描述了DNN研发所能用到的各种资源。SectionV描述了处理DNN用到的各种硬件平台,以及在不影响准确率的情况下改进吞吐量(thoughtut)和能量的各种优化方法(即产生bit-wiseidentical结果)。SectionVI讨论了混合信号回路和新的存储技术如何被用于近数据处理(near-datarocessing),从而解决DNN中数据流通时面临的吞吐量和能量消耗难题。SectionVII描述了各种用来改进DNN吞吐量和能耗的联合算法和硬件优化,同时最小化对准确率的影响。SectionVIII描述了对比DNN设计时应该考虑的关键标准。II.深度神经网络(DNN)的背景在这一部分,我们将描述深度神经网络(DNN)在人工智能这个大框架下的位置,以及一些促进其发展的的概念。我们还将对其主要的发展历程和现阶段主要的应用领域做一个简单的介绍。A.人工智能和深度神经网络根据JohnMcCarthy的论述,深度神经网络(也称为深度学习)是人工智能(AI)大框架下的一部分。而人工智能(AI)是利用科学与工程学创造具有如同人类那样能实现目标的智能机器。人工智能这个词就是这位计算机科学家在上个世纪50年代所创造出的。深度学习和整个人工智能的关系就如下图所示。图1:深度学习在人工智能大框架下的位置B.神经网络和深度神经网络(DNN)神经网络从神经元涉及对输入值求加权和进行计算这一概念而获得灵感。这些加权和对应于突触完成值的缩放以及其和神经元值间的组合。此外,因为计算与神经元级联相关联,并且其为简单线性代数的运算,所以神经元不会仅仅输出加权和。相反,在神经元中有函数执行组合输入的运算,而这种函数应该是非线性运算。在非线性运算的过程中,神经元只有在输入超过一定阀值时才生成输出。因此通过类比,神经网络将非线性函数运用到输入值的加权和中。我们等一下会描述一些非线性函数。图2:简单的神经网络例子。(a)神经元和突触,(b)为每一层计算加权和,(c)前向和反向(循环)网络,(d)全连接与稀疏(a)中展示了计算神经网络的示意图。图的前端是输入层,该层会接受输入数据值。这些数据值前向传播到神经网络中间层的神经元中,中间层也常称为神经网络的隐藏层。一个或多个隐藏层的加权和最终前向传播到输出层,该输出层会最终向用户呈现神经网络的输出结果。为了将脑启发的术语和神经网络相匹配,神经元的输出通常称为激活(activation),并且突触如(a)所示通常称为权重(weight)。在上方表达式中,W_ij代表着权重、x_i为输入激活、y_i是输出激活,而f(·)就代表着在III-2中描述的非线性激活函数。在神经网络的领域内,有一门称为深度学习的研究。普通神经网络基本上层级不会很多,而在深度学习里,神经网络的层级数量十分巨大,现如今基本上神经网络可以达到5到1000多层。C.推理vs训练这一节中,如图4所示,我们将把图像分类用作训练DNN的一个强劲的实例。评估DNN时,我们输入一个图像,DNN为每一个对象分类输出分值向量;分值最高的分类将成为图像中最有可能的对象分类。训练DNN的总体目标是决定如何设置权重以最大化正确分类(来自标注的训练数据)的分值并最小化其他不正确分类的分值。理想的正确分值与DNN基于其当前权重计算的分值之间的差被称为损失值(L)。因此训练DNN的目标是找到一组权重以最小化大型数据集中的平均损失值。图4:图像分类任务D.开发历史1940年代-神经网络被提出1960年代-深度神经网络被提出1989年-识别数字的神经网(LeNet)出现1990年代-浅层神经网硬件出现(IntelETANN)2011年-DNN语音识别取得突破性进展(Microsoft)2012年-用于视觉的DNN开始替代人工放大(AlexNet)2014年+-DNN加速器研究兴起(Neuflow、DianNao等等)图5的表柱是这些年来ImageNet竞赛中每届冠军的表现。你可以看到最初算法精确度的错误率在25%或更多。2012年,多伦多大学的AlexNet团队通过GPU来提升其计算能力并采用深度神经网络方法,把错误率降低了近10%[3]。他们的成功带来了深度学习风格的算法的井喷,以及图像识别技术的持续进步。图5:ImageNet竞赛[10]结果E.DNN的应用从多媒体到医疗,DNN对很多应用大有裨益。在这一节中,我们将展示DNN正在发挥影响的领域,并凸显DNN有望在未来发挥作用的新兴领域。图像和视频语音和语言医疗游戏机器人F.嵌入vs云执行DNN推断处理的嵌入平台有着严格的能耗、计算和存储成本限制。当DNN推断在云中执行时,语音识别等应用经常有强烈的延迟需求。因此,在本文中,我们将聚焦于推断处理而不是训练的计算需求。III.深度神经网络概述根据应用情况不同,深度神经网络的形态和大小也各异。流行的形态和大小正快速演化以提升模型准确性和效率。所有深度神经网络的输入是一套表征网络将加以分析处理的信息的值。这些值可以是一张图片的像素,或者一段音频的样本振幅或者某系统或者游戏状态的数字化表示。处理输入的网络有两种主要形式:前馈以及循环(图2c)。前馈网络中,所有计算都是在前一层输出基础上进行的一系列运作。最终一组运行就是网络的输出,比如,这张图片包括某个特定物体的概率是多少,某段音频出现某个单词的概率是多少,或者下一步行动的建议等。在这类深度神经网络中,网络并无记忆,输出也总是与之前网络输入顺序无关。相反,循环网络(LSTM是一个很受欢迎的变种)是有内在记忆的,允许长期依存关系影响输出。在这些网络中,一些中间运行生成的值会被存储于网络中,也被用作与处理后一输入有关的其他运算的输入。在这篇文章中,我们关注的是前馈网络,因为到目前为止,少有人关注硬件加速,特别是循环网络的。深度神经网络也可以是全连接的(FC,也指多层感知器),如图2(d)最左部分所示。在一个全连接层中,所有输出与所有输入都是相连接的。这需要相当数量的存储和计算空间。谢天谢地,在许多应用中,我们可以移除激活(activations)之间的一些连接,方法就是将权重设置为零而不影响准确性。结果会产生一个稀疏连接层。图2(d)最右端的层就是一个稀疏连接层。通过限制对结果有影响的权重数量,我们也可以实现更高效的计算。如果每个输出仅仅是一个固定大小输入窗口的函数,就会出现这类结构化稀疏性。如果这套权重被用于每一个输入计算,就会进一步提高效率。这一权重共享能显著降低权重的存储要求。通过将计算构建为卷积,一种非常流行的窗口式的权重共享的网络诞生了,如图6(a)所示,其仅使用少量临近的激活来计算加权和的输出(即,该过滤器有一个有限的接受域,与输入的距离超过特定值的所有权重都将被设置为0),而且这一套权重能被每个输入共享来计算(即,滤波器是空间不变的)。这种结构稀疏性的形式正交于源自网络(修改情况如本文部分VII-B2所述)的稀疏性。所以,卷积神经网络就是一种受欢迎的深度神经网络形式[35]。1)卷积神经网络(CNN)图6:卷积的维度。(a)传统图像处理中的二维卷积,(b)CNN中的高维卷积图7:卷积神经网络表1:CONV/FC层的形状参数给定表I中的形状参数(shaearameters),卷积层的计算可以定义为:2)非线性(Non-Linearity)图8:多种形式的非线性激活函数(来自CaffeTutorial[43])3)池化(Pooling)图9:多种形式的池化(来自CaffeTutorial[43])4)归一化(Normalization)控制输入在层级中的分布能显著地加快训练速度并提升准确度。因此,输入激活在层级上的分布(σ,µ)需要归一化处理,使其变换为均值为0、标准差为1的分布。在批量归一化(batchnormalization)中,归一化值如方程(2)所示将进一步缩放和平移,参数(γ,β)是从训练[44]中学到的两个小常数,它们能避免数值问题。A.流行的DNN模型在过去的二十多年里出现了很多种DNN模型。每一种都称其拥有不同的「网络架构」,因为他们依据不同层级数量、滤波器形状(如过滤尺寸,滤波器和通道的数量)、层级类型以及连接方式而划分。正确地理解这些不同的方法和它们发展的趋势对于提高DNN引擎的效率至关重要。其中包括:LeNet[9]于1989年提出,是最早的CNN方式之一。其中最为人熟知的是第八版的LeNet-5,其中包含两个卷积层和两个全连接层[45]。AlexNet[3]是第一次赢得ImageNet挑战赛的CNN网络(2012年)。它由五个卷积层和三个全连接层组成。Overfeat[46]与AlexNet具有非常相似的架构:五个卷积层和三个全连接层。VGG-16[47]更进一步,使用了16层的深度神经网络,其中包含13个卷积层,3个全连接层。GoogLeNet[48]更深,有22个层,它首次引入了起始模块(见下图)。ResNet[11],即残差网络(ResidualNet),使用残差连接可以让层级更加深入(34层以上)。该网络第一次让DNN在ImageNet挑战赛中的表现超过了人类,to-5错误率在5%以下。图11:GoogleNet[48]的起始模块(Incetionmodule)通道长度实例,其中每个CONV层在ReLU层之后(图中未显示)。图12:ResNet[11]中的快捷模块。其中最后一个CONV层之后的ReLU层被快捷连接。表2:目前流行的DNN[3,11,45,47,48]模型,其中正确率都基于在ImageNet[10]中TOP-5误差。IV.DNN开发资源DNN得以快速发展的一个关键因素是研究社区与产业界使得一系列开发资源变得可用。这些资源对DNN加速器的开发也很关键,提供工作负载的特性、在模型复杂性和准确率上促进权衡性的探索。这一章节将描述了对此领域感兴趣的人能快速上手的一些资源。A.框架(Frameworks)为了DNN开发的简便以及让训练网络可共享,不同的团队开发出了不同的深度学习框架。这些开源库包含了面向DNN的软件库。Caffe在2014年由UC伯克利大学开源,它支持C、C++、Python和MATLAB。TensorFlow由谷歌团队2015年开源,支持C++和Python,也支持多CPU和GPU。它要比Caffe更灵活,计算表达是数据流图到张量管理(多维度阵列)。另一个流行的框架是Torch,由Facebook和NYU开发,它支持C、C++和Lua。当然,还有其他的一些框架,比如Theano、MXNet、CNTK,这在[57]中有所描述。这些框架的存在不只是方便了DNN研究人员和应用设计者,它们对编程高性能或更高效的DNN计算引擎也是无价的。例如,大部分框架可以使用英伟达的cuDNN库在GPU上进行快速运算。这一加速对框架的使用者而言是很明显的。类似地,硬件加速器这种如此易懂的结合也能在Eyeriss这样的芯片上获得[58]。最终,这些框架对硬件研究人员来说也是无价的资源(工作负载),它们可被用于设计不同工作负载的实验、性能分析(rofiling)不同的工作负载、探索硬件与软件之间的权衡。B.模型(Model)C.流行的分类数据集在许多公开的数据集中有许多人工智能任务可用来评估DNN的准确率。公开数据集对对比不同方法的准确率而言非常的重要。最简单也最常见的任务是图像分类。图像分类涉及到在给定的完整图像中,选择出N类物体中的1类,它不需要进行定位于检测。其中包括:MNIST:它包含手写数字的28×28像素的灰度图像,里面有10大类别(10个数字)、6万张训练图像和1万张测试图像。CIFAR:这是一个包含不同物体32×32像素的彩色图像数据集。ImageNet:它包含的图像是256×256彩色像素,有1000多类。图:13MNIST数据集(10类、6万张训练图像、1万张测试图像)[59]vs.ImageNet数据集(1000多类、130万张训练图像、10万张测试图像)[10]D.用于其它任务的数据集V.用于DNN处理的硬件在这部分里,我们将讨论在不同的硬件平台中进行高效处理而不降低准确性的策略(所有在本节中的方法都要输出完全相同的结果)。对于CPU与GPU这样的时间敏感架构,我们将讨论在它们的运行中如何减少乘法次数以增加吞吐量。对于加速器这样的空间敏感架构,我们讨论数据流如何能低成本地从存储器中被调用,以减少能耗。图14:高度并行的计算范式A.在CPU和GPU平台上加速核(kernel)计算图15:映射到全连接层(a)的矩阵乘法,当从单个输入特征图计算单个输出特征图时,使用矩阵向量乘法。(b)当从N个输入特征图计算N个输出特征图时,使用矩阵乘法。图16:映射到卷积层的矩阵乘法(a)将卷积映射到Toelitz矩阵。(b)将Toelitz矩阵扩展到多个通道和滤波器。图17:用于加速DNN的FFT。B.为加速器设计的Energy-EfficientDataflow图18:每个MAC的存取图19:存储层级和数据移动能量图20:DNN中的数据复用机会图22:DNN的数据流。(a)权重固定(WS),(b)输出固定(OS),(c)没有局部复用(NLR)VI.近场数据处理在上一章节中,我们强调了数据流通主导了能源的消耗。虽然空间架构尽可能将储存器安放在离计算很近的位置(如放入PE),但同时我们也在努力将高密度存储器安置在近计算的位置,或者直接将计算集成到存储器本身中。在嵌入式系统中,我们还努力将计算放入到传感器(最先收集数据的元件)中。在本论文的这个章节中,我们将讨论如何通过使用混合信号回路(mixed-signalcircuit)设计和高级存储技术将处理尽可能放置在离数据近的地方以减少数据流通。A.DRAMB.SRAMC.非易失性电阻式存储(Non-volatileResistiveMemories)D.传感器图33。通过(a)SRAMbit-cell和(b)非易失性电阻式存储进行模拟计算VII.DNN模型和硬件的联合设计(CO-DESIGN)对DNN模型和DNN硬件进行联合设计可以为处理效率带来进一步的提升。在传统上,DNN模型的设计目标是最大化准确度,而不会考虑太多实现的复杂性。但是,这可能会使得设计很难实现。DNN模型和硬件和联合设计可以有效地联合最大化准确度和吞吐量,同时最小化能耗和成本,这能增加采用的可能性。这种方法已经在其它重要的且广泛应用的多媒体应用(比如视频压缩)中得到了证明。之前的时候,视频标准大多关注算法开发。从MPEG-2到H.264/AVC,在编码效率上实现了2倍的提升,而解码器复杂性却增加了4倍[110]。最近,最新的视频编码标准H.265/HEVC[111]使用了算法和硬件的联合设计;结果其相对于H.264/AVC在编码效率上实现了又2倍的提升[112],而解码器复杂性也只增加了2倍。在这一节,我们将重点介绍几个DNN模型和硬件联合设计方面的研究。注意和第V节不同,这一节所提出的技术可能会改变准确度;尽管其目标是在最小化准确度改变的同时显著减少能耗并提高吞吐量。这些方法可以大致分为以下几类:降低运算和操作数的精度。这包括将浮点数改为定点数、减少位宽、移到对数域和权重共享。降低运算的数量和模型的大小。其中的技术包括:压缩、剪枝和设计紧凑的网络架构。表3:为AlexNet降低数值精度的方法。这里的准确度是在ImageNet上测得的to-5error。*表示不适用于第一层和/或最后的层VIII.用于DNN评估和比较的基准指标A.DNN模型的指标为了评估一个给定模型的属性,我们应该考虑以下元素:在ImageNet这样的数据集上的to-5error方面的模型准确度。另外,使用了哪种类型的数据增强(比如,多次裁剪、集成模型)。对于该DNN模型,要么应该使用众所周知的模型,要么就应该报告模型的参数,包括层的数量、滤波器大小、滤波器的数量和通道的数量。权重的数量会影响该模型的存储需求,应该报告。如果可能,也应该报告非零权重的数量,因为这能反映理论上的最小存储需求。需要执行的MAC的量应被报告,因为其或多或少指示了给定DNN的运算量和吞吐量。如果可能,也应该报告非零MAC的量,因为这能反映理论上的最小计算需求。表4:流行的DNN指标。稀疏性(sarsity)根据报告的非零(NZ)权重和MAC得到B.DNN硬件的指标为了测量DNN硬件的有效性,我们要考虑这些指标:硬件设计的能量效率,包括每非零MAC(非零权重和激活)的能量和MAC的位宽(bitwidth)。片外(off-chi)带宽(如,DRAM带宽)应该报告的包括片外的每非零MAC(非零权重和激活)的访问和MAC的位宽区域效率(areaefficiency)衡量的是芯片的成本,要考虑内存(寄存器或SRAM)的尺寸和类型和控制逻辑的量。吞吐量(throughut)应该基于多种DNN的运行时间来报告,以考虑映射和内存带宽的影响,这能提供比峰值吞吐量更有用和信息更丰富的指标。表5:Eyeriss基准指标示例[90]IX.总结(略)致谢和参考文献(略)
    亮了(0) 308 0 08-09
  • 【Python + ZYNQ教程】让Python运行在Zybo上:LED呼吸灯
    既然同样是ZYNQ开发板,PYNQ(ArtyZ7-20)可以跑Python进行控制,那么ZYBO是否也可以呢?让我们试一下!所有视频在附件里提供,均为4K视频。硬件准备:一块DigilentZybo开发板;一张8GB以上的MicroSD卡一个SD卡读卡器一根MicroUSB数据线;一根以太网线;软件准备:Vivado2015.4xillinux-1.3.img.gzxillinux-eval-zybo-2.0a.ziPuTTY或者Xshell(Windows系统)Win32DiskImager(Windows系统)操作步骤:1.下载所需要的文件:下载地址Vivado2015.4:htts://www.xilinx.com/suort/download.htmlxillinux-1.3.img.gz:htt://xillybus.com/downloads/xillinux-1.3.img.gzxillinux-eval-zybo-2.0a.zi:htt://xillybus.com/downloads/xillinux-eval-zybo-2.0a.ziWin32DiskImager(Windows系统):htts://sourceforge.net/rojects/win32diskimager/*实际测试中,Xillybus制作的Vivado工程可以在2017年以前的版本,即除2017.1和2017.2版本上进行综合、布线、生成比特流(Bitstream)文件(*.bit)。Digilent官方提供的支持是以2015.4为基础的。因此在这里使用2015.4版本2.解压xillinux-1.3.img.gz,得到xillinux-1.3.img文件3.将MicroSD卡进行格式化成FAT32文件系统格式4.将镜像烧写到SD卡中:选定xillinux-1.3.img镜像,选定SD卡盘符,进行烧写5.解压xillinux-eval-zybo-2.0a.zi,将bootfiles文件夹内的boot.bin和devicetree.dtb拷贝到SD卡第一个分区6.打开Vivado,选择Tools->RunTclScrit,选择解压xillinux-eval-zybo-2.0a.zi目录下blockdesign中的xillydemo-vivado.tcl生成工程7.点击生成bitstream,等待生成bitstream后,在工程目录下找到xillydemo.bit,同样拷贝到SD卡第一个分区8.将SD卡插入Zybo开发板上,确认VGA旁边的JP5跳线连接在SD上,连接网线到路由器上,连接MicroUSB线到电脑上,打开Zybo9.查看设备管理器以确定Zybo使用的串口端口号,使用PuTTY或者Xshell进行连接10.对文件系统部分进行扩展,以防止下边使用过程中SD卡空间不够用:重启之后,使用resize2fs扩展文件系统11.在确定联网的情况下使用sudoat-getudate;sudoat-getugrade;对Xillinux(Ubuntu12.04LTS)进行更新l如果遇到身边没有路由器,只有电脑能够上网,怎么办?l将网线连接在笔记本电脑上lWindows上:1)将以太网的TCP/IPv4协议IP地址设置成192.168.137.1,子网掩码设置成255.255.255.02)设置好自己常用的DNS服务器地址,例如阿里云DNS:223.5.5.5,223.6.6.6;360DNS:123.125.81.6,101.226.4.6114DNS:114.114.114.114,114.114.115.115GoogleDNS:8.8.8.8,8.8.4.43)将能够连接Internet的连接共享给连有Zybo的以太网连接4)确保网络防火墙允许192.168.137.0~192.168.137.255网段的数据能够通过5)在Zybo上设置/etc/network/interfaces文件如下:6)在Zybo上设置/etc/resolv.conf,添加常用的DNS服务器,同时将网关192.168.137.1添加到其中7)重启网络服务,这样,就可以使用Windows为Zybo共享网络了lLinux上:Zybo保持默认设置,Linux上编辑有线连接,将IPv4设置中的方法改成与其它计算机共享,保存即可共享网络*实际测试还是与路由直接连接的时候速度最快,所以尽量使用路由进行连接l除了串口连接,还有什么方法可以连接Zybo上的Linux可以使用OenSSH通过网络进行Linux的访问:首先先安装OenSSH的服务器端,sudoat-getinstalloenssh-server(如果Zybo需要访问其他Linux,需要安装OenSSH的客户端,sudoat-getinstalloenssh-client)OenSSH访问必须需要密码,所以需要asswd命令设置密码:然后使用PuTTY或者Xshell通过输入IP地址,输入用户名和密码,通过OenSSH进行访问12.安装ython:sudoat-getinstallython3ython3-devython3-dbg(在Ubuntu12.04LTS上,Python最高支持3.2版本)13.创建一个ython脚本,添加以下内容:#!/usr/bin/ython3#-*-coding:utf-8-*-imorttimeimortsysimortosdir=0wm=0try:whileTrue:os.system('echo1>/sys/class/leds/mmc_led/brightness')time.slee(0.01*wm/100)os.system('echo0>/sys/class/leds/mmc_led/brightness')time.slee(0.01*(100-wm)/100)ifdir==0:wm=wm+10else:wm=wm-10ifwm>100:dir=1wm=100ifwm<0:dir=0wm=0excetKeyboardInterrut:os.system('echo0>/sys/class/leds/mmc_led/brightness')exit()*对于Linux系统下设备的读写控制,可以参考这篇博客:htts://falsinsoft.blogsot.co.il/2012/11/access-gio-from-linux-user-sace.html*Linux系统下所有的设备都是基于Linux树状结构进行设备挂载,基于文件读写的方式进行操作。向控制结点通过ie管道写入数据,使得LED被点亮*下面是测试的时候的视频:WP_20170805_00_36_34_Pro.m4*ython通过os.system('')调用系统命令进行LED的控制14.执行脚本,可以观察到,MIO7对应的LED呈现呼吸灯状态下面是呼吸灯效果视频:WP_20170805_00_18_34_Pro.m4
    亮了(2) 534 0 08-05
解决问题:55
干货热帖:129
会员总数:6071
总帖数:521
我要发帖

贡献榜

  • hahavchen

    创新创业教育知名圈内人

    常隐匿于江湖的资深攻城狮,拥有超过10年的半导体与测控行业产品研发、技术支持、市场拓展及区域销售经验。目前同时担任上海交通大学本科生企业导师。

    • 王斌Jr

      工程师

      Andorid工程师,书呆子

    • mysunday2

      本科生

      武汉大学在读研究生,懂一点Java,懂一点LabVIEW

    • 风雨兼程

      本科生

      热爱科研,忠于技术,渴望在LabVIEW的世界里遨游。

    • 地板

      媒体人

      资深媒体人,现任职于国内某知名电子行业媒体

  • EltonLiang

    工程师

    汽车电子方向系统集成工程师,坐标北京。精通LabVIEW与测控技术,乐于分享总结。

    • Superlava

      工程师

      国家电网工程师,对于创新创造,我是真爱粉!

    • chnwjian

      研究生

      擅长物理实时测量和ardunio

    • linon

      教师

      东南大学电子科学与工程学院

    • suo ivy

      创业者

      乐忠于机器人的创业少年

  • CC

    研究生

    擅长FPGA以及LabVIEW程序设计,拥有多年项目开发经验,曾开发过高速误码仪、自动泊车系统,研发并将PM2.5检测仪推入市场,目前致力于FPGA的图像处理研究。

    • 冰淇淋

      研究生

      略懂c语言,爱玩爱交流

    • Veritas

      电子技术爱好者

      非电类专业的在校纯技术爱好者

    • 竹杖芒鞋轻胜马

      研究生

      擅长电子电力,电源,逆变器,Matlab的同济骚年

    • 熊猫家的猫

      研究生

      热爱电子设计,熟悉LabVIEW编程,希望和大家一起学习进步。

    • 李比希

      电子技术爱好者

      喜欢LabVIEW,会点c语言,痴迷玩创,让激情碰出创意的火花!

    • 糊涂宝宝

      研究生

      精通C语言与电路设计。善于软硬件结合开发实际工程项目。

    • LabVIEWers

      工程师

      汽车电子电控领域工程师。个人信条:追求卓越。

    • 南瓜粥

      本科生

      致力于精密测量@天津大学

  • philo

    工程师

    刚毕业的新晋TI验证工程师一枚。内心埋有一个小小的希望靠技术改变世界的种子。CLD(认证LabVIEW开发工程师)持有者,并熟悉C语言与MATLAB。

    • 阳光的新手125

      研究生

      Strict coding is the boddy, smart thoughts are the soul.

    • AoduLabVer

      工程师

      华为数字视频领域工程师,技术宅,CLD,热衷LabVIEW

    • 西兰花教负责人

      创业者

      俗称“福建三本“的某985高校毕业,正不务正业地创业中

    • berwin

      创业者

      好奇主义 & 观察者 & 行动派

  • RockMOOC

    教师

    博士,现于哈尔滨工业大学任教。拥有超过8年基于FPGA的数字系统硬件设计经验,精通FPGA开发。

    • wonderm

      本科生

      熟悉LabVIEW/Matlab/Verilog,擅长STM32/K60硬件开发

    • diguaguowang

      研究生

      一直羡慕会各种编程的人,也在向着这个方向努力

    • 阿Q

      工程师

      精通FPGA的酷创达人

    • wigger

      工程师

      Digilent元老级大牛

  • Mr. D

    工程师

    部落的发起者与第一位"Digger",非典型张江男一枚。致力于为有执着有梦想的志同道合者缔造一个可以互相勾搭的中文开源技术社区。