|
@@ -6,4 +6,4 @@ HLS支持OpenCL1.0标准,可以用其将OpenCL C实现的kernel函数综合为
|
|
|
为了利用FPGA并行计算的优势,综合资源消耗和网络结构的考虑,将一个工作组分为128*128*1的工作项,最多可以并行执行16384个计算任务。核函数的网络参数、中间变量、输入输出等变量都是全局变量,可以被每一个工作项访问,IP核执行时,中间变量、输入输出的内存全部由PS端分配,利用AXI总线传递数据,网络参数保存在PS端程序中,输入数据则由PS端从SD卡读取后传递给PL端处理。
|
|
|
FNN网络的计算主要有两种:矩阵的相乘、每层网络输出向量的激活函数处理。由于矩阵相乘天然的并行性,可以利用网络的特点将其拆分为并行的计算。
|
|
|
首先是乘法的并行化。矩阵相乘可以分解为对应行列向量相乘,其中每一次乘法都可以并行执行。因此,每层网络中行列向量的乘法计算均平均分配到各个工作项上进行。
|
|
|
-其次是加法的并行化。
|
|
|
+其次是加法的并行化。向量乘法的结果保存在16384维(第一层)或128维的向量中。为了将加法并行执行,将乘法的输出,
|