浮點矩陣相乘IP核並行改進的設計與實現

2020-12-15 電子產品世界

嵌入式計算作為新一代計算系統的高效運行方式,應用於多個高性能領域,如陣列信號處理、核武器模擬、計算流體動力學等。在這些科學計算中,需要大量的浮點矩陣運算。而目前已實現的浮點矩陣運算是直接使用VHDL語言編寫的浮點矩陣相乘處理單元[1],其關鍵技術是乘累加單元的設計,這樣設計的硬體,其性能依賴於設計者的編程水平。此外,FPGA廠商也推出了一定規模的浮點矩陣運算IP核[2],雖然此IP核應用了本廠家的器件,並經過專業調試和硬體實測,性能穩定且優於手寫代碼,但仍可對其進行改進,以進一步提高運算速度。

1 Altera浮點矩陣相乘IP核原理

Altera公司推出的浮點矩陣相乘IP核ALTFP_MATRIX_MULT,是在Quartus軟體9.1版本以上的環境中使用,能夠進行一定規模的浮點矩陣相乘運算,包含A、B矩陣數據輸入,數據浮點乘加,數據緩存及相加輸出四大部分。其中最能體現浮點計算性能的是浮點乘加部分,而周圍的控制電路及輸出則影響到系統的最高時鐘頻率,間接地影響系統整體性能。

整個矩陣相乘電路原理是將輸入的單路數據(A、B矩陣共用數據線),通過控制器產生A、B矩陣地址信號,控制著A矩陣數據輸出和B矩陣數據輸出,並將數據並行分段輸出到浮點乘加模塊進行乘加運算,之後串行輸出到一個緩存器模塊中,再以並行方式輸出到浮點相加模塊,最後獲得計算結果。從其原理可以看出,在數據輸入輸出方面仍有許多可改進的地方。

2 IP核存在的缺陷及改進

2.1 存在缺陷

(1)輸入數據帶寬的不均衡性。在矩陣A、B的數據輸入時,Altera的IP核將A矩陣數據存於M144K的Block RAM中,而將B矩陣數據存於M9K的Block RAM中,導致IP核中A矩陣數據的帶寬小於B矩陣數據的帶寬,並需要一定數量的寄存器組使A矩陣數據帶寬能夠匹配於B矩陣數據帶寬。由此可見,A、B矩陣數據的存儲受到器件限制和存儲約束,同時由於在浮點乘加模塊的輸入端(A、B矩陣數據)帶寬不同,造成A矩陣數據的輸入需要額外的處理時間。

(2)加載數據的不連貫性。在矩陣數據加載時,IP核通過將數據分段成等分的幾部分,用於向量相乘。由於矩陣A存儲帶寬窄需要4步寄存(由Blocks決定),在第3個周期時才加載數據B用於計算,送到一個FIFO中存儲;在第6個時鐘周期時加載矩陣A分段的第二部分進行各自的第二部分計算,最後當計算到第15個周期時,才可通過浮點相加,計算出矩陣C的第一個值,之後計算出矩陣C的其他值C11。從上述結構可見,在分段相乘之後,採用先對一個FIFO進行存儲,存滿後再對下一個數據FIFO進行存儲,造成時間上浪費過多。

2.2 設計改進

鑑於上述缺陷,在輸入A、B矩陣的存儲方式上,進行串行輸入到並行輸入的改進,使得兩個矩陣能同步輸入到浮點乘加模塊。在數據加載方式上,將A矩陣用3個周期加載完畢,再處理相乘運算;將分段相乘結果進行直接存儲相加,獲得C矩陣的第一個值,縮減運算時間。設計的改進框圖如圖1所示。

浮點矩陣相乘IP核並行改進的設計與實現.pdf

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

相關焦點

  • 基於複數浮點運算的協方差矩陣的FPGA實現
    本文以空間譜估計作為研究背景,研究了複數據運算和浮點運算的特點,提出了一種適用於任何陣列流型、任意陣元的基於複數浮點運算的協方差矩陣的FPGA實現方案。矩陣運算所需要的同步時鐘需要設計一個類似於單穩態觸發器的模塊。當檢測到empty=『0』時,就觸發一個含有121個clk(對於串行方案而言)時鐘信號周期長度的高電平。該高電平與主時鐘相與便可以得到運算的同步時鐘。  1.2 數據共軛轉換  由於測向陣列的輸出矢量X(t)是一個復矢量,對其求協方差矩陣需用陣列輸出列矢量X(t)與其共軛轉置矢量XH(n)對應相乘。
  • 矩陣相乘優化算法實現講解
    矩陣相乘什麼是矩陣?
  • 參數化可配置IP核浮點運算器的設計與實現
    採用動態參數設計的IP核,在設計時已經將所有的功能模塊包含在電路中,通過參數寄存器來實時選擇IP核的功能,因此,電路設計功能越多、參數越複雜,其晶片面積的佔用和功耗也越大。而靜態參數屬於「編譯時配置」的參數[4],它在流片之前就已經將IP核的參數確定好,因而在實現過程中不會產生冗餘電路,減小了設計成本。
  • 基於FPGA的高速流水線浮點乘法器設計與實現
    同時由於基於IEEE754 標準的浮點運算具 有動態範圍大,可實現高精度,運算規律較定點運算更為簡捷等特點,浮點運算單元的設計 研究已獲得廣泛的重視。本文介紹了 32 位浮點乘法器的設計,採用了基4 布思算法,改進的4:2 壓縮器及布思 編碼算法,並結合FPGA自身特點,使用流水線設計技術,在實現高速浮點乘法的同時,也 使是系統具有了高穩定性、規則的結構、易於FPGA 實現及ASIC 的HardCopy 等特點。
  • 一種新思想去解決大矩陣相乘
    目錄一階副本:矩陣是什麼?二級副本:矩陣相乘又會是什麼?三級副本:矩陣相乘在電商數據挖掘中的適用業務場景?四級副本:大數據環境下,矩陣相乘計算最點睛之筆在何處?中級副本:電商平臺,常規數據量下(千萬用戶級)的計算場景?高級副本:大規模電商平臺,超大矩陣相乘(億級別以上)的計算場景?
  • 定點DSP C55X實現浮點相關運算
    其中,定點型DSP可以實現整數、小數和特定的指數運算,它具有運算速度快、佔用資源少、成本低等特點;靈活地使用定點型DSP進行浮點運算能夠提高運算的效率。目前對定點DSP結構支持下的浮點需求也在不斷增長,主要原因是:實現算法的代碼往往是採用C/C++編寫,如果其中有標準型的浮點數據處理,又必須採用定點DSP器件,那麼就需要將浮點算法轉換成定點格式進行運算。
  • 線性調頻信號基於FPGA IP核的脈衝壓縮設計
    摘要:為實現線性調頻信號的數字脈衝壓縮,設計一個FPGA硬體平臺,並著重提出一種基於FPGA IP核的脈衝壓縮設計方法。針對脈衝壓縮進行了理論分析和Matlab仿真,設計完成後對系統軟、硬體進行了全面測試,並根據實測數據對脈衝壓縮結果進行了分析。結果表明,該系統可實現1 024點的脈衝壓縮功能,主副瓣比、主瓣寬度等指標與理論仿真結果一致。該方法的參數設置靈活,可以簡化軟體設計,縮短研發周期。
  • 單精度浮點加法器的FPGA實現
    摘 要:在FPGA上實現單精度浮點加法器的設計,通過分析實數的IEEE 754表示形式和IEEE 754單精度>浮點的存儲格式,設計出一種適合在FPGA上實現單精度浮點加法運算的算法處理流程,依據此算法處理流程劃分的各個處理模塊便於流水設計的實現。
  • Python學習第116課——numpy.dot和矩陣相乘的數學運算
    對於二維以上的數組的點乘,就會用到矩陣相乘。對於矩陣相乘,我們直接推導最一般最基本的情況,就是ndarray(我們可以把它理解為n維的數組)和mdarray(我們可以把它理解為m維的數組)這兩個數組進行相乘。所以我們必須要接觸matrix(矩陣)的一些概念,我們可以把matrix看做是一種非常有用的數據儲存的結構。
  • 機器學習數學知識——矩陣加減運算及Python實現
    有下面兩個矩陣A和B,試求A+B和A-B矩陣A和矩陣B相加減的規則是同行同列的元素進行加減操作,計算結果作為結果矩陣的同行同列的元素。標量與矩陣相乘,結果矩陣與原矩陣的行列數相同,其元素的值是原矩陣中每個對應元素與標量相乘的數值。
  • FPGA中的浮點四則運算
    在本文中,運用在前一節中描述的自定義浮點格式FPGA中數的表示方法(下),完成浮點四則運算的實現過程1.自定義浮點格式加(減)法運算基於FPGA 實現的浮點加法運算包括了一系列對尾數和指數部分的操作:移位、交換、格式化、捨入和格式化等。如下圖所示,自定義浮點流水加法器實現結構主要分為兩部分:基本加法器部分和格式化操作部分。
  • 如何實現高速卷積?深度學習庫使用了這些「黑魔法」
    比如矩陣相乘。矩陣相乘(又稱matmul,或者Generalized Matrix Multiplication,GEMM)是深度學習的核心。全連接層、RNN等中都有它的身影,它還可用於實現卷積。卷積是濾波器和輸入圖像塊(patch)的點乘。
  • 中科大首次實現千萬核並行第一性原理計算模擬
    科技日報合肥7月8日電 (記者吳長鋒)記者從中國科學技術大學獲悉,該校合肥微尺度物質科學國家研究中心金龍教授課題組與合作者緊密合作,針對大尺度數萬原子分子固體體系的第一性原理計算模擬,在國產神威·太湖之光超級計算機上實現了千萬核超大規模並行計算。
  • 矩陣相乘在GPU上的終極優化:深度解析Maxas彙編器工作原理
    在從事深度學習框架的實現工作時,了解到 Nervana 有一個稱為 Maxas 的彙編代碼生成器項目,可以生成性能超過 nVidia 官方版本的矩陣相乘的 GPU 機器碼,由此對其工作原理產生興趣。對於兩個 NxN 的矩陣 A 和 B 的相乘,一個最簡單的並行方法是對於其輸出矩陣 C(大小同為)的每一個元素開一個線程,該線程載入 A 的一行和 B 的一列,然後對其做一次向量的內積。
  • 基於FPGA IP核的線性調頻信號脈衝壓縮
    其中,利用IP核設計FPGA數字系統成為一種趨勢,這些智慧財產權核可以大大簡化FPGA的設計,加快設計速度,縮短研發周期,而且經過不斷的優化,IP核具有了更好的精度和更快的運算速度,實際的工程應用效果很好。
  • Adreno GPU 矩陣乘法——第1講:OpenCL優化
    他一直致力於開發和原型設計Snapdragon上OpenCL 2.x新的標準特性,改進Adreno GPU架構,用於計算和加速重要線性代數算法,包括GPU上的矩陣乘法。在要相乘的矩陣中,例如A和B,每個元素對結果矩陣C的不同分量貢獻多次。因此,為Adreno優化MM算法需要我們利用GPU內存子系統。關於GPU 上的矩陣乘法存在哪些困難?
  • ARM處理器NEON編程及優化技巧——矩陣乘法的實例
    矩陣乘法中的向量乘以標量的運算假設每列元素在NEON寄存器中表示為一個向量,那麼上述的矩陣乘法就是一個向量乘以標量的運算,而後續的累加也同樣可以同向量乘以標量的累加指令實現。因為我們的操作是在第一個矩陣的列,然後計算列的結果,讀列元素和寫列元素都是線性的加載和存儲操作,不需要interleave的加載和存儲操作。
  • 基於FPGA IP核的FFT實現與改進
    常規的FFT硬體實現方法均不考慮由於非整數倍截斷導致的頻譜洩露問題。針對以上問題,本文設計了一種基於Altera IP核的512點FFT系統,同時通過對輸入信號的加窗處理,抑制了非整數倍信號周期截斷所產生的頻譜洩露。1 原理概述1.1 FFT原理離散傅立葉變換(DFT)算法為
  • 斐波那契數列與矩陣乘法的聯繫以及其python實現
    避免重複 的關鍵在於 要實現檢查即將進行的計算是否已經經歷過。有同學會想到使用列表,每計算一個feb(n),就將結果存儲到列表的下標n 處。學習高等數學、線性代數等課程時,可能有數學老師提到過斐波那契數列的另類解法--利用矩陣求解。數列的遞推公式為:f(1)=1,f(2)=2,f(n)=f(n-1)+f(n-2)(n>=3)   用矩陣表示為:
  • 基於FPGA的TS over IP的設計與實現
    編者按:隨著網際網路的發展, 數位電視信號的網絡傳輸得到了越來越多的關注,本文設計與實現了一種基於FPGA和MCU(R8051XC2)的TS over IP系統,並對傳統的TS over IP系統進行了改進。