主要内容

在Intel Arria 10 SoC上开始深度学习FPGA部署

这个示例展示了如何创建、编译和部署dlhdl。工作流对象,该对象具有一个手写字符检测系列网络对象,使用用于Intel FPGA和SoC的深度学习HDL工具箱™支持包。金宝app使用MATLAB®从目标设备检索预测结果。

先决条件

  • 英特尔Arria™10 SoC开发工具包

  • 深度学习HDL工具箱™ 英特尔FPGA和SoC支持包金宝app

  • 深度学习HDL工具箱™

  • 深度学习工具箱™

加载预先训练的SeriesNetwork

为了加载已经过国家技术标准研究所(MNIST)数据库训练的预先训练的系列网络,输入:

snet = getDigitsNetwork ();

要查看预先训练的系列网络的层,输入:

analyzeNetwork (snet)

创建目标对象

创建一个目标对象,该对象具有目标设备的自定义名称和将目标设备连接到主机的接口。接口选项为JTAG和以太网。若要使用JTAG,请安装Intel™ 夸脱™ Prime Standard Edition 18.1。设置已安装的“英特尔Quartus Prime”可执行文件的路径(如果尚未设置)。例如,要设置工具路径,请输入:

% hdlsetuptoolpath('ToolName', 'Altera Quartus II','ToolPath', 'C: Altera \18.1\ Quartus \bin64');
hTarget = dlhdl。目标(“英特尔”
hTarget = Target with properties: Vendor: 'Intel

创建工作流对象

对象的对象dlhdl。工作流类。在创建对象时,指定网络和位流名称。指定保存的预训练的MNIST神经网络snet作为网络。确保位流名称与您的目标数据类型和FPGA板匹配。在本例中,目标FPGA板是Intel Arria 10 SOC板,位流使用单一数据类型。

hW=dlhdl.Workflow(“网络”snet,“比特流”“arria10soc_单人”“目标”,hTarget)
hW =带有属性的工作流:Network: [1×1 SeriesNetwork] Bitstream: 'arria10soc_single' ProcessorConfig: [] Target: [1×1 dlhdl. hW = []目标]

编制MNIST系列网络

要编译MNIST系列网络,请运行dlhdl。工作流对象

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" "0x02800000" "4.0 MB" "FCWeightDataOffset" "0x02c00000" "4.0 MB" "EndOffset" "0x03000000" "Total: 48.0 MB"

将比特流编程到FPGA上并下载网络权重

如果需要在Intel Arria 10 SoC硬件上部署网络,请运行huawei . com的deploy功能dlhdl。工作流对象此函数使用编译函数的输出,使用编程文件对FPGA板进行编程。它还下载网络权重和偏差。deploy函数开始对FPGA设备进行编程,显示进度消息以及部署网络所需的时间。

硬件部署
###已跳过FPGA位流编程,因为相同的位流已加载到目标FPGA上。#####加载权重到FC处理器。####加载FC权重。当前时间为2020年6月28日13:45:47

运行预测示例映像

要加载示例图像,请执行dlhdl。工作流对象,然后显示FPGA结果,输入:

inputImg = imread (“five_28x28.pgm”); imshow(inputImg);

在配置文件“打开”的情况下运行预测,以查看延迟和吞吐量结果。

[prediction, speed] = hW.predict(single(inputImg),“配置文件”“上”);
###已完成输入激活的编写运行单输入激活。深度学习处理器探查器性能结果LastLayerLatency(周期)LastLayerLatency(秒)FRAMESUM总延迟帧数/秒-------------------------网络49243 0.00033 1 49807 3011.6转换模块25983 0.00017转换模块16813 0.00005最大池容量14705 0.00003转换模块25205 0.00003最大池容量3839 0.00003转换模块35481 0.00004 fc转换模块23260 0.00016*DL处理器的时钟频率为:150MHz
[val, idx] = max(预测);流('预测结果为%d\n',idx-1);
预测结果为5

              

相关话题