主要内容

从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标准版20.1。如果尚未设置,请设置已安装的Intel Quartus Prime可执行文件的路径。例如,要设置工具路径,输入:

% hdlsetuptoolpath('ToolName', 'Altera Quartus II','ToolPath', 'C:\ Altera \20.1\ Quartus \bin64');
hTarget = dlhdl。目标(“英特尔”
hTarget =带有属性的目标:供应商:'Intel'接口:JTAG

创建工作流对象

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

hW = dlhdl。工作流(“网络”snet,“比特流”“arria10soc_single”“目标”hTarget)
hW =具有属性的工作流:网络:[1×1 SeriesNetwork] Bitstream: 'arria10soc_single' ProcessorConfig:[]目标:[1×1 dlhdl。目标]

编译MNIST系列网络

命令的compile函数编译MNIST系列网络dlhdl。工作流对象。

dn = hW.compile;
优化串联网络:将“nnet.cnn.layer.BatchNormalizationLayer”融合为“nnet.cnn.layer.Convolution2DLayer”offset_name offset_address allocated_space _______________________ ______________ ________________“InputDataOffset”“0x00000000”“4.0 MB”“OutputResultOffset”“0x00400000”“4.0 MB”“SystemBufferOffset”“0x00800000”“28.0 MB”“InstructionDataOffset”“0x02400000”“4.0 MB”“ConvWeightDataOffset”“0x02800000”“4.0 MB”“FCWeightDataOffset”“0x02c00000”“4.0 MB”“EndOffset”“0x03000000”“Total: 48.0 MB”

编程位流到FPGA和下载网络权值

在Intel Arria 10 SoC硬件上部署网络,请运行命令deploy函数dlhdl。工作流对象。该函数利用编译函数的输出,通过编程文件对FPGA板进行编程。它还下载网络权重和偏差。部署功能开始对FPGA设备进行编程,并显示进度消息和部署网络所需的时间。

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

运行预测示例图像

方法的predict函数可加载示例图像dlhdl。工作流对象,然后显示FPGA结果,输入:

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

使用概要文件“on”运行预测,以查看延迟和吞吐量结果。

[预测,速度]= hW.predict(single(inputImg),“配置文件”“上”);
###已完成输入激活。###运行单输入激活。Deep Learning Processor Profiler性能结果LastLayerLatency(cycles) LastLayerLatency(seconds) FramesNum Total Latency 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 * DL处理器的时钟频率为:150MHz
[val, idx] = max(预测);流(“预测结果是%d\n”, idx-1);
预测结果为5

               

相关的话题