自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

拾贝壳的大男孩

FPGA技术总结、新技能get

  • 博客(28)
  • 收藏
  • 关注

原创 神经网络从算法训练到FPGA部署 (1)--开发流程说明

将深度神经网络算法部署到现实场景(基于FPGA),主要包含两部分的工作,一个是为场景找到合适的算法,训练出满足要求的模型;第2个是将模型定点化后部署在FPGA上运行,主要含以下步骤:准备工作:数据收集及TFrecord制作,数据预处理函数编写。 练习时从kaggle网站上获取带标注数据集; 制作训练与验证用的Tfrecord数据文件; ...

2019-08-24 09:32:06 7363 4

原创 Xilinx的Zynq系列,ARM和PL通过DMA通信时如何保证DDR数据的正确性。

使用ZYNQ或者MPSoC的好处是可以通过PL逻辑设计硬件加速器,对功能进行硬件加速。加速器和ARM之间的交互信息一般包含自定义加速指令传递、待计算数据以及计算结果。这三种交互信息为了实现高性能往往需要使用DMA进行通信。考虑两种场景,一种是ARM将运算数据的结果或者一些待处理数据发往PL侧加速,一种是PL处理结果DMA传输到DDR内存,ARM读取数据接着处理。当有操作系统管理内存时...

2019-08-17 16:11:53 8057 2

原创 半年盘点及下半年目标

下半年,在AI的路上继续一路狂奔!

2019-06-15 08:57:49 352

原创 petalinux操作步骤

整体流程安装1)sudo dpkg-reconfigure dash 在界面中将shell改成bash2)安装依赖库:sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-devsudo apt-get install -y flex bison lib...

2019-06-09 14:37:14 2495

原创 Xilinx MPSoC调试经验二--datamovev地址非4字节对齐时的用法

Datamover的使用1)传输时如果需要支持地址非对齐,s2mm侧:地址非对齐时的命令设定assign s_axis_s2mm_cmd_tdata[22:0] = length;assign s_axis_s2mm_cmd_tdata[23] = 1; //type: 1-enable INCR 0- enable FIXED;assign s_axis_s...

2019-06-02 15:03:53 1481

原创 xilinx MPSoC的一些调试经验一(逻辑部份集成的一些小问题)

1.关于SDK下PS给PL的时钟输出ZCU在SDK下的调试需要在run Configuration中把PL powerup勾选。否则PS端不会送出PL端的Clock时钟。2. 自己写的代码集成到block design中右击模块代码,然后点击add module to block design。就可以加入到block中。如果代码模块里面例化了IP,并且从其他地方拷贝过来的...

2019-06-02 14:59:29 903

原创 利用预训练VGG16实现分类

      现实场景中,我们可能获得的带标注的样本会比较小,因此可以利用一些机构提供的预训练网络进行图片分类,这种做法可以利用同行的研究成果,并极大缩短训练时间。以下是利用VGG16进行猫狗分类的一个例子。 导入keras的一些需要的库:from keras.applications import VGG16import osimport numpy as npfrom k...

2018-12-15 21:40:49 2737

原创 神经网络算法开发学习总结--算法应用及优化

1)算法目标设定   首先要确定一个算法目标及约束条件,比如运行时间、硬件内存限制、准确度等选择算法。 学习效果一般尽量采用单个指标进行评估,对于 N 个评价指标,选择其中一个指标作为优化指标,选择剩下的 N-1 个指标作为满足指标。 比如针对分类,有些场合关注查准率,有些场合关注查全率,而有些是用F1 score来评估。这些效果跟具体应用需求相关。 另外还应该...

2018-10-28 15:29:17 839

原创 神经网络算法开发总结--网络结构开发

      看了一段时间吴恩达老师的深度学习微课程,收获较大,这阶段做个总结。算法开发包含算法框架开发、网络结构开发及改进、算法应用优化及模型训练、网络模型压缩这几个方向。今天主要总结下网络结构开发及改进方面相关的。模型开发一般包含3方面工作,新网络结构提出、现有网络功能单元增加、现有网络的局部算法优化:解决某一类问题的新的网络结构提出新的算法模型的开发一般为了解决几个问题:提升...

2018-10-21 08:53:32 929

原创 FPGA实现深度学习的优势及缺点

计算能力一般通过两个参数表征:Peak GOPs峰值性能 Real GOPs实测性能(针对特定网络)FPGA在推理过程,可以做到高的Real GOPs/Peak GOPs,而训练过程,他的结构与算法并不完全匹配。希望后面出的器件可以克服。FPGA的算力优势推理时的低延迟,特别时batch size为1时,这个在微软Brainwave Project项目中中反复提到。GPU的优...

2018-10-13 14:56:12 7643 4

原创 FPGA不适合做DNN训练的原因分析

目前FPGA厂商把FPGA定位在DNN的推理上的应用,特别是低延迟,Batch很小的应用,还有像微软的brainwave也是把FPGA定位在推理上的应用,既然FPGA推理过程有宣称的各种低功耗低延迟的好处,为什么不把他应用在训练过程中呢?从算法加速上看,FPGA如果应用在训练上至少要克服两个缺点。       第一个就是精度问题。训练与推理一个很大的区别就是需要多次迭代进行BP计算,更新W...

2018-10-04 21:35:05 1919

原创 FPGA实现神经网络加速的Hello World

       听完很多大咖的观点,对于工程师,未来十年应该有两个技术可以做,一个是AI,提升生产力,一个是区块链,厘清生产关系。个人觉得还是AI好玩些,希望可以挤进去折腾下。对于AI应用落地,其实判断标准就两个,是否可以提升生产力(当然有时不是直接的,产生的数据可能在其他地方提高效率),一个是能否降低交易成本,把实惠给老百姓。       好像有点扯远了,我们还是聊技术吧。FPGA工程师如果想...

2018-09-22 23:19:59 9784 2

原创 FPGA用于数据中心的网络加速

      没在BAT这些数据中心的大厂工作过哈,从看过的论文以及逻辑推理,推测在数据中心,FPGA可以做哪些网络加速。1. OVS的在数据中心的应用场景        一种应该主要解决服务器中VM间的通信问题,包括服务器内部VM通信以及VM与外部VM间通信,实现后可以让VM迁移时比较方便,而且VxLAN支持的标签数比VLAN大很多,可以让逻辑网络overlay在物理网络上。不过这个事情现...

2018-09-16 17:31:17 1569

原创 吴恩达机器学习练习六

 SVM支持向量机1)Gaussian kernel实现,计算两个样本的相似度,用于学习非线性边界。sim = exp(-(x1-x2)'*(x1-x2)/(2*sigma^2)); 2)找到最优的C与sigma参数   其实就是枚举,计算不同参数组合的错误率,找到最小的。先用学习的样本进行模型学习,然后用验证集计算错误率。dataset3Params.m文件  ...

2018-07-22 18:03:49 210

原创 FPGA开发技能清单

1.     需求核对阶段1)良好的沟通技能:需要与需求方核对需要的功能及性能,态度很重要,谦逊专业的沟通态度才能对需求理解无偏差,理解错误,后面就可能引起构架的修改。对外团队协作能力很大一部分体现在这里。2)行业背景知识:需要把需求翻译成FPGA的功能点以及逻辑上的处理流程(流程及需要的数据结构,用硬件的大白话就是大的pipeline流水线功能以及每个功能对应的表项及数据结构)。2.     总...

2018-07-15 10:34:00 1014

原创 吴恩达机器学习练习五

 1.     线性回归正则化的代价函数和梯度计算 predictions = X*theta;sigma=predictions-y;J= sigma'*sigma/(2*m); J=J+lambda*(theta(2:end)'*theta(2:end))/(2*m);grad=(predictions-y)'*X./m;grad(2:end)=grad(2:end)'+lambda.*the...

2018-07-01 20:35:48 277

原创 吴恩达机器学习练习四

吴恩达机器学习练习四完成练习前要搞明白样本如何组织,训练集是5000x400的矩阵,每一行表示一个样本,也就是20x20的像素值。练习中使用的是3层网络,因此参数集是theta1和theta2.练习主要完成代价函数及反向传播算法中梯度的计算(nnCostFunction.m)代码中全部采用向量计算的方式,这样可以提升计算速度需要技巧的地方:将标签转为向量col_v=1:num_labels;for...

2018-06-23 21:33:57 467

原创 modelsim仿真调用xilinx IP的一种方法

       网上有一些文章描述modelsim与vivado的联合仿真方法,一般都是在vivado的tool工具中选择编译仿真模型,然后选择器件进行编译,最后用生成的modelsim.ini去替换modelsim目录下的相同文件,但这种方法有一个很大的缺点就是modelsim版本绑定,比如vivado2017.4就需要配合modelsim10.6b的版本,否则在编译过程会报错。其实有一种更简单的...

2018-06-17 19:34:38 7684 7

原创 吴恩达机器学习练习三

练习中的一些注意事项:1)dat文件里面其实包含了变量X与y信息。而且把这个变量名字也包含在文件中的。2)多分类时,预测结果要转成与Y可以比较的,需要在每一行找到最大值的索引(代表数字),然后与y进行比较[all_theta] = oneVsAll(X, y, num_labels,lambda);由于从dat文件中分解出来的y是数字1,2,3…并不能直接用于代价函数的计算,因此在oneVsAll...

2018-06-10 17:29:55 907

原创 吴恩达机器学习练习二

机器学习练习二主要与逻辑回归相关。一. 首先时数据可视化,照着手册做就好。二. 实现激活函数逻辑回归主要用于分类,分类结果一般就是0或者1,因此与线性回归的区别就是,针对需要应用一个激活函数,让他的取值范围落在[0,1]之间Octave代码实现很简单,就是:g=1./(1+exp(-z));  %Z可以是向量、矩阵 三. 实现代价函数与梯度计算 gz=sigmoid(X*theta);% calc...

2018-06-02 21:39:46 875

原创 FPGA总体设计的硬件考虑

FPGA总体设计—硬件相关        FPGA在项目开始阶段需要考虑的设计主要有3大方面:一个是硬件做板相关的FPGA升级电路的设计以及外围IO设计;一个是与软件配合相关的软硬件接口设计;一个是FPGA内部的逻辑功能规划。本文先针对硬件设计相关进行阐述:       升级电路的设计:FPGA的好处就是产品发布后还能进行功能升级以及功能修改,但在客户那里应该没有人会愿意打开机箱进行升级,这时就要...

2018-05-27 08:01:52 3824

原创 吴恩达机器学习练习一

吴恩达机器学习练习一1.     最前面是一些octave的基本操作照着pdf文档练习就好。2.     Linear regression with onevariable从文件获取数据以及呈现在ex1中已经自动做好。个人所要做的最重要的是编写代价函数以及梯度下降算法。1)线性回归的目的就是最小化代价函数,因此首先要会根据公司计算出代价函数。 其中 由于x的每一行代表一个样本,而theta是初始...

2018-05-20 15:01:20 1518

原创 高性能DMA设计

       高性能DMA并没有一种统一的设计方法,根据不同的应用场景,大体上可以分为2种:用于传递报文的多通道DMA和用于块数据传输及运算。他们的主要区别其实是buffer descriptor的差别。        首先是用于传递报文的DMA。这种设计的典型代表是intel网卡的DMA实现方式,他的实现机制一般是这样:每个通道一般分为收和发两个方向独立的队列。队列中的报文描述符一般包含以下信息...

2018-05-12 10:48:49 2123

原创 FPGA核心开发技能

        从事FPGA工程开发及团队带领的工作差不多有13年左右的时间,其实在近1,2年才开始思考这个问题,有点后知后觉。从科学上说真理是有保质期的,因此以下的一些经验总结只是个人的一些看法。        第1个能力是做事的方法。首先是区分研究还是工程,这个其实针对做技术是通用的。如果是研究性的课题,首先设定目标就要考虑量级的进步,至少是10倍,比如FPGA用作加速,那相对CPU就需要达到...

2018-05-06 10:27:36 821

原创 如何快速学习一项新技能--opencl

走上技术管理后,其实个人很难有机会针对某项技术做深入研究,因为公司对个人的要求不一样,同时个人时间也要分配在管理、人员培养、对外交流及技术趋势跟踪上。但作为一线技术主管,如果不懂技术,不理解一种技术的内在逻辑,那他是很难分配任务并带好团队。针对opencl在FPGA上的开发,其实本质上是为了解决FPGA快速可编程的问题。虽然各种介绍文章说这种技术适合高性能计算,但计算的场景还是挺多的,所以最重要的...

2018-05-06 10:23:32 319

原创 基于FPGA的Opencl学习笔记1--hello world

以windows为例1. 首先是工具的安装,FPGA可以到官网下载opencl pro的版本。Visual studio使用2017版本。社区版应该也可以使用,不过前面走了一些弯路,以为必须要专业版。2. 由于kernel需要在命令行下编译,因此VC 环境要先进行设定:  cdC:\Program Files (x86)\Microsoft VisualStudio\2017\Profession...

2018-05-06 10:18:55 4455 2

原创 CPU与加速芯片之间的通信总线

加速芯片与CPU之间的连接一般通过DMA进行。在进行DMA描述之前,我们先了解一下CPU与加速芯片的互联总线,加速芯片与主CPU间的通信总线,一般要求低延迟、高带宽。从这个看,加速芯片最好是挂在CPU的内部高速总线上,比方说intel的QPI总线,他不但高带宽、低延迟,而且FPGA加速芯片可以做到直接共享主CPU的内存,而不必像PCIE这样,较多数据的计算时基本上要进行因此内存拷贝。更牛逼的是in...

2018-05-06 10:15:18 2695

原创 异构加速在加速什么

    目前市面上的加速芯片挺多的,比如GPU、FPGA、TPU,以及针对各种特殊应用所开发的加速芯片。自己一直想理清楚这些加速芯片到底在加速什么,一直没有确切答案。一般宽泛的说法是CPU处理效率较低的,我们就进行加速,但个人觉得应该有些更本质的东西。以下是最近个人的一些感悟。       加速其实都是针对CPU而言,而CPU中一般最消耗资源的部分可以认为是循环计算,因此加速是针对这些循环部分做加...

2018-05-06 10:14:08 3894

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除