Selaa lähdekoodia

init FPGA-report

邓心一 7 vuotta sitten
commit
78d176d10c
5 muutettua tiedostoa jossa 9 lisäystä ja 0 poistoa
  1. BIN
      hls.vsdx
  2. 9 0
      report.txt
  3. BIN
      sdk.vsdx
  4. BIN
      test.vsdx
  5. BIN
      报告.docx

BIN
hls.vsdx


+ 9 - 0
report.txt

@@ -0,0 +1,9 @@
+# 第四章
+
+## HLS设计
+
+HLS支持OpenCL1.0标准,可以用其将OpenCL C实现的kernel函数综合为VHDL语言描述的IP核。FNN网络即实现于一个OpenCL的核函数中,利用AXI总线与PS端进行数据交换。OpenCL的并发执行采用的是层级模型,当需要执行内核时,首先要指定三个维度上工作组(work-group)的数量,然后每个工作组又在三个维度上划分为不同的工作项(work-item)。一个工作项就是OpenCL并发执行任务的最小粒度。由于Zynq7000实际不支持OpenCL host端的编程,只是利用了HLS将OpenCL C写成的kernel综合出的IP核,所以实际的程序中,无法为工作项或工作组灵活地分配内核,实际上所有的工作项执行的是同一个内核。
+为了利用FPGA并行计算的优势,综合资源消耗和网络结构的考虑,将一个工作组分为128*128*1的工作项,最多可以并行执行16384个计算任务。核函数的网络参数、中间变量、输入输出等变量都是全局变量,可以被每一个工作项访问,IP核执行时,中间变量、输入输出的内存全部由PS端分配,利用AXI总线传递数据,网络参数保存在PS端程序中,输入数据则由PS端从SD卡读取后传递给PL端处理。
+FNN网络的计算主要有两种:矩阵的相乘、每层网络输出向量的激活函数处理。由于矩阵相乘天然的并行性,可以利用网络的特点将其拆分为并行的计算。
+首先是乘法的并行化。矩阵相乘可以分解为对应行列向量相乘,其中每一次乘法都可以并行执行。因此,每层网络中行列向量的乘法计算均平均分配到各个工作项上进行。
+其次是加法的并行化。

BIN
sdk.vsdx


BIN
test.vsdx


BIN
报告.docx