FPGA與GPU在將來嵌入式應用中誰能更勝一籌?

另想請教一些世俗的問題:比如就業面,就業難度,發展深度,可持續性

當然考慮這些問題又不得不考慮其本身學術特性,比如功耗,效率等問題,目前我剛進實驗室,需要從這兩個研究方向上擇其一

本是世俗之人,可能無意繼續深造,故想探究一些非學術性上的問題,還請各位前輩指路 ^ ^


其它人好像沒回答就業問題?那我來回答一下。要就業當然遠GPU,因為好轉CS.


做技術的話,就要做到最好,盡量向金字塔最上邊爬。

站在沙子里是不可能比較出哪個金字塔更好的。

不知道你看過那個笑話沒:魯迅《「人話」》:是大熱天的正午,一個農婦做事做得正苦,忽而嘆道:「皇后娘娘真不知道多麼快活。這時還不是在床上睡午覺,醒過來的時候,就叫道:太監,拿個柿餅來!』」

[火星轉載]皇后娘娘的柿餅子——所謂「民間想像」


題主提到「嵌入式應用」,那主要考慮的是以後在工業界混吧。

目前來看,GPU和FPGA的優勢和劣勢有:

GPU:並行計算能力強,並且高級語言的使用可使開發人員將精力集中在演算法研究和實現上,缺點就是,能耗很高,這在工業應用或者大規模使用上是個非常頭疼的問題;

FPGA:早期主要是作為數字邏輯器件使用,現在可以理解為使用硬體來實現軟體演算法,在並行計算速度上當然沒話說;但是,要實現起來十分困難,程序的每一句其實都是實際的硬體模塊,這就給複雜演算法的實現帶來了太多的限制。但是它的優勢就是功耗非常低,工業應用上有很大的發展前景;

在未來的嵌入式應用中,這兩者的發展很有可能:

1. 複雜演算法的處理主要集中在GPU平台,因為開發速度快、並行計算能力好;FPGA的複雜演算法開發周期比較長,並且很大部分仍然停留在理論模型階段;

2. 在GPU和CPU上的演算法如圖像處理等有部分會逐漸在FPGA上實現,這個可以在ICCV、CVPR等會議論文中看看規律;

3. GPU可能會逐漸發展為兩條路,一條主攻高端複雜演算法的實現,設計靈活性確實比FPGA要好很多;第二條路是通用性演算法平台,將能耗降下來,而FPGA的高端器件中也逐漸增加DSP、ARM核等高級模塊,以實現較為複雜的演算法;

總而言之,不要想得太複雜,兩條路都很好走,主要看自己的興趣,只要自己不斷學習、做好自己的工作就業就不會有問題。另外,科技的發展從來都是不斷創新不斷融合的過程,此刻我們在討論這個問題,下一刻說不定這些東西就都不存在了。


補充一下前面的答案。


1.就能耗而言,gpu和fpga是一個量級的


2.就價格而言,fpga更高一些


3.就生命周期而言,目前gpu換代太快,版本兼容性太差

4.計算能力上,gpu有上限,fpga相對無上限


5.實時性gpu差fpga太遠


6.複雜演算法實現容易程度,fpga差太遠


7.fpga一般用來實現穩定成熟的流處理演算法和形形色色的外設控制,gpu一般用於複雜多變的流處理演算法,如果不適合流處理,還是dsp合適。


你們還不知道「賽」家的 Vivado HLS 和 SDAccel 吧


兩者的工作原理是完全不同的,FPGA用硬體描述語言VDHL,經過綜合,mapping實現的是不同的數字電路功能,而GPU的程序是用C等軟體編程語言開發,經過編譯,鏈接成為你GPU能看得懂的二進位碼,但GPU裡面的數字電路是不變的,但他比CPU的優勢在於有更多的專用電路和流水線,更大帶寬,以便更快的處理數據。

單從原理上說,FPGA的速度肯定更快,因為每一個演算法他能生成對應的register和組合邏輯門的組合來實現的,簡單粗暴!而你GPU靈活性就沒這麼好了,要一條條的讀取指令,分析指令,儲存運算對象,再把他放到在通用ALU去處理。。。

不談兩者價格比較,FPGA還是有他的局限,主要是開發複雜演算法難道大,增加了開發周期,用軟體很好實現的演算法,可能放到硬體上可能會變的很難。


當然選GPU, 理由如下:

1. FPGA歷經多年發展依舊是現在是半死不活的樣子(就業崗位數量上),肯定是有其缺陷的,最主要的問題就是貴,開發周期長,不好上手。 而GPU,尤其GPGPU的概念才提出來沒多久,在各行各業中的應用潛力都還有待開發,傳統演算法的並行化是個很火的技術熱點。在大數據時代,至少是一項很有希望的數據分析技術備選。

2. 就算將來gpu不行了,你攢的c cpp方面的經驗也能很快應用於其它編程領域。vdhl or verilog 離了fpga還能幹嘛。。。。


推薦閱讀:

一個人,竭盡全力的去做一件事情,結果失敗了,改怎麼辦?
依照目前的形勢,嵌入式開發與 web 開發哪個更順應未來的趨勢?
嵌入式學習指南??
馬上奔三了,感覺壓力好大,是繼續做技術呢還是轉行?(本人嵌入式開發)
什麼是串口透傳?

TAG:圖像處理 | 嵌入式系統 | 現場可編輯邏輯門陣列FPGA | 圖形處理器GPU | 嵌入式開發 |