天天看點

基于FPGA的卷積網絡加速設計

       答辯完了,放上來畢設的最後一部分内容,CNN的硬體加速。大多數論文采用的FPGA加速大多基于HLS或是OpenCL,用進階語言編寫的。我沒有接觸過,不知道轉化為底層HDL效率如何。大學學了verilog,是以還是用的verilog HDL硬體語言設計的。

       為了權衡系統資源及計算速度,制定了以下并行政策,如圖所示。首先,第一層卷積單獨采用移位寄存器結構加速(可以參考相關論文,使用大量乘法器,以計算資源換取速度,實作每個周期輸出一個卷積結果),其它層卷積采用純流水線的結構(即每個通道為一個乘法器+一個加法器)。由于帶寬限制,第二層卷積采用通道分組政策,排隊輸出,最後完成通道合并。針對兩款FPGA設定不同的組數。這種政策能實作組間的資源複用,減少資源消耗。

基于FPGA的卷積網絡加速設計

       FPGA加速還有很多優化的空間。比如流水線以及資源複用這塊,可以發揮FPGA的優勢;量化這塊,可以采用較小位數,犧牲部分精度而換取資源和速度;裁剪這塊,結合全局均值池化、1*1卷積、剪枝等參數裁剪方法,減少參數移植;卷積結構這塊,可以考慮像caffe那種使用toplitz矩陣形式的卷積計算,同樣是資源換取速度的方法等等。

繼續閱讀