附加题
题目1:HLS优化(+1分)
使用HLS Directives对RNN IP核进行优化,可使用循环展开、数组划分、流水线等优化策略,具体要求如下:
(1)使用HLS指导语句优化RNN IP核性能,对比分析优化前后的综合报告,写入实验报告;
(2)至少使用循环展开、数组划分、流水线、数据流、内联等至少2种优化策略;
(3)生成Overlay并上板测试,对比分析优化前后的性能,计算平均加速比,写入实验报告;
(4)优化后的RNN前向推导性能要明显比必做题高;
(5)提交作业时,需把本题的Overlay(mnist_lstm.tcl和mnist_lstm.bit)、源程序文件和运
行结果(RNN IP核的源文件、优化前后的资源使用截图、优化前后的运行时间截图)也一并
提交。
题目2:DMA传输优化(+2.5分)
在必做题所设计的RNN加速器中,每次DMA仅传输一张图片到IP核,或仅从IP核读取一个维度为10的FP32向量,如图3-1所示。前者的单次DMA传输数据批量为28*28*8bit = 784B,而后者则仅仅只有40B。


已知在DMA的实际带宽达到饱和之前,单次DMA传输的数据批量越大,PS和PL之间进行数据通信能够获得的带宽就越大,加速器整体性能就越高。因此,如果可以将待预测的所有手写数字图片合并成一个大批量数据,一次性传输到RNN IP核进行前向推导,并一次性返回所有图片的预测结果,那么DMA的带宽将得到更充分的利用,如图3-2所示。

基于以上分析,本题目要求:
(1)改写RNN硬件IP核的代码,使其支持多图片连续预测;
(2)生成比特流,导出Overlay并上板测试;
(3)修改mnist_lstm.ipynb,增加send_buf数组以存放多张待测试的图片;增加recv_buf数组
以存放IP核返回的多张图片的预测结果;
(4)计算每张测试图片的平均前向推导时间,并计算DMA传输优化后,RNN加速器相对软件
推导的加速比;
(5)对比分析DMA传输优化前后的加速器推导性能差别,并将DMA传输优化前后的运行结果
和运行时间截图,在课程报告中进行对比分析;
(6)提交作业时,需把本题的Overlay(mnist_lstm.tcl和mnist_lstm.bit)、源程序文件和运
行结果(RNN IP核的源文件、优化前后的运行结果和运行时间截图、mnist_lstm.ipynb)也一
并提交。
参考结果
优化效果参考:在图3-2中,当时,加速比从1.4提高到10。
题目3:RNN量化(+3.5分)
在必做题中,我们利用PyTorch训练RNN网络,并将训练好的网络参数导出后保存在HLS工程的weight.h头文件中,如图3-3所示。

由图3-1可知,RNN的网络参数是以FP32格式存储的,因而最终生成的RNN加速器消耗了PYNQ-Z2的大量Block RAM存储资源,如图3-4所示。


其中,HLS综合报告和Vivado综合后的资源使用情况图表都是基于代码分析得出的估计值,而Vivado实现后的资源使用图表则更接近实际值。
基于以上分析,本题目要求:
(1)绘制RNN网络参数的分布图,观察其对称性;
(2)根据RNN网络参数的分布情况,选择合适的量化策略,对RNN的网络参数进行量化;
(3)修改RNN IP核的HLS代码,使得该IP核支持参数量化后的定点运算;
(4)添加量化运算后的反量化代码;
(5)为修改后的代码添加TestBench,以测试量化网络的正确性;
(6)生成Overlay并上板测试,观察和对比量化前后的存储资源使用量、预测准确率和前向推
导性能差别,并将量化前后的资源使用量和运行结果截图,在课程报告中进行对比分析;
(7)提交作业时,需把本题的Overlay(mnist_lstm.tcl和mnist_lstm.bit)、源程序文件和运
行结果(RNN IP核的源文件、HLS仿真源文件、量化前后的资源使用截图、量化前后的运行
时间截图)也一并提交。