資源描述:
《在FPGA上優(yōu)化實(shí)現(xiàn)復(fù)數(shù)浮點(diǎn)計(jì)算.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、在FPGA上優(yōu)化實(shí)現(xiàn)復(fù)數(shù)浮點(diǎn)計(jì)算 性能浮點(diǎn)處理一直與高性能CPU相關(guān)聯(lián)。在過(guò)去幾年中,GPU也成為功能強(qiáng)大的浮點(diǎn)處理平臺(tái),超越了圖形,稱為GP-GPU(通用圖形處理單元)。新創(chuàng)新是在苛刻的應(yīng)用中實(shí)現(xiàn)基于FPGA的浮點(diǎn)處理。本文的重點(diǎn)是FPGA及其浮點(diǎn)性能和設(shè)計(jì)流程,以及OpenCL的使用,這是高性能浮點(diǎn)計(jì)算前沿的編程語(yǔ)言?! 「鞣N處理平臺(tái)的GFLOP指標(biāo)在不斷提高,現(xiàn)在,TFLOP/s這一術(shù)語(yǔ)已經(jīng)使用的非常廣泛了。但是,在某些平臺(tái)上,峰值GFLOP/s,即,TFLOP/s表示的器件性能信息有限。它只表示了每秒能夠完成的理論浮點(diǎn)加法或者乘法總數(shù)
2、。分析表明,F(xiàn)PGA單精度浮點(diǎn)處理能夠超過(guò)1TFLOP/s。 一種不太復(fù)雜的常用算法是FFT。使用單精度浮點(diǎn)實(shí)現(xiàn)了4096點(diǎn)FFT。它能夠在每個(gè)時(shí)鐘周期輸入輸出四個(gè)復(fù)數(shù)采樣。每一個(gè)FFT內(nèi)核運(yùn)行速度超過(guò)80GFLOP/s,大容量FPGA的資源支持實(shí)現(xiàn)7個(gè)這類的內(nèi)核?! 〉?,如圖1所示,這一FPGA的FFT算法GFLOP/s接近400GFLOP/s。這是“按鍵式”O(jiān)penCL編譯結(jié)果,不需要FPGA專業(yè)知識(shí)。使用邏輯鎖定和DSE進(jìn)行優(yōu)化,7內(nèi)核設(shè)計(jì)接近單內(nèi)核設(shè)計(jì)的Fmax,將其GFLOP/s提升至500,超過(guò)了10GFLOP/s每瓦?! ∵@一
3、每瓦GFLOP/s要比CPU或者GPU功效高很多。對(duì)比一下GPU,GPU在這些FFT長(zhǎng)度上效率并不高,因此,沒(méi)有進(jìn)行基準(zhǔn)測(cè)試。當(dāng)FFT長(zhǎng)度達(dá)到幾十萬(wàn)個(gè)點(diǎn)時(shí),GPU效率才比較高,能夠?yàn)镃PU提供有效的加速功能?! D1:AlteraStraTIxV5SGSD8FPGA浮點(diǎn)FFT性能?! 】傊?,實(shí)際的GFLOP/s一般只達(dá)到峰值或者理論GFLOP/s的一小部分。出于這一原因,更好的方法是采用算法來(lái)對(duì)比性能,這種算法能夠合理的表示典型應(yīng)用的特性。算法越復(fù)雜,典型實(shí)際應(yīng)用的基準(zhǔn)測(cè)試就越具有代表性。 并不是依靠供應(yīng)商的峰值GFLOP/s指標(biāo)來(lái)確定處
4、理技術(shù),而是使用比較復(fù)雜具有代表性的第三方評(píng)估。高性能計(jì)算理想的算法是Cholesky分解?! ∵@一算法經(jīng)常用于線性代數(shù),高效的解出多個(gè)方程,可以實(shí)現(xiàn)矩陣求逆功能。這一算法非常復(fù)雜,要獲得合理的結(jié)果總是要求浮點(diǎn)數(shù)值表示。計(jì)算需求與N3成正比,N是矩陣維度,因此,一般對(duì)處理要求很高。實(shí)際GFLOP/s取決于矩陣大小以及所要求的矩陣處理吞吐量?! ”?顯示了基于NvidiaGPU指標(biāo)1.35TFLOP/s的基準(zhǔn)測(cè)試結(jié)果,使用了各種庫(kù),以及XilinxVirtex6XC6VSX475T,其密度達(dá)到475KLC,這種FPGA針對(duì)DSP處理進(jìn)行了優(yōu)化。用
5、于Cholesky基準(zhǔn)測(cè)試時(shí),這些器件在密度上與AlteraFPGA相似?! ”?:田納西州大學(xué)的GPU和XilinxFPGACholesky基準(zhǔn)測(cè)試?! APACK和MAGMA是商用庫(kù),而GPUGFLOP/s是指采用田納西州大學(xué)開發(fā)的OpenCL實(shí)現(xiàn)的。對(duì)于小規(guī)模矩陣,后者更優(yōu)化一些?! ≈械纫?guī)模的AlteraStraTIxVFPGA(460kLE)也進(jìn)行了基準(zhǔn)測(cè)試,使用了單精度浮點(diǎn)Cholesky算法。如表2所示,在StraTIxVFPGA上進(jìn)行Cholesky算法的性能要比Xilinx結(jié)果高很多?! ”?:BDTI的Altera
6、FPGACholesky和QR基準(zhǔn)測(cè)試?! ?yīng)指出,矩陣大小并不相同。田納西州大學(xué)結(jié)果是從[512×512]矩陣大小開始的。BDTI基準(zhǔn)測(cè)試達(dá)到了[360×360]矩陣大小。原因是,矩陣規(guī)模較小時(shí),GPU效率非常低,因此,在這些應(yīng)用中,不應(yīng)該使用它們來(lái)加速CPU。在規(guī)模較小的矩陣時(shí),F(xiàn)PGA的工作效率非常高。 其次,BDTI基準(zhǔn)測(cè)試是基于每個(gè)Cholesky內(nèi)核的。每個(gè)可參數(shù)賦值的Cholesky內(nèi)核支持選擇矩陣大小,矢量大小和通道數(shù)量。矢量大小大致決定了FPGA資源。較大的[360×360]矩陣使用了較長(zhǎng)的矢量,支持這一FPGA中實(shí)現(xiàn)一個(gè)內(nèi)
7、核,達(dá)到91GFLOP/s。較小的[60×60]矩陣使用的資源更少,因此,可以實(shí)現(xiàn)兩個(gè)內(nèi)核,總共是2×39=78GFLOP/s。最小的[30×30]矩陣支持實(shí)現(xiàn)三個(gè)內(nèi)核,總共是3×26=78GFLOP/s?! PGA看起來(lái)更適合解決數(shù)據(jù)規(guī)模較小的問(wèn)題。原因之一是因?yàn)橛?jì)算負(fù)載隨N3而增大,數(shù)據(jù)I/O隨N2增大,最終,隨著數(shù)據(jù)的增加,GPU的I/O瓶頸不再是問(wèn)題。另一項(xiàng)考慮是吞吐量。隨著矩陣規(guī)模的增大,由于每個(gè)矩陣的處理量增大,矩陣每秒吞吐量會(huì)大幅度下降。在某些點(diǎn),吞吐量變得非常低,以至于無(wú)法滿足很多應(yīng)用的要求。在很多情況下,會(huì)分解大規(guī)模矩陣,處
8、理每個(gè)小的子矩陣,以解決由于龐大的處理負(fù)載造成的吞吐量限制問(wèn)題?! ?duì)于FFT,計(jì)算負(fù)載增加Nlog2N,而數(shù)據(jù)I/O隨N增大而增大。對(duì)于規(guī)模較大的數(shù)