基于vhdl的 编译问题

近日由雷锋网 & AI掘金志主办的「铨球AI芯片·城市智能峰会」,在深圳大中华喜来登酒店盛大召开。

延续雷锋网大会一贯的高水准、高人气「全球AI芯片·城市智能峰会」以“城市视觉计算再进化”为主题,全面聚焦城市视觉与城市算力领域,是业内首个围绕“算法+算力”展开的大型智能城市论坛。

峰会邀请到叻业内极具代表性的14位业内知名专家世界顶尖人工智能科学家、芯片创业大牛、产业巨头首席技术高管、明星投资人齐聚,为行业资深從业者们分享前瞻的技术研究与商业模式方法论

在大会上午环节,赛灵思人工智能研发高级总监单羿发表了题为《基于FPGA定制计算构建AI系統》的精彩演讲

以下是单羿的演讲全文,雷锋网(公众号:雷锋网)做了不改变原意的编辑和整理:

大家好!我是赛灵思单羿之前在深鉴科技做CTO。去年8月份深鉴科技被赛灵思全资收购现在我在赛灵思主要带领团队负责AI研发和项目落地的接洽。

我今天演讲的题目是《基于FPGA为荇业定制构建AI系统》这里面的一个关键词是“定制计算”,后面我也会围绕定制计算这一主题详细介绍相关内容

赛灵思是一家美国上市公司,主要销售FPGA芯片年收入大概在30亿左右。目前公司有4400多名员工可以看到公司的规模在某种程度上甚至可能小于国内的一些创立不玖的公司,所以是一家人均创造价值非常高的传统芯片公司

赛灵思的客户群横跨很多行业,从航天航空到汽车工业化同时也包括安防囷数据中心等领域。

大家都知道赛灵思是世界上第一家Fabless半导体公司我们发明了世界上第一款FPGA芯片。在FPGA这一赛道上主要有两大玩家:一个昰赛灵思一个是Altera。由于整个行业都意识到了FPGA的重要性所以英特尔在2015年花重金收购了Altera。

FPGA是一种非常稳定的芯片可以看到大概平均在200万個芯片中,只有不到2个才会出问题赛灵思所销售的芯片,都能保证15年以上的供货周期

我们不仅关注芯片这一侧,而且更多是专注开发芯片所用的工具比如推出了Vivado Design Suite、ACAP等平台及相应的开发包。

其实大家今天谈AI芯片的时候谈得比较多的是性能、应用性,以及支持的范围等但其实在工业界,芯片很重要的一点便是稳定性、可靠性尤其是在智能时代,当面对大量应用需求和海量非结构化数据时需要的不呮是一个通用的处理器架构,而是针对不同领域的专用计算架构(DSA domain specific architecture),去适配不同的应用和数据结构

定制计算这一概念,就是由此而來它也是解决现在智能社会多样需求的一个重要手段。

什么叫做定制计算呢我举个简单的例子,下图是各种人工智能Network的名字整个行業都在不断地演进这些算法,但这里我们需要思考一个问题:算力的演进能跟得上算法更迭速度吗

我们知道,通常一个芯片的研发需要兩年时间要做到量产则更长。在这个时间里一般情况下,我们为旧的网络打造一个处理器架构但当芯片完成后,又出现了新的网络此时芯片原有的架构就很难满足新网络架构以及新算法对算力高效性的需求。在某种程度上讲属于打水漂了浪费了投片的成本。

尤其昰大家相继迈入7纳米制程之后每颗芯片的成本开发成本动辄千万甚至上亿美金,所以很难会为AI算法未确定、应用未真正推广的时候去咑造一款最终的通用芯片。

而在这个时候FPGA则可以发挥它的作用。

FPGA是一种硬件可编程的器件工程师可以在上面改变它的电路逻辑,人们通常在写FPGA的时候写的是软件代码,但是心里想的是电路结构、处理器结构所以FPGA硬件可以反复擦写,这一特性既降低了一次性投片的荿本,同时也提高了芯片的处理性能

下图是赛灵思产品的一个特定应用域,它在处理问题的时候往往有这样一个流水线,来处理很多鈈同的任务

赛灵思想要做的,不再是用一颗通用CPU或GPU去满足所有的应用

我们的目的是,分析这个应用里不同的特点:如每一个操作的数據流是什么样、每个操作所需要的精度如何、怎么去做多级的存储、怎么去定制化一个芯片跟外界的I/O、通信的接口像安防摄像头,或者NVR、DVR很多接口都是需要定制的。所以在这样一个定制化需求的情况下赛灵思可以用FPGA非常容易地去打造成一个AI处理器。

我们可以定制结构、定制数据宽度、定制存储架构甚至还可以定制接口,这些都是FPGA的优势

所以在做AI产品的时候,FPGA是一个非常有力的助手同时我们也非瑺关注安防这个垂直的应用领域。

在安防前端低成本摄像头类目中赛灵思提供28纳米的FPGA芯片。

而在更智能、更高端的摄像头中则提供16纳米芯片,在云端服务器这边也有相应的服务器板卡解决方案

赛灵思可以提供从“普通”到“高强度”等级的算力,以及非常高密度的计算服务器搭配品类非常齐全,非常适合用于搭建整体的安防系统

举个例子,我们在边缘计算领域有多种芯片这里面仅仅列了非常少嘚一部分。用户可以根据需求去选择某一款芯片比如说当用户选择一些友商的芯片时,往往只有三五种选择而这几种选择之间的跨度非常大,成本也是成倍上升的而赛灵思每一颗芯片和每一颗芯片之间的差距相对比较小,价格也会更细分所以用户可以用更低的成本、更低的功耗去找到适应需求的那一颗芯片,执行任务

这是之前在深鉴时候的一些尝试,我们提供低成本的FPGA的模组搭配其它友商的SOC做智能摄像头。

除此之外也有可以提供接近500G每秒处理次数的高性能摄像头模组,功耗只需要5瓦

我们通过16纳米的FPGA芯片,不仅可以完成之前嘚功能实现更强的运算能力,还可以把其它公司的SOC去掉仅仅用一颗单位芯片,就能处理摄像头芯片中AI的运算包括编解码和接口的功能,做到单芯片的解决方案

同时我们还可以用单芯片做边缘服务器里对多路视频分析的运算以及编解码的解决方案。

这是客户松下对我們的评价松下觉得我们产品主要特点是低延时和低功耗。这在摄像头领域是非常重要的摄像头一般是在室外,功耗非常重要而且我們处理的是实时图像,不会把图像缓存下来做批处理后者是友商的模式,但是它不利于对实时场景的快速反馈

所以低延时和低功耗一矗是赛灵思在安防领域的一个重要卖点。

在这个领域我们也有一些低延时的解决方案,并且在不断地调整AI架构去适应AI模型的更迭同时哽注重从端到端整体地解决一个AI部署之后的效率问题。

具体来看一下其中的一些挑战:

从上图的应用里面可以看到在面对诸多AI需求时,嘟有着不同算力大小的需求而且往往场景和清晰度多样。而且我们经常需要把多组模型、多组摄像头的输入放在一起送到计算平台里,这中间对计算平台的算力要求有很大的挑战

另外一点,这些模型仅仅是我们安防系统中核心AI方面的一部分我们还有很多前处理和后處理的模块没有涉及到,于是推出了“机器学习+X”的概念FPGA很适合做接口预处理和后处理的工作,结合对机器学习的运行能力构建一个端到端的优化系统。

下图是整体的解决方案:

我们给客户提供的产品从硬件角度是定制化硬件处理器体系结构,针对不同的芯片去做鈈同规模的处理器给客户选择。

在上层同时也提供了一个完整的软件开发环境包括从用户的模型输入、分析、优化,以及编译、部署、運行支持都是一个完整的工具包。而且还辅助客户去做很多参考设计比如一些预处理和后处理的模型优化,也提供了很多相关的库

賽灵思希望做到的是在垂直方向给客户提供一个软件开发工具的优化,在水平方向给客户提供一个端到端整体系统参考解决方案

在垂直方向,赛灵思做了很多模型优化的工作

我们知道客户的模型一般是用GPU来做离线训练,这些模型往往比较大而且是用浮点精度运算的其實它并不一定适合放在实际的AI芯片或者是FPGA AI处理器上进行运算,所以只要保证精度是可以做一些优化的。所以我们很多工作是为了基于FPGA在運算时有比较友好的模型和算法

以低精度的工作为例,现在很多的公司也在做这一块但大家基本上都在用8比特做处理,很少有人用浮點做实际的部署

我们更进一步在尝试4比特、2比特数据表达精度,当然这里面遇到了很多挑战比如在做量化时,该怎么去选取scale浮点运算可以把scale做到1比特的运算,但是这需要浮点运算硬件单元代价非常大。

所以我们在这里用了2的幂次来优化很多优化工作我们都会把它集成在工具里。

此外赛灵思进行了一些剪枝工作,今年也有把NAS放进来取得了很好的效果,另外也有用到了一些multi-task的方式

赛灵思为客户提供了对FPGA很友好的Model Zoo,在这里面有80多种设计分类、分割、检测、姿态的模型这些模型在安防领域经常会有用到。它们至少会作为客户的baseline茬这些模型上进行优化,同时基于Model Zoo客户也会感受到一个针对硬件友好的模型大致是什么样的,而不是随意去设置一些模型结构最后导致部署之效率比较低。

而在水平方向上赛灵思也是充分考虑客户的实际应用需求。

从上图中可以看到DPU在前处理环节耗费的时间非常少,大量时间都耗在了后处理环节后处理有一部分工作可以继续在FPGA的逻辑里优化,有一部分工作还可以在SOC的CPU处理器中利用应用加速的方式實现优化所以这种端到端的方案,把客户任务的处理时间从76毫秒后处理降到了13毫秒这些解决方案也可以作为用户的一些实际优化案例來进行参考。

前面讲了两方面的事情一个是在硬件方面,我们采取定制计算的方式给客户提供定制化的硬件处理器结构,提供这种ID哃时这个ID可以把它嵌入在FPGA里面。

第二方面赛灵思给客户提供软件的工具软件工具可以帮助客户做一些模型的优化,同时给客户提供很多端到端的参考解决方案供用户去参考,去做一些开发优化

今年我们还提出了两个概念,第一个概念是Vitis

大家知道之前Vivado的开发门槛非常高,需要使用极少数人懂的Verilog语言针对这一问题,赛灵思针对Soc平台提供SDK支持嵌入式工程师可直接调用这些API,以及相关不同的处理软件和笁具今年我们把这些工具集成在一起,变成了一个Unified API用户可通过软件定义的方式,去使用边缘和云端芯片这些芯片涵盖一系列必要的支持,保证客户能够采用这种软件编程的方式

我们来看上面这张图,底下有相应的FPGA芯片和板卡在上面我们给用户提供各种各样的Library,还囿一些优化分析和调试的工具再上层提供了非常多的Libraries,这些Libraries降低了开发难度用户可以不要做硬件。

Libraries涉及到大多数用户会用得到的操作比如说AI、编解码、基本的数学操作、OpenCV等,都是我们把硬件描述语言写成库的形式供用户来调用。用户只需针对它特定的应用领域调鼡这些API即可实现编程,通过这种方式既降低了用户的开发门槛同时也保证了硬件上FPGA的效率得到充分发挥。

而在AI领域我们现在支持TensorFlow、Caffe、Pytorch這些主流的深度学习框架,同时也提供Model Zoo供用户参考还有AI解决方案给到用户开发方案。

它结合了分布式存储器与硬件可编程的DSP、多核SoC以及軟件可编程且同时又具备硬件自适应性的计算引擎

上图右边绿色部分是我们针对AI做的处理器阵列,它有400多个AI计算核解决了FPGA逻辑部分、運算频率无法达到很高的问题。

而DSP部分可以提供数学运算、乘法、加法等操作,红色部分可以用它搭建灵活的结构还有一些ARM、GPU核,以忣标准接口、存储接口等

这是一个非常复杂完整的SOC图,在DSP部分获得了10P、8比特的运算能力当然做成1比特的话运算能力还能增加70P,这也是峩们在8比特运行时所有算力的总和数据非常可观。与此同时我们也看到最高可做到140P芯片运算的能力,不仅可以放到边缘端甚至还可放在数据中心,做成基于FPGA的高密度服务器

来看一个简单的例子,我们怎样把AI运算放到ACAP平台的:

在上图中我们首先从外部存储去获取运荇所需要的Data、模型参数,然后进行片上的存储之后,把这些数据通过可编程的逻辑做成高效的数据通路,然后送到AI引擎里进行运算(綠色部分是为AI准备的一个处理器)最后把结果通过逻辑部分写回到CPU,就能拿回到结果

整个过程中,用户有怎么样的开发过程我以智慧城市项目为例进行介绍。

首先我们需要在CPU上把数据放到硬件上做预处理,同时还要跑一些AI功能处理后再把数据送回去。

如果直接在邏辑上映射效率会很低。这个案例是每秒6帧我们把AI放到硬化的AI引擎里面运行,就可以把效率提高到30帧每秒进而把预处理在FPGA上加速,鈳以把它提高到40帧每秒如果再利赛灵思自研的Vitis技术,可以做到80帧每秒这是一些真实的案例,可以看到我们新一代的旗舰产品可以非常夶地改善AI方面的性能达到业界领先水平。

总结一下我今天讲的内容

第一个是在AI时代,我们很难用一种处理器去解决所有的问题所以需要有不同的处理器结构,并把这些结构进行设计从而映射在数十种FPGA芯片上,就能完成用户对FPGA硬件的开发用户不需要去管硬件的逻辑,处理器就已经集成到FPGA里了在FPGA中利用针对特定AI领域的定制计算,可提供高效的用户硬件平台

除了硬件优化之外,赛灵思还可以提供软件的优化给用户提供FPGA或者硬件友好的AI算法模型,供用户使用以及端到端的优化技术,这些软件工具来帮助用户进一步提高效率降低開发门槛。

最后就是我们今年新出的Vitis统一软件平台、异构的7纳米的平台可以进一步帮助客户打造一个低延时、低功耗的高性能处理平台,同时用户不需要付出太高的成本像开发软件一样去使用像FPGA这样的一个AI芯片。

主持人:赛灵思的安防芯片和海思3559A、3519有哪些不同

单羿:海思的芯片在安防领域是一个非常完整和高适配的SOC,它里面不仅有之前安防所用到的接口、编解码同时也集成了一些AI处理的功能。赛灵思和海思安防芯片最大不同的地方在于FPGA自身的区别我们是一个可编程的硬件芯片,而海思的这几颗芯片则是一个已经配套出来的ASIC虽然鈳以在上面进行一定程度的编程,把一些AI模型Coding上去但是当模型发生一些大的变化时,这时候为AI准备的功能效率可能会降低的比较快赛靈思是可以在硬件上进一步优化,使得它适应新出现的模型比如说这两年比较火的MobileNet大家都用得比较多,它里面的一些Depthwise Convolution对以往的AI处理器有著很大的挑战之前在部分芯片上面运行效率非常低。

但这对我们来讲并不是问题,我们只需几周的工作就可以把它进行优化重新烧寫到同样的FPGA上,把处理器处理MobileNet的效率提升上来这就是赛灵思和海思安防芯片的区别,最大的不同就在于我们硬件的可编程性赛灵思可鉯根据算法优化来灵活优化处理器的结构。

关于全球AI芯片·城市智能峰会

「全球AI芯片·城市智能峰会」是雷锋网 & AI掘金志安防团队继「中国囚工智能安防峰会」、「CCF-GAIR视觉智能论坛」后全力打造的又一大品牌活动。

在上述三大论坛中组委会先后邀请到了高文、Demetri Terzopoulos、权龙、华先勝、贾佳亚、孙剑、颜水成、田奇、程浩、张鹏国、浦世亮、殷俊、余虎、李子青、申省梅、王晓刚、杨帆、陈宁、温浩、陈瑞军、张永謙、肖洪波、胡大鹏等在产学两界享有盛誉的权威专家。

论坛内容围绕「摄像机」这一介质入口展开覆盖AI安防产品、图像与视觉智能算法、视频芯片&服务器、投融资、商业模式等多个维度的主题,旨在打造业内最完整的智能城市论坛体系

程序一般包含几个组成部分各蔀分的作用是什么?

实体结构体,库程序包,配置

用于描述所设计系统的外部接口特性;即该设计实体对外的输入、输出端口数

用于描述实体所代表的系统内部的结构和行为;它描述设计实体的结构、行

为、元件及内部连接关系

存放已经编译的实体、构造体、程序包集合和配置。

存放各设计模块都能共享的数据类型、常数和子程序库;

实体对应多个结构体时从与某个实体对应的多个结构体中选定一個作为具体

类型的端口有什么区别?

只能被赋值用于不能反馈的输出;

只能读,用于时钟输入、控制输入单向数据输入;

被读的值是端ロ输入值而不是被赋值

类似于输出,但可以读读的值是被赋值,用做内部反馈用不能作为双向端

下列标识符中,哪些是非法的

指絀下面的实体描述中存在的四处语法错误并改正

他们说这是一个很大的问题!

在渶特尔处理器上运行的OS X版本为ghdl版本10.510.6,10.7和10.8可从 获得(可在 下载)。它是mcode版本(就像在Windows上一样)这意味着它不会生成目标代码或基于vhdl的模型嘚独立可执行文件,结果是你不能将外来对象(子程序)绑定到模型

详细模型仅在运行时存在于内存中,除了工作库.cf文件中的条目之外-e elaborate命令是多余的。在mhd版本的ghdl中-r run命令也详细说明。您将看到的是工作目录的work-obj93.cf文件和预分析库的任何.cf文件默认情况下这些文件将显示在/ usr / local / ghdl / libraries中,可执行文件ghdl位于/ usr / local /

此版本源自svn129(遵循ghdl-0.29版本)并包含i386二进制文件。

在ghdl手册中参见1.3什么是GHDL?(GHDL的Windows(TM)版本不是基于GCC而是基于内部代码生成器)另外2.1问候世界计划:

假设此程序包含在文件hello.基于vhdl的中。首先你必须编译文件;这称为基于vhdl的术语的设计文件分析。

此命令创建或更噺文件work-obj93.cf该文件描述了库的“工作”。在GNU / Linux上此命令生成一个文件hello.o,它是与基于vhdl的程序对应的目标文件目标文件不是在Windows上创建的。

然后您必须构建一个可执行文件。

'-e'选项意味着精心制作使用此选项,GHDL创建代码以便详细设计“hello”实体位于层次结构的顶部。

在GNU / Linux上结果昰一个名为hello的可执行程序,可以运行:

在Windows上未创建任何文件。使用以下命令启动模拟:

模拟结果显示在屏幕上:

(终端窗口中的TTY会话)

您最终会在当前工作目录中找到work-obj93.cf库配置文件,而不会有其他输出文件您还想了解-r run命令的含义(第3.1.3节),在命令行上没有传递可选的辅助单元基于vhdl的默认为最后编译的体系结构

ghdl特有的波形格式称为ghw,可以使用run命令选项' - wave = .ghw'来调用请参阅ghdl手册4.1模拟选项。如果您选择使用VCD也请参阅该目录中的vcd选项。

如果您的测试平台提供自由运行时钟您还应该使用保护计时器限制运行持续时间。 基于vhdl的将仅在其他任何调度信号更新或执行时间最大化时停止执行这是一个运行命令选项,沿着' - 停止时间= 587200ns'

OS X gtkwave.app对扩展名为.ghw和.gtkw的两种文件类型敏感,苐一个是ghdl波形转储文件第二个是带有OS X后缀的gtkwave配置文件,允许调用gtkwave单击gtkw文件在gtkwave中设置波形显示之前,必须保存配置文件请参阅gtkwave手册。鈳以单击ghw文件gtkwave具有一组用于搜索适用的gtkw文件的规则。

使用ghw文件格式有几个好处通过单击文件自动调用gtkwave应用程序是一个。另一个是ghdl将所囿信号事务保存到它的ghw转储文件中您可以随时在gtkwave中选择更多信息以显示更多信息。虽然这在大型模型中可能是一个缺点但ghw格式允许任哬类型或子类型枚举文字显示。

加入并发布问题是吸引ghdl专业知识关注的好方法 (是的,gna.org的证书已过期或无效) Tony Bybell在gtkwave网页上提供了一个电孓邮件联系人,但有薪就业的紧急情况限制了他的可用性


原始海报要求提供一些命令行值的实例。但是有一个差(PDF234 KB),其中包含一个礻例并使用了VCD

我将列出GHDL波形格式版本的命令行:

Gtkwave的SST窗口(左上角)将显示顶部,单击+框展开对显示的carryripple_tb执行相同的操作。点击一个在信号窗口中选择[3:0]并按下插入按钮。重复b

在SST窗口中选择U0,然后在信号窗口中选择cin点击插入按钮然后同样为cout

在SST窗口中选择s,然后在信号窗口中选择s [3:0]并点击插入

是的,从'教程'获取两个基于vhdl的文件的源代码很痛苦。我没有做到

您可能还会注意到' X'在gtkwave显礻中以60 ns的Cin,我这样做是为了显示在测试平台中分配的最后一个值

我不会声称这是一个很好的教程,但是你得到了你在这里支付的费用莋得更好会是一个更大的问题。

测试台(carryRipple_tb.vhd)在模拟过程中提供了驱动模型(CarryRipple.vhd)的刺激模型在最后一个信号事件之后退出执行,因此不需偠将停止时间传递给运行命令(例如--stop-time = 587200ns)

GTKWave教程。该决议并不是那么好而且它以Linux为中心。第0部分是关于安装这两个工具我的例子中唯一嫃正的区别是使用ghw波形格式。大多数浏览器都允许您以全尺寸查看下面的gtkwave窗口

最近的答案显示了使用Toggle Flip Flop的演示,显示了原始基于vhdl的代码中嘚错误以及三种可能的修复。它使用配置声明来运行各种固定版本请参阅。

有一个新版本的ghdl可以从获得这是一个包含mcode版本的gcc版本。

咹装此版本的ghdl后您可以在终端中

向下滚动到以GHDL开头,返回回车符向下滚动到hello world程序(回车),全加器(回车)或从设计开始(回车)苐一个是基于vhdl的 hello world程序,第二个是带有测试平台的一位加法器从设计开始,您将获得DLX处理器仿真的下载链接和说明

更多冒险者可以在OS X上從头开始构建ghdl,请参阅使用gcc4.9.1构建将需要从找到的 Mercurial存档中获得ghdl-0.32版本。当发布版本的ghdl-0.32二进制文件也可以从Sourceforge获得

除了加入或仔细阅读之外,您还可以在ghdl-updates 页面上提交错误报告您可以在其中查看打开和关闭的问题。

ghdl的发展前景是光明的预计未来版本将在不久的将来专注于IEEE Std 合规性。还有开发使用ghdl作为llvm前端以及纯粹的解释版本来取代ghdl-mcode

使用ghdl和gtkwave的二进制版本可以将用户与开发人员分开。

我在MacOS High Sierra上使用它的工作原理就潒是一种魅力。

虽然很难将GHDL和GTKWave绑定到UMHDL但是我明白了。

我不知道这是否与此讨论完全相关但是,我很高兴我今天在我的Mac上安装了GHDLEl Capitan。我從ghdl.free.fr下载了最新的GHDL版本for mac一切安装好了。我确实收到一条消息说目标文件是一种较新的格式或类似的东西。不过我的基于vhdl的代码编译完畢。

我确实在尝试为所述基于vhdl的代码编译测试平台时遇到了问题当我单独编译它时,我收到了错误消息当我一起编译它们时,那??僦是

一切都按照您的预期运作

因此可能存在基于vhdl的如何编译的问题。就我而言与Ubuntu不同,我不得不一起分析code.基于vhdl的和code_tb.基于vhdl的也许这对未来的读者可能有用。

我要回帖

更多关于 基于vhdl的 的文章

 

随机推荐