《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 一種極低IO帶寬需求的大維度矩陣鏈?zhǔn)骄仃嚦朔ㄆ髟O(shè)計(jì)
一種極低IO帶寬需求的大維度矩陣鏈?zhǔn)骄仃嚦朔ㄆ髟O(shè)計(jì)
2019年電子技術(shù)應(yīng)用第9期
宋宇鯤,鄭強(qiáng)強(qiáng),王澤中,張多利
合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,安徽 合肥230009
摘要: 大維度矩陣乘法常采用子矩陣分塊法實(shí)現(xiàn),子矩陣的最大規(guī)模決定了整個(gè)矩陣乘法執(zhí)行速度。針對(duì)經(jīng)典脈動(dòng)結(jié)構(gòu)直接處理的矩陣規(guī)模受IO帶寬限制嚴(yán)重的問(wèn)題,提出了一種極低IO帶寬需求的大維度矩陣鏈?zhǔn)匠朔ㄆ鹘Y(jié)構(gòu),并完成了硬件設(shè)計(jì)實(shí)現(xiàn)與性能驗(yàn)證工作。主要工作如下:(1)優(yōu)化了矩陣乘法的數(shù)據(jù)組織,實(shí)現(xiàn)輸入矩陣規(guī)模與IO帶寬無(wú)關(guān),能夠最大限度地利用器件內(nèi)部邏輯和存儲(chǔ)資源;(2)根據(jù)優(yōu)化后數(shù)據(jù)組織形式設(shè)計(jì)了鏈?zhǔn)匠朔ㄆ饔布?,?shí)現(xiàn)源數(shù)據(jù)計(jì)算和傳輸重疊操作;(3)增強(qiáng)乘法器對(duì)矩陣規(guī)模的適應(yīng)性,所設(shè)計(jì)的鏈?zhǔn)匠朔ㄆ骺蓪?shí)時(shí)配置為多條獨(dú)立鏈,并行多組運(yùn)算;(4)在Xilinx C7V2000T FPGA芯片上完成不同種規(guī)模的鏈?zhǔn)匠朔ㄆ饔布?shí)現(xiàn)和性能測(cè)試工作,在該芯片上本文提出的鏈?zhǔn)匠朔ㄆ髯疃嘀С?00個(gè)運(yùn)算單元,是經(jīng)典脈動(dòng)結(jié)構(gòu)規(guī)模的8倍;在相同運(yùn)算器個(gè)數(shù)下,本文提出的鏈?zhǔn)匠朔ㄆ髦皇褂媒?jīng)典脈動(dòng)結(jié)構(gòu)運(yùn)算1/8的IO帶寬即獲得相等性能。
中圖分類號(hào): TN47
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190450
中文引用格式: 宋宇鯤,鄭強(qiáng)強(qiáng),王澤中,等. 一種極低IO帶寬需求的大維度矩陣鏈?zhǔn)骄仃嚦朔ㄆ髟O(shè)計(jì)[J].電子技術(shù)應(yīng)用,2019,45(9):32-38.
英文引用格式: Song Yukun,Zheng Qiangqiang,Wang Zezhong,et al. A large dimensional matrix chain matrix multiplier for extremely low IO bandwidth requirements[J]. Application of Electronic Technique,2019,45(9):32-38.
A large dimensional matrix chain matrix multiplier for extremely low IO bandwidth requirements
Song Yukun,Zheng Qiangqiang,Wang Zezhong,Zhang Duoli
School of Electronic Science and Applied Physics,Hefei University of Technology,Hefei 230009,China
Abstract: Large-dimensional matrix multiplication is often implemented by submatrix block method. The maximum size of the submatrix determines the speed of the entire matrix multiplication. Concerning the problem that the matrix size directly processed by the classical systolic structure is severely limited by the IO bandwidth, this paper proposes a large-dimensional matrix chain multiplier structure with extremely low IO bandwidth requirements, and completes the hardware design implementation and performance verification. The following is the main work of this thesis. Firstly, optimizing the data organization of matrix multiplication, realizing the input matrix size has nothing to do with IO bandwidth, and make maximum use of the internal logic and storage resources of the device. Secondly, according to the optimized data organization form, the chain multiplier hardware is designed for realizing the source data calculation and transmission overlap operation. Thirdly, the adaptability of the multiplier to the matrix scale is enhanced, and the designed chain multiplier can be configured in real time as multiple independent chains, multiple sets of operations in parallel. Lastly, completing the hardware implementation and performance test of chain multipliers of different sizes on the Xilinx C7V2000T FPGA chip. On this chip, the chain multiplier proposed in this paper supports up to 800 arithmetic units, which is 8 times the size of the classic systolic structure. In the same number of operators, the chain multiplier performance proposed in this paper uses only the classical pulsation structure to calculate the IO bandwidth of 1/8 to obtain equal performance.
Key words : matrix multiplication;systolic;chain;IO bandwidth;FPGA

0 引言

    在圖像視頻處理和機(jī)器學(xué)習(xí)領(lǐng)域,矩陣運(yùn)算規(guī)模達(dá)數(shù)千維甚至上兆維[1]。矩陣運(yùn)算,尤其是矩陣乘法O(n3)成為影響上述應(yīng)用實(shí)時(shí)性的關(guān)鍵。研究低成本和低時(shí)間開(kāi)銷的大規(guī)模矩陣乘法求解方法具有極強(qiáng)的工程實(shí)用價(jià)值。

1 相關(guān)工作

    C=A×B(A、B和C矩陣均為M階)的矩陣乘法的結(jié)果數(shù)據(jù)之間無(wú)關(guān),故C陣的元素可同時(shí)計(jì)算。利用這一特性,多種改進(jìn)矩陣乘法器方法被提出獲得低時(shí)間復(fù)雜度,較為典型的有:STRASSEN V等人提出了利用張量代數(shù)實(shí)現(xiàn)的公式化矩陣乘法,降低矩陣乘的時(shí)間復(fù)雜度的Strassen算法[2];CANNON L E等人介紹了一種網(wǎng)格并行的Cannon算法[3],通過(guò)矩陣分塊和地址循環(huán)的方法實(shí)現(xiàn)矩陣乘,最快執(zhí)行時(shí)間為O(n);此后,F(xiàn)OX G C等人提出一種基于超立方體結(jié)構(gòu)的Fox算法[4];KUNG H T等人提出了一種陣列結(jié)構(gòu)的脈動(dòng)算法[5];沈俊忠、田翔等人提出了兩種基于脈動(dòng)的二維陣列實(shí)現(xiàn)方案[6-7]。

    理論上采用上述矩陣陣列乘法器陣列規(guī)模越大,加速效果越顯著,但是實(shí)際硬件實(shí)現(xiàn)中陣列規(guī)模受兩個(gè)因素制約。

    首先,理論上脈動(dòng)陣列的IO帶寬應(yīng)滿足3fMB(這里f為工作頻率,M為陣列規(guī)模,B為數(shù)據(jù)位寬,當(dāng)f和B一定時(shí),可記為O(3M)),受存儲(chǔ)墻影響,M無(wú)法得到K級(jí);

    其次,過(guò)高的M限制了陣列IO帶寬利用率。設(shè)脈動(dòng)陣列輸入帶寬利用率Bave定義為:

    wdz2-gs1.gif

    式(1)的函數(shù)曲線如圖1所示,圖1表明隨陣列規(guī)模M的增長(zhǎng),Bave值逐漸收斂為1/2。這就意味著單純?cè)黾覯值會(huì)造成近一半IO帶寬的浪費(fèi),這又進(jìn)一步加劇了IO帶寬的壓力。

wdz2-t1.gif

    為克服經(jīng)典脈動(dòng)陣列結(jié)構(gòu)的缺陷,KUMAR V K P等人提出一種IO帶寬固定的鏈?zhǔn)?/a>乘法器[8-9],該乘法器中每個(gè)運(yùn)算單元內(nèi)存儲(chǔ)容量固定,通過(guò)將矩陣A元素和矩陣B元素送到“低速通道”和“快速通道”來(lái)實(shí)現(xiàn)Block內(nèi)和Block間的數(shù)據(jù)傳遞,這種數(shù)據(jù)組織形式將IO帶寬限制為9fB,避免了隨著矩陣規(guī)模增大帶來(lái)的帶寬問(wèn)題,該結(jié)構(gòu)另外的優(yōu)點(diǎn)在于運(yùn)算單元內(nèi)部的存儲(chǔ)容量固定,但容量和運(yùn)算單元數(shù)量呈反比;對(duì)于大規(guī)模矩陣乘,容量越小意味著運(yùn)算單元數(shù)量越多,造成運(yùn)算單元數(shù)量的浪費(fèi),并且由于線性乘法器僅有單一的數(shù)據(jù)輸入端,這會(huì)造成從數(shù)據(jù)輸入到所有運(yùn)算單元都處于工作狀態(tài)的延時(shí)更大,降低了大規(guī)模矩陣運(yùn)算效率。

    ALOGEELY M A等人提出的新型脈動(dòng)陣列結(jié)構(gòu)[10]改進(jìn)了KUMAR V K P等人提出的乘法器[8-9],通過(guò)對(duì)每個(gè)Block內(nèi)的運(yùn)算單元數(shù)量做了裁剪,構(gòu)成梯度式增長(zhǎng)的鏈?zhǔn)匠朔ㄆ?,這種結(jié)構(gòu)解決了運(yùn)算啟動(dòng)的延時(shí)問(wèn)題,但數(shù)據(jù)組織較為復(fù)雜,不具備良好的拓展性。

    針對(duì)上述問(wèn)題,本文提出了一種低IO帶寬矩陣陣列乘法器——鏈?zhǔn)骄仃嚦朔ㄆ鳎饕攸c(diǎn)是用列向量乘行向量和分時(shí)累加操作替代行向量乘列向量運(yùn)算,使得乘法器內(nèi)所有運(yùn)算單元都參與每條向量計(jì)算過(guò)程,充分發(fā)揮了數(shù)據(jù)和運(yùn)算單元可復(fù)用特性。本文給出了所設(shè)計(jì)鏈?zhǔn)骄仃嚦朔ㄆ鞯墓ぷ髟砗蛯?duì)應(yīng)硬件電路架構(gòu),并在FPGA芯片上完成乘法器硬件實(shí)現(xiàn)和性能測(cè)試。多種規(guī)模的矩陣乘法實(shí)測(cè)結(jié)果證實(shí),本設(shè)計(jì)在極低IO帶寬下達(dá)到了經(jīng)典陣列乘法器計(jì)算性能。

2 鏈?zhǔn)匠朔ㄆ鞴ぷ髟?/strong>

    矩陣乘法運(yùn)算C=A×B,(A、B和C均為M維矩陣)的偽碼如圖2所示。

wdz2-t2.gif

    令C[0][i][j]=0;1≤i≤M;1≤j≤M,設(shè)M=3,可得如圖3左側(cè)所示的三階矩陣乘的DAG,圖中每個(gè)頂點(diǎn)代表一個(gè)乘累加運(yùn)算,無(wú)括號(hào)坐標(biāo)表征圖2中數(shù)據(jù)移動(dòng)路線,該DAG的硬件實(shí)現(xiàn)如圖3右側(cè)所示。

wdz2-t3.gif

    當(dāng)IO帶寬滿足,規(guī)模為n×n的脈動(dòng)乘法器可得計(jì)算時(shí)間下界O(n)。但受IO帶寬制約,典型脈動(dòng)陣列規(guī)模有限,需要將大維度矩陣分解若干子陣分別處理,執(zhí)行復(fù)雜的數(shù)據(jù)緩沖或訪存操作才能得到理想的加速效果。

    將圖3左側(cè)圖沿d1=(0,0,1)方向投影可得圖4。

wdz2-t4.gif

wdz2-t2-x1.gif

    圖2中沿著i坐標(biāo)軸正方向存在三個(gè)與坐標(biāo)軸jk平面平行的平面,第二個(gè)平面的輸入是行向量a2和矩陣B,第三個(gè)平面輸入是行向量a3和矩陣B。故其運(yùn)算過(guò)程可描述為如下公式:

     wdz2-gs2.gif

    式(2)中,矩陣A、B分別以列主式和行主方式展開(kāi)乘法運(yùn)算。由此可構(gòu)造一種無(wú)源數(shù)據(jù)緩存的3個(gè)數(shù)據(jù)通道(分別對(duì)應(yīng)源矩陣A和B,結(jié)果矩陣C)的鏈?zhǔn)匠朔ㄆ?,其?jì)算過(guò)程的偽代碼如圖5所示,其運(yùn)算路線如圖2中帶括號(hào)的坐標(biāo)。

wdz2-t5.gif

    綜上,本文提出了一種IO帶寬恒為3fB的鏈?zhǔn)匠朔ㄆ鳎仃嘇、B中元素分別按列和行輸入乘法器內(nèi)運(yùn)算單元完成確定操作。該鏈?zhǔn)匠朔ㄆ髦С衷诰€配置,能夠根據(jù)待處理矩陣規(guī)模被配置多鏈結(jié)構(gòu),適應(yīng)不同的帶寬條件。

3 鏈?zhǔn)骄仃嚦似饔布?shí)現(xiàn)

3.1 鏈?zhǔn)骄仃嚦朔ㄆ骷軜?gòu)設(shè)計(jì)

    由圖4得到行向量a1與矩陣B相乘的數(shù)據(jù)組織形式如圖6(a)所示。圖中大方框中是用來(lái)執(zhí)行乘累加操作并緩存結(jié)果矩陣元素的2組中間值,進(jìn)而輸出最終結(jié)果。由此類推,行向量a2和a3與矩陣B相乘的數(shù)據(jù)組織形式如圖6(b)和圖6(c)所示。

wdz2-t6.gif

    由圖6可知,M階(此時(shí)M=3)矩陣A在與M階矩陣B進(jìn)行矩陣乘時(shí),矩陣A中的行向量的每個(gè)元素都要保持M個(gè)周期才能向?qū)?yīng)乘累加器中輸入下一個(gè)元素,即輸入帶寬利用率僅為矩陣A輸入總帶寬的1/M;矩陣B按行向每個(gè)乘累加器輸入相同的元素,其帶寬利用率也僅為矩陣B輸入總帶寬的1/M。觀察矩陣A的行向量的輸入規(guī)律,在行向量的每個(gè)元素的保持周期內(nèi),將矩陣A中的元素按列進(jìn)行輸入(例如,在矩陣A第一個(gè)行向量的第一個(gè)元素a11的保持周期內(nèi),將矩陣A中的元素a11、a21、a31依次輸入到每一個(gè)乘累加器中),可以得到三階矩陣列乘行的數(shù)據(jù)組織形式如圖7所示。圖7中矩陣A按列依次進(jìn)行輸入,矩陣B按行依次進(jìn)行輸入,但要使得矩陣B輸入端的帶寬得到充分的利用,矩陣B需要在每個(gè)相鄰乘累加器相差1cycle,故而可以將矩陣B也按照行輸入到每個(gè)乘累加器,通過(guò)使用寄存器將矩陣B的輸入延遲一個(gè)周期輸入到下一個(gè)乘累加器中,可以得到圖8的數(shù)據(jù)組織形式。

wdz2-t7.gif

3.2 鏈?zhǔn)匠朔ㄆ鱌E設(shè)計(jì)

    如圖8所示,為了將鏈?zhǔn)匠朔ㄆ鞯妮敵鰩捓寐蔬_(dá)到最高,本文設(shè)計(jì)了如圖9所示PE的結(jié)構(gòu),包含一個(gè)浮點(diǎn)數(shù)乘法器和一個(gè)浮點(diǎn)數(shù)加法器,一對(duì)用于脈動(dòng)輸入的寄存器,以及一組深度為m的乒乓存儲(chǔ)器,分別用于緩存加法器結(jié)果和輸出矩陣運(yùn)算結(jié)果。

wdz2-t8.gif

wdz2-t9.gif

    當(dāng)源數(shù)據(jù)srcA和srcB進(jìn)入PE時(shí),首先被送入浮點(diǎn)數(shù)乘法器中進(jìn)行乘法運(yùn)算,乘法結(jié)果會(huì)被送入浮點(diǎn)數(shù)加法器,與運(yùn)算存儲(chǔ)器(用于緩存加法器結(jié)果的存儲(chǔ)器)中頂層(dstA0)數(shù)據(jù)相加,相加的結(jié)果進(jìn)入運(yùn)算存儲(chǔ)器底層(dstA(m-1));加法器每進(jìn)行一次運(yùn)算,所有數(shù)據(jù)被刷新一次,即向前移動(dòng)一個(gè)地址,直到處于頂層(dstA0);反復(fù)執(zhí)行上述操作,直到運(yùn)算完畢。

    當(dāng)前矩陣運(yùn)算結(jié)束后,需要將結(jié)果輸出,此時(shí)存儲(chǔ)器執(zhí)行乒乓操作,將運(yùn)算存儲(chǔ)器和原先用于輸出矩陣運(yùn)算結(jié)果的傳輸存儲(chǔ)器互相切換。

    這種結(jié)構(gòu)將累加操作解耦,只將乘法和加法操作結(jié)合,使得PE更加獨(dú)立,同時(shí)避免了硬件實(shí)現(xiàn)中累加器的流水線級(jí)數(shù)造成的結(jié)果數(shù)據(jù)延遲效應(yīng)。

3.3 鏈?zhǔn)匠朔ㄆ饔布O(shè)計(jì)

    以M階矩陣為例,鏈?zhǔn)匠朔ㄆ餍枰狹個(gè)PE。在進(jìn)行C=A×B的矩陣乘法時(shí),輸入矩陣A和B分別按列和按行輸入到鏈?zhǔn)匠朔ㄆ鹘Y(jié)構(gòu)中。圖10所示為鏈?zhǔn)匠朔ㄆ鹘Y(jié)構(gòu)中M=3的具體結(jié)構(gòu),矩陣B的數(shù)據(jù)元素每周期依次進(jìn)入PE0的1端口,而矩陣A中的元素每周期依次對(duì)各個(gè)PE的0端口輪轉(zhuǎn)輸入。

wdz2-t10.gif

    鏈?zhǔn)匠朔ㄆ鞯墓ぷ髁鞒倘鐖D11所示,具體對(duì)應(yīng)為一個(gè)3階方陣相乘的流程。可以看到,在初始M(M=3)個(gè)周期的啟動(dòng)時(shí)間過(guò)后,所有PE處于滿載狀態(tài)。對(duì)于PE0,直到第8個(gè)周期才輸出結(jié)果c11,c11是由第1、4、7周期的元素乘加得到的,三個(gè)階段的結(jié)果分別對(duì)應(yīng)圖中c111、c112、c113,最終求和得到的結(jié)果為矩陣A的第1行向量與矩陣B的第1列向量的乘累加結(jié)果。圖中灰色部分表示新的矩陣A′和B′輸入并相乘,此時(shí)的結(jié)果傳輸時(shí)間被隱藏。

wdz2-t11.gif

    根據(jù)這種矩陣乘法的結(jié)構(gòu)特性,可以實(shí)現(xiàn)多個(gè)矩陣的連乘操作。由于沒(méi)有輸入緩沖,一組矩陣完成計(jì)算并切換到下一矩陣時(shí)沒(méi)有存儲(chǔ)上的時(shí)間消耗,結(jié)果存儲(chǔ)器采用乒乓操作,一部分用于參與當(dāng)前矩陣的實(shí)時(shí)運(yùn)算,另外一部分存儲(chǔ)了上次矩陣乘結(jié)果并回傳,隱藏了大部分?jǐn)?shù)據(jù)回寫時(shí)間。

    在面對(duì)大規(guī)模矩陣乘的時(shí)候,由于硬件資源受限,難以一次性完成整個(gè)矩陣的運(yùn)算,這時(shí)候必須將矩陣分成多個(gè)小塊,對(duì)各個(gè)子塊以及塊間進(jìn)行乘加運(yùn)算,鏈?zhǔn)匠朔ㄆ髂軌蚝芎玫靥幚矸謮K矩陣乘。

4 鏈?zhǔn)匠朔ㄆ餍阅芊治?/strong>

    下面以在FPGA上實(shí)現(xiàn)的鏈?zhǔn)匠朔ㄆ鱽?lái)對(duì)上述設(shè)計(jì)的性能進(jìn)行分析,在本文中,設(shè)計(jì)在XC7V2000T芯片上進(jìn)行驗(yàn)證,實(shí)驗(yàn)中采取單精度浮點(diǎn)數(shù)作為數(shù)據(jù)元素,經(jīng)過(guò)實(shí)驗(yàn),片內(nèi)最大可集成800個(gè)PE。本設(shè)計(jì)中所使用的FPGA開(kāi)發(fā)環(huán)境和仿真環(huán)境為Xilinx Vivado 2016.3及Mentor Graphics Modelsim SE-64 10.2c。

4.1 峰值計(jì)算性能

    理想情況下,鏈?zhǔn)匠朔ㄆ鞴ぷ鲿r(shí)所有PE均滿載,每個(gè)PE在單時(shí)鐘周期內(nèi)消耗兩個(gè)浮點(diǎn)數(shù),得到一個(gè)結(jié)果數(shù)據(jù)。實(shí)際上,由于矩陣類型、流水線延遲、存儲(chǔ)策略加上啟動(dòng)延遲(數(shù)據(jù)從輸入開(kāi)始到所有PE工作)等因素的影響,在某些周期內(nèi)仍會(huì)存在部分PE處于空閑的情況,設(shè)PERFpeak表示運(yùn)算的峰值性能,N表示PE的個(gè)數(shù),f表示工作頻率,S表示整個(gè)大規(guī)模矩陣總運(yùn)算次數(shù),則有式(3)表示如下:

    wdz2-gs3.gif

    本文主要圍繞大規(guī)模矩陣儲(chǔ)乘法進(jìn)行硬件設(shè)計(jì),通過(guò)探究N、S、f等因素對(duì)運(yùn)算器的性能影響,進(jìn)行了以下幾組實(shí)驗(yàn),實(shí)驗(yàn)以200 MHz時(shí)鐘作為工作時(shí)鐘,以2片DDR3作為主存,存儲(chǔ)源數(shù)據(jù)和結(jié)果數(shù)據(jù),2片DDR3峰值帶寬為204.8 Gb/s,考慮到多路并行輸入輸出時(shí)的帶寬限制問(wèn)題,在實(shí)驗(yàn)中矩陣元素采用32位浮點(diǎn)數(shù)表示,所以單條鏈?zhǔn)匠朔ㄆ鞯姆逯祹挒?8.75 Gb/s(2組源數(shù)據(jù),一組結(jié)果數(shù)據(jù))。

    在xc7v2000tflg1925-1 FPGA上實(shí)現(xiàn)該設(shè)計(jì),F(xiàn)PGA內(nèi)部資源使用情況如表1所示,根據(jù)布線后仿真的結(jié)果,該矩陣乘法器在未做優(yōu)化的情況下工作頻率可達(dá)到100 MHz。由此得出,該設(shè)計(jì)的峰值單精度浮點(diǎn)計(jì)算性能可以達(dá)到156.25 GFLOPS。

wdz2-b1.gif

    當(dāng)PE資源不足以支持一次性運(yùn)算整個(gè)矩陣,需要分塊運(yùn)算,表2中陰影部分表示運(yùn)算不需分塊,非陰影部分表示需要分塊運(yùn)算??梢钥闯?,隨矩陣規(guī)模增大,不同鏈數(shù)對(duì)運(yùn)算性能的影響逐漸減小,圖中,在處理128×128及更大規(guī)模的矩陣乘時(shí),所有鏈?zhǔn)匠朔ㄆ鬟\(yùn)算周期基本持平,這是因?yàn)樵谔幚磉@些矩陣分塊運(yùn)算時(shí),所有PE均處于滿負(fù)荷狀態(tài),而矩陣分塊僅僅改變的是同一數(shù)據(jù)的讀取次數(shù),對(duì)總的運(yùn)算量并不影響。

wdz2-b2.gif

4.2 不同鏈數(shù)對(duì)運(yùn)算的影響

    分析表2中所列的數(shù)據(jù),可以得到,當(dāng)運(yùn)算規(guī)模小的時(shí)候,鏈?zhǔn)匠朔ㄆ鞯恼w運(yùn)算時(shí)間相較于數(shù)據(jù)運(yùn)算量來(lái)說(shuō)較大,這是因?yàn)閿?shù)據(jù)回傳時(shí)間對(duì)于總運(yùn)算周期占比較大,隨著矩陣規(guī)模的增大,數(shù)據(jù)回傳時(shí)間占總周期比重越來(lái)越小,計(jì)算效率逐漸提高。

    由于表2中數(shù)據(jù)范圍相差較大,為了直觀地得到各組乘法器的性能對(duì)比,對(duì)每組鏈的運(yùn)算周期與理想脈動(dòng)結(jié)構(gòu)的周期做比值,得到結(jié)果如圖12所示。

wdz2-t12.gif

    表2中同樣列舉了規(guī)模為8×8的脈動(dòng)陣列的運(yùn)算周期,200 MHz工作頻率下8×8脈動(dòng)陣列的峰值帶寬為150 Gb/s,而本文設(shè)計(jì)的單鏈乘法器峰值帶寬僅18.75 Gb/s,由圖12可知,單鏈乘法器在處理小規(guī)模矩陣時(shí)與脈動(dòng)相比性能有所欠缺,但在處理大規(guī)模矩陣乘時(shí)兩者表現(xiàn)相當(dāng),而單鏈乘法器在帶寬方面優(yōu)勢(shì)非常明顯。

    設(shè)PPB表示鏈?zhǔn)浇Y(jié)構(gòu)單位帶寬的運(yùn)算能力,并以脈動(dòng)陣列作為衡量標(biāo)準(zhǔn),PPB為脈動(dòng)陣列所有帶寬的運(yùn)算能力與鏈?zhǔn)浇Y(jié)構(gòu)的運(yùn)算能力的歸一化比值,滿足如下關(guān)系:

    wdz2-gs4.gif

    式(4)中,鏈數(shù)L1表示脈動(dòng)陣列規(guī)模(本實(shí)驗(yàn)中L1=8),L2表示鏈?zhǔn)匠朔ㄆ鞯逆湐?shù),Tsystolic和Tchain分別表示脈動(dòng)和鏈?zhǔn)浇Y(jié)構(gòu)的運(yùn)算周期,將表2中數(shù)據(jù)帶入式(2),得到鏈?zhǔn)匠朔ㄆ鞯腜PB如圖13所示。

wdz2-t13.gif

    當(dāng)運(yùn)算小規(guī)模矩陣時(shí),鏈?zhǔn)匠朔ㄆ鲉挝粠掃\(yùn)算能力較低,然而當(dāng)計(jì)算大規(guī)模矩陣乘時(shí),由于鏈?zhǔn)匠朔ㄆ髂軌蚝芎玫靥幚砭仃嚪謮K造成的運(yùn)算效率問(wèn)題,因此單位帶寬的運(yùn)算能力逐漸提高,并逐漸趨近于L1與L2的比值。例如本實(shí)驗(yàn)中,單鏈模式下,PPB最終趨近于8,表示鏈?zhǔn)匠朔ㄆ鲉挝粠挼倪\(yùn)算能力與脈動(dòng)陣列的8帶寬的運(yùn)算能力相當(dāng)。由圖13可知,本文所設(shè)計(jì)的鏈?zhǔn)匠朔ㄆ髟趩捂?L=1)下工作性能最佳,同比與其他模式下的運(yùn)算器,單鏈乘法器在帶寬方面有著明顯的優(yōu)勢(shì)。

4.3 不同數(shù)量運(yùn)算單元對(duì)運(yùn)算的影響

    不同規(guī)模的鏈?zhǔn)匠朔ㄆ鲗?duì)于矩陣乘法也有不同的加速效果,本文分別以PE集成度為16、32、64、128的單鏈乘法器為實(shí)驗(yàn)對(duì)象,計(jì)算不同規(guī)模的矩陣乘,見(jiàn)表3。

wdz2-b3.gif

    表3中的數(shù)字表示總運(yùn)算周期,陰影部分表示不分塊運(yùn)算結(jié)果,非陰影部分表示分塊運(yùn)算結(jié)果。可以看出,在處理小規(guī)模矩陣時(shí),所有運(yùn)算器性能相當(dāng),這是因?yàn)镻E資源足夠支撐一次性運(yùn)算;在處理大規(guī)模矩陣時(shí),PE數(shù)量成為限制運(yùn)算器性能的主要因素,在處理128×128及更大規(guī)模的矩陣乘時(shí),運(yùn)算周期隨PE數(shù)量呈遞減趨勢(shì)。

    分塊運(yùn)算時(shí),受PE數(shù)量N限制,每次運(yùn)算量為N×N,若將矩陣分割為K×K個(gè)N×N的矩陣塊,則總的運(yùn)算周期近似N2×K3。設(shè)其他結(jié)構(gòu)的乘法器所分塊得到的子陣規(guī)模為N′×N′,其分塊得到的子陣數(shù)量為K′×K′,可以得到,相同PE數(shù)量下,單鏈結(jié)構(gòu)所對(duì)應(yīng)的N值大于N′,K小于K′,所以總運(yùn)算周期最優(yōu)。

    綜上所述,本文提出的鏈?zhǔn)匠朔ㄆ骺梢蕴幚聿煌?guī)模的矩陣乘法,并且運(yùn)算性能卓越。

5 結(jié)論

    本文設(shè)計(jì)了一種鏈?zhǔn)讲⑿懈↑c(diǎn)數(shù)矩陣乘法器,并在Xilinx的XC7V2000T芯片進(jìn)行了原型驗(yàn)證,通過(guò)實(shí)驗(yàn)分析,該矩陣乘法器優(yōu)點(diǎn)在于對(duì)IO帶寬的要求非常低,結(jié)構(gòu)靈活,能夠適用于不同類型的矩陣乘法。該設(shè)計(jì)主要面向大規(guī)模矩陣的分塊運(yùn)算,由于數(shù)據(jù)采取非緩沖的組織形式,運(yùn)算器能夠?qū)崿F(xiàn)數(shù)據(jù)流入的同時(shí)開(kāi)始計(jì)算,數(shù)據(jù)流入完畢結(jié)束運(yùn)算,極大地提高了整體運(yùn)算的吞吐率;由于PE相對(duì)獨(dú)立,支持根據(jù)不同的矩陣規(guī)模根據(jù)配置信息在線調(diào)整PE的使用情況,滿足了靈活性與通用性的要求,同時(shí)具備了良好的拓展性,鏈?zhǔn)匠朔ㄆ髟谶\(yùn)算大規(guī)模矩陣乘法時(shí)表現(xiàn)突出。

參考文獻(xiàn)

[1] 馮子勇.基于深度學(xué)習(xí)的圖像特征學(xué)習(xí)和分類方法的研究及應(yīng)用[D].廣州:華南理工大學(xué),2016.

[2] STRASSEN V.Gaussian elimination is not optimal[J].Numerische Mathematik,1969,13(4):354-356.

[3] CANNON L E.A cellular computer implement the Kalman filter algorithm[D].Bozeman US:Montana State University,1969.

[4] FOX G C,OTTO S W,HEY A J G.Matrix algorithm on a hypercube I: matrix multiplication[J].Parallel Computing,1987,4(1):17-31.

[5] KUNG H T,LEISERSON C E.Systolic arrays(for VLSI)[J].Proceeding Sparse Matrix Conference,1978:256-282.

[6] 沈俊忠,肖濤,喬寓然,等.一種支持優(yōu)化分塊策略的矩陣乘加速器設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2016,38(9):1748-1754.

[7] 田翔,周凡,陳耀武,等.基于FPGA的實(shí)時(shí)雙精度浮點(diǎn)矩陣乘法器設(shè)計(jì)[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2008,42(9):1611-1615.

[8] KUMAR V K P,TSAI Y C.On synthesizing optimal family of linear systolic arrays for matrix multiplication[J].IEEE Transactions on Computers,1991,40(6):770-774.

[9] KUMAR V K P,TSAI Y C.On Mapping algorithms to linear and fault-tolerant systolic arrays[J].IEEE Transactions on Computers,1989,38(3):470-478.

[10] ALOGEELY M A,Al-Turaigi M A,ALSHEBEILI S A.A new approach for the design of linear systolic arrays for computing third-order cumulants[J].Integration the Vlsi Journal,1997,24(1):1-17.



作者信息:

宋宇鯤,鄭強(qiáng)強(qiáng),王澤中,張多利

(合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,安徽 合肥230009)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。