开始使用深度学习FPGA部署在英特尔Arria 10 SoC
这个例子显示了如何创建、编译和部署dlhdl.Workflow
对象有一个手写字符检测系列网络对象通过使用深度学习HDL工具箱为英特尔FPGA和SoC™支持包。金宝app使用MATLAB®来检索目标设备的预测结果。
先决条件
英特尔Arria™10 SoC开发工具包
深度学习HDL工具箱为英特尔FPGA和SoC™支持包金宝app
深度学习HDL工具箱™
深度学习工具箱™
加载Pretrained SeriesNetwork
加载pretrained系列网络,已经在修改后的国家标准的技术研究所(MNIST)数据库,输入:
snet = getDigitsNetwork ();
查看pretrained系列的层网络,输入:
analyzeNetwork (snet)
创建目标对象
创建一个目标对象,有一个自定义名称为你的目标设备和一个接口来连接你的目标主机设备。JTAG接口选项和以太网。利用JTAG、安装英特尔™第四的™'标准版18.1。设置的路径安装英特尔第四的'可执行如果尚未设置。例如,设置路径,输入:
% hdlsetuptoolpath (“ToolName”、“阿尔特拉第四的二世”、“路径”,“C: \ \ 18.1 \负责第四的\ bin64”);
hTarget = dlhdl.Target (“英特尔”)
hTarget =目标属性:供应商:“英特尔”界面:JTAG
创建工作流对象
创建一个对象dlhdl.Workflow
类。当您创建对象,指定网络和比特流的名字。snet指定保存pretrained MNIST神经网络,网络。确保比特流名称匹配的数据类型和FPGA板你的目标。在这个例子中,目标FPGA板是英特尔Arria 10 SOC板和比特流使用一个数据类型。
hW = dlhdl.Workflow (“网络”snet,“比特流”,“arria10soc_single”,“目标”hTarget)
hW =工作流属性:网络:[1×1 SeriesNetwork]比特流:“arria10soc_single”ProcessorConfig:[]目标:[1×1 dlhdl.Target]
编译MNIST系列网络
编译MNIST系列网络运行的编译功能dlhdl.Workflow
对象。
dn = hW.compile;
# # #系列优化网络:融合“nnet.cnn.layer.BatchNormalizationLayer”到“nnet.cnn.layer.Convolution2DLayer”offset_name offset_address allocated_space ___________ _______________________ * * *“InputDataOffset”“0 x00000000”“4.0 MB”“OutputResultOffset”“0 x00400000”“4.0 MB”“SystemBufferOffset”“0 x00800000”“28.0 MB”“InstructionDataOffset”“0 x02400000”“4.0 MB”“ConvWeightDataOffset”“0 x02800000”“4.0 MB”“FCWeightDataOffset”“0 x02c00000”“4.0 MB”“EndOffset”“0 x03000000”“总:48.0 MB”
程序比特流到FPGA和下载网络权重
部署网络在英特尔Arria 10 SoC硬件,运行部署的功能dlhdl.Workflow
对象。这个函数使用编译函数程序的输出FPGA板通过编程文件。它也可以下载网络权重和偏见。部署功能开始编程的FPGA器件,显示进度信息,所花费的时间部署网络。
hW.deploy
# # # FPGA比特流编程已经跳过了相同的比特流已经加载目标FPGA。# # #装载重量FC的处理器。# # # FC重量加载。当前时间是2020年6月28日13:45:47
运行预测例如形象
加载图片的例子中,执行的预测功能dlhdl.Workflow
对象,然后显示FPGA的结果,输入:
inputImg = imread (“five_28x28.pgm”);imshow (inputImg);
运行预测与剖面上的看到的延迟和吞吐量的结果。
(预测、速度)= hW.predict(单(inputImg),“配置文件”,“上”);
# # #写完输入激活。# # #运行单个输入激活。深度学习处理器分析器性能结果LastLayerLatency(周期)LastLayerLatency总延迟(秒)FramesNum帧/ s - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -网络49243 0.00033 6813 0.00005 49807 3011.6 conv_module 25983 0.00017 conv_1 maxpool_1 0.00003 4705 0.00003 conv_2 5205 0.00003 3839年maxpool_2 conv_3 5481 0.00016 0.00016 0.00004 fc_module 23260 fc 23260 * DL处理器的时钟频率是:150 mhz
[val, idx] = max(预测);流(“预测结果% d \ n”,idx-1);
预测结果是5