我不明白如何使用FPGA加速算法。目前,我正在四核筆記本電腦上運行耗時的實時算法,以便可以並行執行四個計算。
最近我被警告說FPGA可能會產生更好的性能。我不明白那是怎麼回事。有人可以解釋一下FPGA如何加速算法,以及我應該切換到Xilinx或Altera FPGA解決方案還是繼續在我的四核筆記本電腦上執行計算。通過小波包變換
謝謝大家提供的出色答案。
我不明白如何使用FPGA加速算法。目前,我正在四核筆記本電腦上運行耗時的實時算法,以便可以並行執行四個計算。
最近我被警告說FPGA可能會產生更好的性能。我不明白那是怎麼回事。有人可以解釋一下FPGA如何加速算法,以及我應該切換到Xilinx或Altera FPGA解決方案還是繼續在我的四核筆記本電腦上執行計算。通過小波包變換
謝謝大家提供的出色答案。
我的一位同事對此進行了基準測試,得出的結論是,一旦您完成了大約100多個適合獨立應用程序的 , integer 任務,FPGA的性能將超越PC。 FPGA。對於浮點任務,GPGPU始終優於FPGA。對於狹窄的多線程或SIMD操作,CPU進行了非常優化,並以比FPGA通常所能達到的更高的時鐘速度運行。
其他警告:任務必須獨立。如果任務之間存在數據相關性,那麼這將限制計算的關鍵路徑。 FPGA適用於布爾評估和整數數學以及硬件低延遲接口,但不適用於與內存相關的工作負載或浮點運算。
如果您必須將工作負載保存在DRAM中,則可以瓶頸,而不是處理器。
FPGA的工作原理與處理器完全不同。
對於處理器,您編寫的軟件會告訴硬件該怎麼做。在FPGA上,您內部描述了“硬件外觀”。就像您正在為算法專門製造芯片一樣。
這可以加速很多事情,並且可以降低功耗。但是它有缺點:開發需要更長的時間並且要復雜得多。您需要以完全不同的方式進行思考,並且不能使用直接用於軟件的算法。
對於人工神經網絡而言,FPGA是一個不錯的選擇。在這個領域有很多正在進行的研究。
這在很大程度上取決於算法,但是原理可以很簡單地解釋。
假設您的算法必須對很多8位數字求和。您的CPU仍將需要提取每個指令,從RAM或高速緩存中獲取操作數,執行總和,將結果存儲在高速緩存中,然後繼續進行下一個操作。管道有所幫助,但是您只能執行與內核一樣多的同時操作。
如果使用FPGA,則可以實現大量並行工作的簡單加法器,可能會累加數千個總和。儘管單個操作可能會花費更多時間,但是您具有很高的並行度。
您還可以使用GPGPU來完成類似的任務,因為它們也是由許多更簡單的內核組成。
計算機設備的專業化大約分為3個級別:
CPU(就像您的筆記本電腦一樣)是所有設備中最通用的。它可以做所有事情,但是這種多功能性是以低速和高功耗為代價的。 CPU可以隨時隨地進行編程,指令來自RAM。用於CPU的程序快速,廉價,易於編寫且易於更改。
FPGA(這意味著現場可編程門陣列)是中間層。顧名思義,它可以在工廠外“現場”編程。 FPGA通常會被編程一次,此過程可描述為設置其內部結構。完成此過程後,它的行為就像是一台專門針對您為其選擇的任務的微型計算機。這就是為什麼它的性能要優於通用CPU的原因。對FPGA進行編程非常困難且昂貴,而對其進行調試則非常困難。
ASIC(意味著專用集成電路)是最終的專家。它是為一項任務和僅一項任務而設計和生產的芯片,它可以非常快速,高效地完成任務。無法對ASIC進行重新編程,它使出廠時得到完全定義,並且在不再需要其工作時無用。設計ASIC是只有大公司才能付得起的東西,調試它們是好事,幾乎是不可能的。能完成所有工作的核心。 ASICS通常具有成千上萬個內核,但只有很小的內核,只能具有一件事。
您可以查看比特幣採礦社區。它們執行SHA256哈希。
當然,那些ASIC嬰兒在批量生產時花費近2000美元,但是它為您提供了一個萬事通可以與專家抗衡的想法。
唯一的問題是:FPGA可以為您帶來比設計所需的更多節省嗎?當然,您可以嘗試在20 PCS上運行而不是在一台筆記本電腦上運行。
是的,FPGA在某些特殊任務上可以勝過現代CPU(例如Intel i7),但是有改善神經網絡性能的更簡便,更便宜的方法。
便宜-我的意思是全力以赴,不是FPGA IC的成本,而是FPGA的非常快的存儲空間(神經網絡需要它)和整個開發過程。