談談GPU與FPGA的一些看法



從幾個方面來介紹一下GPU和FPGA。

峰值性能來說,GPU(10Tflops)遠遠高於FPGA(<1TFlops)。GPU上面成千上萬個core同時跑在GHz的頻率上還是非常壯觀的,最新的GPU峰值性能可達10TFlops以上。GPU的架構經過仔細設計(例如使用深度流水線,retiming等技巧),在電路實現上是基於標准單元庫而在critical path上可以用手工定制電路,甚至在必要的情形下可以讓半導體fab依據設計需求微調工藝制程,因此可以讓許多core同時跑在非常高的頻率。相對而言,FPGA首先設計資源受到很大的限制,例如GPU如果想多加幾個core只要增加芯片面積就行,但FPGA一旦你型號選定了邏輯資源上限就確定了(浮點運算在FPGA里會占用很多資源)。而且,FPGA里面的邏輯單元是基於SRAM-查找表,其性能會比GPU里面的標准邏輯單元差好多。最后,FPGA的布線資源也受限制(有些線必須要繞很遠),不像GPU這樣走ASIC flow可以隨意布線,這也會限制性能。

除了芯片性能外,GPU相對於FPGA還有一個優勢就是內存接口。GPU的內存接口(傳統的GDDR,最近更是用上了HBM和HBM2)的帶寬遠好於FPGA的傳統DDR接口,而眾所周知服務器端機器學習算法需要頻繁訪問內存。


但是從靈活性來說,FPGA遠好於GPU。FPGA可以根據特定的應用去編程硬件(例如如果應用里面的加法運算非常多就可以把大量的邏輯資源去實現加法器),但是GPU一旦設計完那就沒法改動了,沒法根據應用去調整硬件資源。目前機器學習大多數適合使用SIMD架構(即只需一條指令可以平行處理大量數據),因此用GPU很適合。但是有些應用是MISD(即單一數據需要用許多條指令平行處理,微軟在2014年ISCA paper里面就舉了一個MISD用於並行提取feature的例子),這種情況下用FPGA做一個MISD的架構就會比GPU有優勢。不過FPGA的編程對於程序員來說並不容易,所以為了能讓機器學習程序員能方便地使用FPGA往往還需要在FPGA公司提供的編譯器基礎上進行二次開發,這些都是只有大公司才能做。

FPGA實現的機器學習加速器在架構上可以根據特定應用優化所以比GPU有優勢,但是GPU的運行速度(>1GHz)相比FPGA有優勢(~200MHz)。


所以,對於平均性能,看的就是FPGA加速器架構上的優勢是否能彌補運行速度上的劣勢。如果FPGA上的架構優化可以帶來相比GPU架構兩到三個數量級的優勢,那么FPGA在平均性能上會好於GPU。例如,百度在HotChips上發布的paper顯示,GPU的平均性能相比FPGA在矩陣運算等標准batch data SIMD bench上遠好於FPGA;但是在處理服務器端的少量多次處理請求(即頻繁請求但每次請求的數據量和計算量都不大)的場合下,平均性能會比GPU更好。


功耗方面,雖然GPU的功耗(200W)遠大於FPGA的功耗(10W),但是如果要比較功耗應該比較在執行效率相同時需要的功耗。如果FPGA的架構優化能做到很好以致於一塊FPGA的平均性能能接近一塊GPU,那么FPGA方案的總功耗遠小於GPU,散熱問題可以大大減輕。反之,如果需要二十塊FPGA才能實現一塊GPU的平均性能,那么FPGA在功耗方面並沒有優勢。

能效比的比較也是類似,能效指的是完成程序執行消耗的能量,而能量消耗等於功耗乘以程序執行的時間。雖然GPU的功耗遠大於FPGA的功耗,但是如果FPGA執行相同程序需要的時間比GPU長幾十倍,那FPGA在能效比上就沒有優勢了;反之如果FPGA上實現的硬件架構優化得很適合特定的機器學習應用,執行算法所需的時間僅僅是GPU的幾倍或甚至於接近GPU,那么FPGA的能效比就會比GPU強。

文章參考來源:GPU以及FPGA技術相關網站


版權所有權歸卿萃科技 杭州FPGA事業部,轉載請注明出處

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA極客空間 微信公眾號


掃描二維碼關注杭州卿萃科技FPGA極客空間


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM