精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

工程師教您如何在FPGA上優(yōu)化實現(xiàn)復數(shù)浮點計算

電子設計 ? 來源:互聯(lián)網 ? 作者:佚名 ? 2018-01-16 08:53 ? 次閱讀

高性能浮點處理一直與高性能CPU相關聯(lián)。在過去幾年中,GPU也成為功能強大的浮點處理平臺,超越了圖形,稱為GP-GPU(通用圖形處理單元)。新創(chuàng)新是在苛刻的應用中實現(xiàn)基于FPGA的浮點處理。本文的重點是FPGA及其浮點性能和設計流程,以及OpenCL的使用,這是高性能浮點計算前沿的編程語言。
各種處理平臺的GFLOP指標在不斷提高,現(xiàn)在,TFLOP/s這一術語已經使用的非常廣泛了。但是,在某些平臺上,峰值GFLOP/s,即,TFLOP/s表示的器件性能信息有限。它只表示了每秒能夠完成的理論浮點加法或者乘法總數(shù)。分析表明,F(xiàn)PGA單精度浮點處理能夠超過1 TFLOP/s。
一種不太復雜的常用算法是FFT。使用單精度浮點實現(xiàn)了4096點FFT。它能夠在每個時鐘周期輸入輸出四個復數(shù)采樣。每一個FFT內核運行速度超過80 GFLOP/s,大容量FPGA的資源支持實現(xiàn)7個這類的內核。
但是,如圖1所示,這一FPGA的FFT算法GFLOP/s接近400 GFLOP/s。這是“按鍵式”O(jiān)penCL編譯結果,不需要FPGA專業(yè)知識。使用邏輯鎖定和DSE進行優(yōu)化,7內核設計接近單內核設計的Fmax,將其GFLOP/s提升至500,超過了10 GFLOP/s每瓦。
這一每瓦GFLOP/s要比CPU或者GPU功效高很多。對比一下GPU,GPU在這些FFT長度上效率并不高,因此,沒有進行基準測試。當FFT長度達到幾十萬個點時,GPU效率才比較高,能夠為CPU提供有效的加速功能。

總之,實際的GFLOP/s一般只達到峰值或者理論GFLOP/s的一小部分。出于這一原因,更好的方法是采用算法來對比性能,這種算法能夠合理的表示典型應用的特性。算法越復雜,典型實際應用的基準測試就越具有代表性。
并不是依靠供應商的峰值GFLOP/s指標來確定處理技術,而是使用比較復雜具有代表性的第三方評估。高性能計算理想的算法是Cholesky分解。
這一算法經常用于線性代數(shù),高效的解出多個方程,可以實現(xiàn)矩陣求逆功能。這一算法非常復雜,要獲得合理的結果總是要求浮點數(shù)值表示。計算需求與N3成正比,N是矩陣維度,因此,一般對處理要求很高。實際GFLOP/s取決于矩陣大小以及所要求的矩陣處理吞吐量。
表1顯示了基于Nvidia GPU指標1.35TFLOP/s的基準測試結果,使用了各種庫,以及Xilinx Virtex6 XC6VSX475T,其密度達到475K LC,這種FPGA針對DSP處理進行了優(yōu)化。用于Cholesky基準測試時,這些器件在密度上與Altera FPGA相似。


LAPACK和MAGMA是商用庫,而GPU GFLOP/s是指采用田納西州大學開發(fā)的OpenCL實現(xiàn)的。對于小規(guī)模矩陣,后者更優(yōu)化一些。
中等規(guī)模的Altera Stratix V FPGA (460kLE)也進行了基準測試,使用了單精度浮點Cholesky算法。如表2所示,在Stratix V FPGA上進行Cholesky算法的性能要比Xilinx結果高很多。


應指出,矩陣大小并不相同。田納西州大學結果是從[512×512]矩陣大小開始的。BDTI基準測試達到了[360×360]矩陣大小。原因是,矩陣規(guī)模較小時,GPU效率非常低,因此,在這些應用中,不應該使用它們來加速CPU。在規(guī)模較小的矩陣時,F(xiàn)PGA的工作效率非常高。
其次,BDTI基準測試是基于每個Cholesky內核的。每個可參數(shù)賦值的Cholesky內核支持選擇矩陣大小,矢量大小和通道數(shù)量。矢量大小大致決定了FPGA資源。較大的[360×360]矩陣使用了較長的矢量,支持這一FPGA中實現(xiàn)一個內核,達到91GFLOP/s。較小的[60×60]矩陣使用的資源更少,因此,可以實現(xiàn)兩個內核,總共是2×39=78GFLOP/s。最小的[30×30]矩陣支持實現(xiàn)三個內核,總共是3×26=78GFLOP/s。
FPGA看起來更適合解決數(shù)據規(guī)模較小的問題。原因之一是因為計算負載隨N3而增大,數(shù)據I/O隨N2增大,最終,隨著數(shù)據的增加,GPU的I/O瓶頸不再是問題。另一項考慮是吞吐量。隨著矩陣規(guī)模的增大,由于每個矩陣的處理量增大,矩陣每秒吞吐量會大幅度下降。在某些點,吞吐量變得非常低,以至于無法滿足很多應用的要求。在很多情況下,會分解大規(guī)模矩陣,處理每個小的子矩陣,以解決由于龐大的處理負載造成的吞吐量限制問題。
對于FFT,計算負載增加N log2 N,而數(shù)據I/O隨N增大而增大。對于規(guī)模較大的數(shù)據,GPU是高效的計算引擎。作為對比,數(shù)據長度很短時,F(xiàn)PGA是高效的計算引擎,更適合FFT長度達到數(shù)千的很多應用,對于GPU,F(xiàn)FT長度是數(shù)十萬。
GPU和FPGA設計方法
使用Nvidia的專用CUDA語言或者開放標準OpenCL語言對GPU進行編程。這些語言在能力上非常相似,而最大的不同在于CUDA只能用在Nvidia GPU上。
FPGA通常使用HDL語言Verilog或者VHDL進行編程。這些語言的最新版雖然采用了浮點數(shù)定義,不用進行綜合,但都不太適合支持浮點設計。例如,在System Verilog中,短實數(shù)變量與IEEE單精度(浮點)對應,實數(shù)變量與IEEE雙精度對應。
使用傳統(tǒng)的方法,將浮點數(shù)據通路綜合到FPGA的效率非常低。Xilinx FPGA在Cholesky算法上的性能很低,它使用了Xilinx浮點內核生成功能,這證實了這一點。而Altera采用了兩種不同的方法。第一種使用基于Mathworks的設計輸入,稱之為DSP Builder高級模塊庫。這一工具包含了對定點和浮點數(shù)的支持。它支持7種不同精度的浮點,包括IEEE半精度、單精度和雙精度。它還支持矢量化,這是高效實現(xiàn)線性代數(shù)所需要的。而最重要的是,它能夠將浮點電路高效的映射到目前的定點FPGA體系結構中,如基準測試所示,規(guī)模中等的28 nm FPGA,Cholesky算法接近了100GFLOP/s。作為對比,在不具有綜合能力的規(guī)模相似的Xilinx FPGA上,實現(xiàn)同樣的算法,使用密度相似的FPGA,性能只有20GFLOP/s。
GPU編程人員比較熟悉OpenCL。面向FPGA的OpenCL編譯意味著,面向AMD或者Nvidia GPU編寫的OpenCL代碼可以編譯到FPGA中。Altera的OpenCL編譯器支持GPU程序使用FPGA,不需要熟練的開發(fā)典型的FPGA設計。
使用支持FPGA的OpenCL,相對于GPU有幾個關鍵優(yōu)勢。首先,GPU的I/O是有限制的。所有輸入和輸出數(shù)據必須由主CPU通過PCI接口進行傳輸。結果延時會讓GPU處理引擎暫停,因此,降低了性能。
FPGA以各種寬帶I/O功能而知名。這些功能支持數(shù)據通過千兆以太網和SRIO,或者直接從ADCDAC輸入輸出FPGA。Altera定義了OpenCL標準的供應商專用擴展,以支持流操作。
即使與I/O瓶頸無關,F(xiàn)PGA的處理延時也要比GPU低很多。眾所周知,GPU必須有數(shù)千個線程才能高效的工作。這是由于存儲器讀取很長的延時,以及GPU大量的處理內核之間的延時。實際上,GPU必須有很多任務才能使得處理內核不會暫停等待數(shù)據,否則會導致任務很長的延時。
而FPGA使用了“粗粒度并行”體系結構。它建立了多個經過優(yōu)化的并行數(shù)據通路,每一通路一般在每個時鐘周期輸出一個結果。數(shù)據通路的例化數(shù)取決于FPGA資源,但一般要比GPU內核數(shù)少很多。但是,每一數(shù)據通路例化的吞吐量要比GPU內核高得多。這一方法的主要優(yōu)勢是低延時。降低延時在很多應用中都是關鍵的性能優(yōu)勢。
FPGA的另一優(yōu)勢是很低的功耗,極大的降低了每瓦GFLOP/s。正如BDTI所測量的,Cholesky等復數(shù)浮點算法的每瓦GFLOP/s是每瓦5~6GFLOP/s。一般很難進行GPU能效測量,但是,Cholesky的GPU性能達到50GFLOP/s,典型功耗是200W,得到的結果是0.25每瓦GFLOP/s,單位FLOP/s的功率高20倍。
OpenCL和DSP Builder都依靠“融合數(shù)據通路”這種技術(圖2),以這種技術實現(xiàn)浮點處理,能夠大幅度減少桶形移位電路,從而支持使用FPGA來開發(fā)大規(guī)模高性能浮點設計。


為降低桶形移位頻率,綜合過程盡可能使用較大的尾數(shù)寬度,從而不需要頻率歸一化和去歸一化。27×27和36×36硬核乘法器支持比單精度實現(xiàn)所要求的23位更大的乘法計算,54×54和72×72結構的乘法器支持比52位更大的計算,這通常是雙精度實現(xiàn)所要求的。FPGA邏輯已經針對大規(guī)模定點加法器電路進行了優(yōu)化,包括了內置進位超前電路。
當需要進行歸一化和去歸一化時,另一種可以避免低性能和過度布線的方法是使用乘法器。對于一個24位單精度尾數(shù)(包括符號位),24×24乘法器通過乘以2n對輸入移位。27×27和36×36硬核乘法器支持單精度擴展尾數(shù),可以用于構建雙精度乘法器。
在很多線性代數(shù)算法中,矢量點乘(圖3)是占用大量FLOP/s的底層運算。單精度實現(xiàn)長度是64的長矢量點乘需要64個浮點乘法器,以及隨后由63個浮點加法器構成的加法樹。這類實現(xiàn)需要很多桶形移位電路。


相反,可以對64個乘法器的輸出進行去歸一化,成為公共指數(shù),最大是64位指數(shù)。可以使用定點加法器電路對這些64路輸出求和,在加法樹的最后進行最終的歸一化。如圖3所示,這一本地模塊浮點處理過程省掉了每一加法器所需要的臨時歸一化和去歸一化。即使是IEEE754浮點,最大指數(shù)基本決定了最終的指數(shù),因此,這種改變只是在計算早期進行指數(shù)調整。
但是,進行信號處理時,在計算最后盡可能以高精度來截斷結果才能獲得最佳結果。這種方法進位額外的尾數(shù),補償了單精度浮點處理所需要的早期去歸一化次優(yōu)方法,一般從27位到36位。采用浮點乘法器進行尾數(shù)擴展,因此,在每一步不需要對乘積進行歸一化。
注意,這一方法每個時鐘周期也會產生一個結果。GPU體系結構可以并行產生所有浮點乘法,但是不能高效的并行進行加法。之所以這樣是因為不同的內核必須通過本地存儲器傳輸數(shù)據,彼此實現(xiàn)通信,因此,不能靈活的連接FPGA體系結構。
這一方法產生的結果要比傳統(tǒng)IEEE754浮點結果精確得多,如表3的測量結果所示。BDTI的基準測試獲得了相似的結果。


使用Cholesky分解算法,實現(xiàn)大規(guī)模矩陣求逆,獲得了表3的結果。以三種不同的方法實現(xiàn)了相同的算法——在Matlab/Simulink中,使用了IEEE754單精度浮點,在RTL單精度浮點處理中,使用融合數(shù)據通路方法,在Matlab中也使用了雙精度浮點。雙精度實現(xiàn)要比單精度實現(xiàn)精度高十億倍(109)。
表3對比了Matlab單精度;RTL單精度和Matlab雙精度存在誤差,確認了融合數(shù)據通路方法的完整性。采用了這一方法來獲得輸出矩陣中所有復數(shù)元素的歸一化誤差以及矩陣元素的最大誤差。使用Frobenius范數(shù)計算了總誤差和范數(shù):


請注意,由于范數(shù)包括了所有元素的誤差,因此,它要比每一誤差大很多。
而且,DSP Builder高級模塊庫和OpenCL工具流程都針對下一代FPGA體系結構,支持并優(yōu)化目前的設計。由于體系結構創(chuàng)新和工藝技術創(chuàng)新,性能可以達到100峰值GFLOPs/W。
總結
高性能計算應用現(xiàn)在有新的處理平臺選擇。對于特殊類型的浮點算法,F(xiàn)PGA能夠提供低延時和較高的GFLOP/s。在幾乎所有應用中,F(xiàn)PGA都能夠實現(xiàn)優(yōu)異的每瓦GFLOP/s。隨著下一代高性能計算優(yōu)化FPGA的推出,這種優(yōu)勢會更明顯。
Altera的OpenCL編譯器為GPU編程人員提供了幾乎無縫的方法來評估這一新處理體系結構的指標。Altera OpenCL符合1.2規(guī)范,提供全面的數(shù)據庫支持。它解決了傳統(tǒng)FPGA遇到的時序收斂、DDR存儲器管理以及PCIe主處理器接口等難題。
對于非GPU開發(fā)人員,Altera提供DSP Builder高級模塊庫工具流程,支持開發(fā)人員開發(fā)高Fmax定點或者浮點DSP設計,同時保持了基于Mathworks的仿真和開發(fā)環(huán)境的優(yōu)點。要求高效能工作流程的FPGA開發(fā)人員多年以來一直使用這一產品,與經驗豐富的FPGA開發(fā)人員相比,所實現(xiàn)的Fmax性能相同。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1626

    文章

    21671

    瀏覽量

    601899
  • NVIDIA
    +關注

    關注

    14

    文章

    4940

    瀏覽量

    102818
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4702

    瀏覽量

    128710
收藏 人收藏

    評論

    相關推薦

    FPGA工程師:如何在FPGA實現(xiàn)狀態(tài)機?

    安全高效的狀態(tài)機設計對于任何使用FPGA工程師而言都是一項重要技能。選擇Moore狀態(tài)機、Mealy狀態(tài)機還是混合機取決于整個系統(tǒng)的需求。無論選擇哪種類型的狀態(tài)機,充分掌握實現(xiàn)方案所需的工具和技巧,將確保
    發(fā)表于 03-29 15:02 ?1.3w次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>工程師</b>:如<b class='flag-5'>何在</b><b class='flag-5'>FPGA</b>中<b class='flag-5'>實現(xiàn)</b>狀態(tài)機?

    FPGA優(yōu)化實現(xiàn)復數(shù)浮點計算

      性能浮點處理一直與高性能CPU相關聯(lián)。在過去幾年中,GPU也成為功能強大的浮點處理平臺,超越了圖形,稱為GP-GPU(通用圖形處理單元)。
    發(fā)表于 07-31 09:45 ?1868次閱讀
    在<b class='flag-5'>FPGA</b><b class='flag-5'>上</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>復數(shù)</b><b class='flag-5'>浮點</b><b class='flag-5'>計算</b>

    FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區(qū)別?

    邏輯工程師FPGA 原型驗證工程師在工作重點和職責存在一定的區(qū)別: FPGA 算法工程師
    發(fā)表于 09-23 18:26

    高級FPGA設計 結構、實現(xiàn)優(yōu)化【書籍教材】

    。  這本書把多年推廣到諸多公司和工程師團隊的經驗以及由專門的白皮書和應用要點匯集的許多知識進行濃縮,可以用來完善工程師的知識,幫助他們成為高級的fpga設計者。...高級FPGA設計
    發(fā)表于 03-01 14:59

    FPGA設計之浮點DSP算法實現(xiàn)【賽靈思工程師作品】

    FPGA設計之浮點DSP算法實現(xiàn),DSP算法是很多工程師在設計過程中都會遇到的問題,本文將從FPGA設計的角度來講解
    發(fā)表于 03-01 15:23

    TI工程師掌控自己的電源設計

    TI工程師掌控自己的電源設計
    發(fā)表于 08-04 09:41

    工程師掌控自己的電源設計

    工程師掌控自己的電源設計
    發(fā)表于 04-16 20:48

    工程師掌控自己的電源設計

    工程師掌控自己的電源設計
    發(fā)表于 04-16 20:53

    何在FPGA實現(xiàn)復數(shù)浮點計算

    高性能浮點處理一直與高性能CPU相關聯(lián)。在過去幾年中,GPU也成為功能強大的浮點處理平臺,超越了圖形,稱為GP-GPU(通用圖形處理單元)。新創(chuàng)新是在苛刻的應用中實現(xiàn)基于FPGA
    發(fā)表于 10-21 08:15

    專業(yè)工程師分享FPGA設計中的功率計算技巧速看

    專業(yè)工程師分享FPGA設計中的功率計算技巧速看
    發(fā)表于 05-07 06:16

    FPGA工程師需要具備哪些技能?

    FPGA(Field-Programmable Gate Array)芯片因其具有靈活性、高定制化、高性能等特點,被廣泛應用于數(shù)字系統(tǒng)設計、嵌入式系統(tǒng)、通信系統(tǒng)、計算機視覺等領域。作為FPGA
    發(fā)表于 11-09 11:03

    快速高效的實現(xiàn)浮點復數(shù)矩陣分解

    浮點具有更大的數(shù)據動態(tài)范圍,從而在很多算法中只需要一種數(shù)據類型的優(yōu)勢。本文介紹如何使用Vivado HLS實現(xiàn)浮點復數(shù)矩陣分解。使用HLS可以快速,高效地
    發(fā)表于 11-18 12:00 ?1003次閱讀
    快速高效的<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>浮點</b><b class='flag-5'>復數(shù)</b>矩陣分解

    FPGA優(yōu)化實現(xiàn)復數(shù)浮點計算

    高性能浮點處理一直與高性能CPU相關聯(lián)。在過去幾年中,GPU也成為功能強大的浮點處理平臺,超越了圖形,稱為GP-GPU(通用圖形處理單 元)。新創(chuàng)新是在苛刻的應用中實現(xiàn)基于FPGA
    發(fā)表于 12-04 16:29 ?672次閱讀
     在<b class='flag-5'>FPGA</b><b class='flag-5'>上</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>復數(shù)</b><b class='flag-5'>浮點</b><b class='flag-5'>計算</b>

    何在FPGA實現(xiàn)復數(shù)浮點計算

    高性能浮點處理一直與高性能 CPU 相關聯(lián)。在過去幾年中,GPU 也成為功能強大的浮點處理平臺,超越了圖形,稱為 GPGPU(通用圖形處理單元)。新創(chuàng)新是在苛刻的應用中實現(xiàn)基于 FPGA
    發(fā)表于 12-22 13:33 ?14次下載

    FPGA優(yōu)化實現(xiàn)復數(shù)浮點計算

    基于FPGA浮點處理。本文的重點是FPGA及其浮點性能和設計流程,以及OpenCL的使用,這是高性能浮點
    的頭像 發(fā)表于 06-10 10:15 ?582次閱讀
    在<b class='flag-5'>FPGA</b><b class='flag-5'>上</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>復數(shù)</b><b class='flag-5'>浮點</b><b class='flag-5'>計算</b>