主要内容

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

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

先决条件

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

  • 用于Intel FPGA和SoC的深度学习HDL工具箱金宝app™支持包

  • 深度学习HDL工具箱™

  • 深度学习工具箱™

加载预先训练的SeriesNetwork

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

snet = getDigitsNetwork ();

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

analyzeNetwork (snet)

创建目标对象

创建一个目标对象,该对象具有目标设备的自定义名称和连接目标设备到主机的接口。接口选项有JTAG和Ethernet。要使用JTAG,请安装Intel™Quartus™Prime Standard Edition 18.1。如果尚未设置已安装的Intel 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。工作流(“网络”snet,“比特流”“arria10soc_single”“目标”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上编程Bitstream并下载网络权重

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

hW.deploy
### 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(cycles) LastLayerLatency(seconds) FramesNum总时延Frames/s ------------- ------------- --------- --------- --------- Network 49243 0.00033 1 49807 3011.6 conv_module 25983 0.00017 conv_1 6813 0.00005 maxpool_1 4705 0.00003 conv_2 5205 0.00003 maxpool_2 3839 0.00003 conv_3 .日志含义5481 0.00004 fc_module 23260 0.00016 fc 23260 0.00016 * The clock frequency of the DL processor is: 150MHz
[val, idx] = max(预测);流('预测结果为%d\n', idx-1);
预测结果为5

              

相关的话题