GPU不能完全取代CPU的最大原因是什麼?

haaooh

GPU取代不了CPU,這是因為它們的功能定位就不一樣,前面也有回答說過,CPU擅長做些複雜的事,如分支預測,GPU擅長做些量大的事,如並行計算。其實換個角度還可以這麼想,GPU為什麼能按照它們的方式工作?

GPU的圖形驅動程序為程序員提供了一個接口,我們通過如DirectX、CUDA、OpenGL、OpenCL、Metal等API進行編程。這個驅動程序有多複雜就不說了,可是你想過沒有,它是在哪上面運行的?

沒錯,就是CPU,即使是GPU能完成全世界上所有的計算,它仍然需要一個CPU來運行GPU驅動,這個驅動會號令GPU該去做些什麼。或許你說,怎麼不在GPU上加一個小CPU來做這些事呢?確實,AMD有自己的APU,它是一個內置了GPU的CPU,英特爾也有自己內置了GPU的CPU,但是它們都沒有一臺只有GPU而不需要某種CPU的計算機。

如果真的只有一個GPU,那麼如何將GPU連接到網絡,如何將GPU連接到打印機,如何讓GPU接受鍵盤輸入的指令等等,這些任務都需要操作系統來運行其它相應的硬件驅動程序,並且此類代碼和交互都需要一個CPU型的處理器來幫助運行。

所以說,GPU不能完全取代CPU的最大原因是,它只有依靠CPU才能實現自己的遠大前程。


超能網

樓主問顛倒了,不是GPU能取代CPU,而是CPU可以取代GPU。

從功能上來說,CPU可以幹GPU的活,而GPU不可以幹CPU的活。最早初,就是沒有GPU顯卡這東西的。

在最早期,例如DOS時代,全是命令行,或者圖形界面剛剛成形的時候,計算與圖形顯示全是由CPU來乾的。那個時候,圖形界面比較簡單,CPU一邊計算一邊顯示還並不太累。

後來,隨著圖形界面越來越複雜,軟件UI、視頻、3D演示、圖片、圖形設計、遊戲等等顯示應用越來越複雜。這個時候CPU一個人幹兩樣活就比較吃力了。為了給CPU減負,於是將GPU獨立了出來。

GPU,即圖形處理器。專門來處理顯示圖形。這樣,CPU就能專心幹計算這種最核心的活了。

GPU如果能幹計算,就不叫GPU了而是直接成CPU了;而CPU本來是可以幹GPU的活的,只是為了效率,而將GPU獨立了出去。樓主明白了嗎?

或許,隨著科技發展,CPU有了更大的發展,二級緩存都能達到2G以上的話,連內存條都可以省了呢。GPU也可能再被集成進來。


全球華人第一神探

GPU集群

GPU擅長的是並行運算,就像搬運東西,人多力量大,同樣的東西100個人搬,肯定比一個人搬來的快。所以在科學領域,GPU通常用來做那些需要海量運算的科研項目。


2010年排名世界第二的"星雲"超級計算機,集成了9280顆因特爾至強X5650和4640顆NVIDIATeslaC2050專用GPU,兼顧速度和精度

CPU擅長的是浮點運算

,追求的是運算的精確度,我們還是用前面的搬運來舉例,CPU是一個體格強壯的巨人,力量很大,但是同一時間它只能搬運一個東西,哪怕這個東西很笨重。所以在同一時間內,CPU的能力再強,也是比不過GPU的多核心並行運算速度的。

當下的情況是,GPU和CPU兩者相互補充,誰也不能替代誰。GPU有並行運算優勢,速度快,但是精度差於CPU,適用於雲服務和大數據處理;CPU特長在於浮點運算,運算精度很高,但是受核心數的限制,單位時間數據處理能力遠低於GPU,適用於國防和航空航天等需要精確控制的領域。

以上屬個人觀點,如有不足,還望指正。


科技騎兵

1.GPU是大量運算單元構成的協處理器.這就意味著GPU擅長高密度並行計算.但程序不是你想並.想並就能並...

a+b=c c+d=e 這種運算不能並...因為第二個式子的一個運算數是第一個式子的結果..必須等第一個算完才能算第二個...

a+b=c d+e=f 這種運算可以並行...因為前後兩式無關...

實際情況中..程序中99%的部分無法並行..想要利用並行...需要毀三觀重新學習並行計算的思路...

以交換a b值的功能為例...常規版本就是 int c=a a=b b=c 三步完成...並行版本是int c=a int d=b a=d b=d 兩步完成...

這非常反人類.人類的計算機財富和發展就是應用軟件的累積.想要重寫所有代碼適應並行計算...不可能的...並且即使做了並行優化...效率提高也遠沒有成倍那麼理想...

但圖形圖像處理略微不同...並行程度十分高...GPU輸入輸出是以紋理為單位...就是物體的一個面的圖...當光慢慢變亮變暗...都是這些紋理上的一個一個點在+1-1...非常具有可並行性....

也就是說...GPU作為通用處理器毫無優勢...但可作為專用處理器替代CPU完成高密度簡單並行計算....

2.實際上CPU的並行計算能力更強...無論是通用還是專用...Xeon E5 48線還是Xeon E7 96線...乃致用超級計算機用的都是通用處理器...性能並不是GPU可以比擬的...但GPU在完成擅長的專用計算的性價比也不是這些CPU可以比擬的....

3.GPU只是一個協處理器...他沒有主動去儲存器拉數據的權限和能力...必須CPU喂他數據和操作指令...而完成各種內部儲存器、外部儲存器、各種設備的協調調度能力等這些CPU的標準功能...並不是一朝一夕的技術實力可以完成的...GPU和CPU雖然名字上有兩個字母相同...但實際上GPU只是CPU中極小的一部分協處理器的擴展模塊...根本不具備替代的可操作性...


ACME63610374577

不過現在的需求完全不一樣了,除了單片機和最簡單的那種邏輯電路之外,完整的計算機系統肯定是有獨立的圖形計算單元的,哪怕現在有些電腦沒有獨立顯卡,但負責圖形計算的GPU也是集成在CPU核心內的,也是獨立的GPU計算單元,因為現在對圖形渲染的需求完全變了,各種3d遊戲啊,影音剪輯啊,都是涉及到複雜的圖形計算,所以基本上不在由CPU兼任這個任務,都設置了單獨的圖形計算單元,為的是提高CPU的效率。而且經過多年的發展,現在GPU(就是你們俗稱的獨顯)其成本也超過了CPU,這也是計算機主流發展的結果。
所以回到題主的問題,不是GPU取代CPU,而是GPU本來就是CPU的一種。


su27水煮蛋

gpu處理器很簡單的。cpu上的算法極少部分可以使用gpu達到類似效果,絕大多數算法gpu做不到的。如果你想深入瞭解就看看gpu結構和計算機原理,還有一篇圖靈的論文,說計算機出現可能性的,被視為計算機的數學基礎。看過了,下次就不會問這些問題了。還有不要說什麼gpu算法,程序員會排隊掐死你的。


灌木叢裡的蜈蚣

CPU的特點:單個任務算的快,但是隻能同時算少量幾個任務。擅長處理各種邏輯計算。

GPU的特點:單個任務算的非常慢,但是能同時執行大量過程相同,數據不同的運算。擅長處理各種簡單的數學運算。


平常用電腦絕大多數都是邏輯運算,要求儘快得到結果,這些活只能CPU來幹。


分享到:


相關文章: