實例!詳解FPGA如何實現FP16格式點積級聯運算

2021-01-08 電子產品世界

編者按:通過使用Achronix Speedster7t FPGA中的機器學習加速器MLP72,開發人員可以輕鬆選擇浮點/定點格式和多種位寬,或快速應用塊浮點,並通過內部級聯可以達到理想性能。

神經網絡架構中的核心之一就是卷積層,卷積的最基本操作就是點積。向量乘法的結果是向量的每個元素的總和相乘在一起,通常稱之為點積。此向量乘法如下所示:

本文引用地址:http://www.eepw.com.cn/article/202008/417088.htm

圖1 點積操作

該總和S由每個矢量元素的總和相乘而成,因此S=a1b1+a2b2+a3b3+···anbn

本文講述的是使用FP16格式的點積運算實例,展示了MLP72支持的數字類型和乘數的範圍。

此設計實現了同時處理8對FP16輸入的點積。該設計包含四個MLP72,使用MLP內部的級聯路徑連接。每個MLP72將兩個並行乘法的結果相加(即aibi+ai+ai+1bi+1),每個乘法都是i_a輸入乘以i_b輸入(均為FP16格式)的結果。來自每個MLP72的總和沿著MLP72的列級聯到上面的下一個MLP72塊。在最後一個MLP72中,在每個周期上,計算八個並行FP16乘法的總和。

最終結果是多個輸入周期內的累加總和,其中累加由i_first和i_last輸入控制。 i_first輸入信號指示累加和歸零的第一組輸入。 i_last信號指示要累加和加到累加的最後一組輸入。最終的i_last值可在之後的六個周期使用,並使用i_last o_valid進行限定。兩次運算之間可以無空拍。

●   配置說明

表 1 FP16點積配置表

●   埠說明

表2 FP16點積埠說明表

●   時序圖

圖2 FP16點積時序圖

其中,

●   進位鏈

首先請看下圖,MLP之間的進位鏈結構,這是MLP內部的專用走線,可以保證級聯的高效執行。

圖3 MLP進位鏈

●   乘法階段

下圖是MLP中浮點乘法功能階段,其中寄存器代表一級可選延遲。

圖4 MLP乘法功能階段框圖

MLP72浮點乘法級包括兩個24位全浮點乘法器和一個24位全浮點加法器。兩個乘法器執行A×B和C×D的並行計算。加法器將兩個結果相加得到A×B + C×D。

乘法階段有兩個輸出。下半部分輸出可以在A×B或(A×B + C×D)之間選擇。上半部分輸出始終為C×D。

乘法器和加法器使用的數字格式由字節選擇參數以及和參數設置的格式確定。

浮點輸出具有與整數輸出級相同的路徑和結構。MLP72可以配置為在特定階段選擇整數或等效浮點輸入。輸出支持兩個24位全浮點加法器,可以對其進行加法或累加配置。 進一步可以加載加法器(開始累加),可以將其設置為減法,並支持可選的捨入模式。

最終輸出階段支持將浮點輸出格式化為MLP72支持的三種浮點格式中的任何一種。 此功能使MLP72可以外部支持大小一致的浮點輸入和輸出(例如fp16或bfloat16),而在內部以fp24執行所有計算。

圖5 MLP浮點輸出階段框圖

需要強調的是本設計輸入和輸出都是FP16格式,中間計算過程,即進位鏈上的fwdo_out和fwdi_dout 都是FP24格式。具體邏輯框圖如下所示:

圖 6 FP16點積邏輯框圖

MLP內部數據流示意圖:

圖7 FP16點積在MLP內部數據流圖

最終ACE的時序結果如下:


相關焦點

  • 用FPGA實現FFT算法
    快速傅立葉變換(Fast Fourier Transformation,簡稱FFT)使DFT運算效率提高1~2個數量級。其原因是當N較大時,對DFT進行了基4和基2分解運算。FFT算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的FFT仍然是很困難。
  • 如何在FPGA中實現狀態機
    FPGA常常用於執行基於序列和控制的行動,比如實現一個簡單的通信協議。對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀 態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。
  • 用FPGA實現FFT算法(圖)
    快速傅立葉變換(fast fourier transformation,簡稱fft)使dft運算效率提高1~2個數量級。其原因是當n較大時,對dft進行了基4和基2分解運算。fft算法除了必需的數據存儲器ram和旋轉因子rom外,仍需較複雜的運算和控制電路單元,即使現在,實現長點數的fft仍然是很困難。
  • 基於FPGA的高速流水線浮點乘法器設計與實現
    同時由於基於IEEE754 標準的浮點運算具 有動態範圍大,可實現高精度,運算規律較定點運算更為簡捷等特點,浮點運算單元的設計 研究已獲得廣泛的重視。  2 運算規則及系統結構  2.1 浮點數的表示規則  本設計採用單精度IEEE754 格式【2】。
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    摘要 基於IEEE浮點表示格式及FFT算法,提出一種基2FFT的FPGA方法,完成了基於FPGA高精度浮點運算器的FFT的設計。利用VHDL語言描述了蝶形運算過程及地址產生單元,其仿真波形基本能正確的表示輸出結果。
  • 基於FPGA的複數浮點協方差矩陣實現
    採用FPGA(Field Programmable Gate Array)可以提高該類數位訊號處理運算的實時性,是算法工程化的重要環節。但是FPGA不適宜對浮點數的處理,對複雜的不規則計算開發起來也比較困難。故目前國內外協方差運算的FPGA實現都是採用定點運算方式。 在所有運算都是定點運算的情況下,每次乘法之後數據位寬都要擴大一倍。
  • 如何在 FPGA 上實現雙線性插值的計算?
    作者 | 殷慶瑜責編 | 胡巍巍本文主要討論了如何在FPGA上實現雙線性插值的計算。Interp和Resize是Yolo_v2,Yolo_v3和Faster R-CNN等目標檢測網絡的關鍵層。主要的作用是使得圖片的放大和縮小過程變得更為平滑。What?什麼是雙線性插值?
  • 基於複數浮點運算的協方差矩陣的FPGA實現
    採用FPGA(Field Programmable Gate Array)可以提高該類數位訊號處理運算的實時性,是算法工程化的重要環節。但是FPGA不適宜對浮點數的處理,對複雜的不規則計算開發起來也比較困難。故目前國內外協方差運算的FPGA實現都是採用定點運算方式。
  • 基於FPGA IP核的FFT實現
    目前現有的文獻大多致力於研究利用FFT算法做有關信號處理、參數估計、F+FT蝶形運算單元與地址單元設計、不同算法的FFT實現以及FFT模型優化等方面。而FPGA廠商Altera公司和Xilinx公司都研製了FFT IP核,性能非常優越。在FFT的硬體實現中,需要考慮的不僅僅是算法運算量,更重要的是算法的複雜性、規整性和模塊化,而有關利用FFT IP核實現FFT算法卻涉及不多。
  • 基於FPGA的結構光圖像中心線提取
    編者按:在線結構光視覺三維測量系統中,為了實現對結構光圖像線條紋中心的實時高精度提取,本文採用了極值法、閾值法和灰度重心法相結合的中心線提取方法。利用現場可編程門陣列器件(FPGA)的流水線技術以及並行技術的硬體設計來完成運算,保證了光條紋中心點的實時準確提取。
  • excel數學運算函數:表格中積商和餘數的處理方法
    想起以前還在讀書那會兒,總是被數學中的各種乘方、餘數、積、商折騰得頭痛,而這些令我們為難的問題,放在excel中,卻不值一提。今天我們就來學習一下excel中關於「積」和「商」的數學函數,趕緊來看看吧!對於「積」和「商」我們都不陌生,好多地方都會用到它,在EXCEL中除了可以用「*」、「/」等運算符來得到數據的「積」和「商」外,函數同樣也可以。
  • 聲納圖像動態範圍擴展與FPGA實現
    基於課題組研製的多波束成像聲納原理樣機的研製,分析了數據動態範圍壓縮導致圖像細節丟失的原因及其對成像質量的影響,採用JPL快速平方根近似算法改善了開方運算FPGA實現過程的資源佔用和系統延時。最後,對改進設計方案進行了實驗驗證,通過多波束成像聲納系統的消聲水池實驗證明了本文動態範圍擴展方法的有效性和可行性,系統成像質量改善明顯,達到優化設計的預期目標。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    2 系統硬體總體設計 系統的硬體功能是實現語音指令的採集和步進電機的驅動控制,為系統軟體提供開發和調試平臺。如圖1所示。 3.3 語音識別程序模塊的設計 為了實現機器人對非特定人語音指令的識別,系統採用非特定人的孤立詞識別系統。非特定人的語音識別是指語音模型由不同年齡、不同性別、不同口音的人進行訓練,在識別時不需要訓練就可以識別說話人的語音[2]。系統分為預加重和加窗,短點檢測,特徵提取,與語音庫的模式匹配和訓練幾個部分。
  • 基於FPGA+MATLAB的串行多階FIR濾波器設計
    為說明使用FPGA實現FIR的靈活性,文中列舉了一個多階串行FIR濾波器實例,並給出主要的原始碼和相關模塊的時序和功能說明,最後使用Matlab和Quartusii聯合仿真驗證了FPGA硬濾波器工程的正確性。
  • 一種近距雷達目標檢測信號處理的FPGA實現
    摘   要: 本文在闡述某種近距雷達目標檢測原理和FPGA技術發展狀況的基礎上,著重討論用FPGA設計高性能的數位訊號處理系統的方法,並給出一個應用實例
  • 究竟運算放大器帶寬如何選擇
    打開APP 究竟運算放大器帶寬如何選擇 佚名 發表於 2018-07-12 09:50:18 圖 1:反饋電容器 CF 可補償光電二極體接點電容及運算放大器輸入電容
  • 如何使用並聯電容來實現運算放大器的頻率補償
    打開APP 如何使用並聯電容來實現運算放大器的頻率補償 EEtoday 發表於 2020-11-19 17:56:58 在最近關於運算放大器頻率補償的文章中,我們討論了頻率補償的概念是什麼以及如何評估示例電路的穩定性。
  • 一種以三個晶片級聯而成的窄脈衝小信號運算放大電路
    打開APP 一種以三個晶片級聯而成的窄脈衝小信號運算放大電路 佚名 發表於 2017-11-30 15:40:54 摘要:文中設計並實現了一個窄脈衝小信號運放電路。
  • 基於FPGA的24點離散傅立葉變換結構設計
    摘要 基於Good—Thomas映射算法和ISE快速傅立葉變換IP核,設計了一種易於FPGA實現的24點離散傅立葉變換,所設計的24點DFT模塊採用流水線結構,主要由3個8點FFT模塊和1個3點DFT模塊級聯而成,並且兩級運算之間不需要旋轉因子,整個DFT
  • 基於FPGA的實時中值濾波器硬體實現
    在許多實際應用場合,如高清視頻監控、X光圖像的降噪等,需要快速且實時地進行中值濾波,軟體實現達不到實時處理的要求,因此選用硬體實現。 在硬體實現上,文獻[1]、[2]等採用行延遲的方法形成鄰域數據,以實現3×3的中值濾波。文獻[7]為了提高紅外成像跟蹤器設計了大窗口的中值濾波器。