一、GPU與CPU孰強孰弱?
GPU是替代不了CPU的,同樣,CPU也替代不了GPU。如果形象點理解,GPU就像一群螞蟻,這些螞蟻都做著同樣的事,而CPU就像一隻猴子,這隻猴子做著各種不同的事。從根本上說CPU和GPU它們的目的不同,且有不同側重點,也有著不同的性能特性,在某些工作中CPU執行得更快,另一工作中或許GPU能更好。當你需要對大量數據做同樣的事情時,GPU更合適,當你需要對同一數據做很多事情時,CPU正好。 然而在實際應用中,後一種情形更多,也就是CPU更為靈活能勝任更多的任務。GPU能做什麼?關於圖形方面的以及大型矩陣運算,如機器學習算法、挖礦、暴力破解密碼等,GPU會有所幫助。 簡單地說,CPU擅長分支預測等複雜操作,GPU擅長對大量數據進行簡單操作。一個是複雜的勞動,一個是大量並行的工作。 其實GPU可以看作是一種專用的CPU,專為單指令在大塊數據上工作而設計,這些數據都是進行相同的操作。 要知道處理一大塊數據比處理一個一個數據更有效,執行指令開銷也會大大降低,因為要處理大塊數據,意味著需要更多的電晶體來並行工作,現在旗艦級顯卡都是百億以上的電晶體。CPU呢,它的目的是儘可能快地在單個數據上執行單個指令。由於它只需要使用單個數據單條指令,因此所需的電晶體數量要少得多。 目前主流桌面CPU電晶體都是十億以下,和頂級GPU相差十倍以上,但它需要更大的指令集,更複雜的ALU(算術邏輯單元),更好的分支預測,更好的虛擬化架構、更低的延遲等等。 另外,像我們的作業系統Windows,它是為x86處理器編寫的,它需要做的任務執行的進程,在CPU上肯定更為高效,你想每個線程的任務並不相同,基本上難以並行化,完全發揮不了GPU的長處。 那麼,可以預見在未來,隨著CPU進一步強化處理數據塊的能力,我們將看到CPU和GPU架構之間的融合,而且隨著製造技術的進步和晶片的縮小,GPU也可以承擔更複雜的指令。GPU一推出就包含了比CPU更多的處理單元,更大的帶寬,使得其在多媒體處理過程中能夠發揮更大的效能。例如:當前最頂級的CPU只有4核或者6核,模擬出8個或者12個處理線程來進行運算,但是普通級別的GPU就包含了成百上千個處理單元,高端的甚至更多,這對於多媒體計算中大量的重複處理過程有著天生的優勢。下圖展示了CPU和GPU架構的對比。
從硬體設計上來講,CPU由專為順序串行處理而優化的幾個核心組成。另一方面,GPU則由數以千計的更小、更高效的核心組成,這些核心專為同時處理多任務而設計。
通過上圖我們可以較為容易地理解串行運算和並行運算之間的區別。傳統的串行編寫軟體具備以下幾個特點:要運行在一個單一的具有單一中央處理器(CPU)的計算機上;一個問題分解成一系列離散的指令;指令必須一個接著一個執行;只有一條指令可以在任何時刻執行。而並行計算則改進了很多重要細節:要使用多個處理器運行;一個問題可以分解成可同時解決的離散指令;每個部分進一步細分為一系列指示;每個部分的問題可以同時在不同處理器上執行。 舉個生活中的例子來說,你要點一份餐館的外賣,CPU型餐館用一輛大貨車送貨,每次可以拉很多外賣,但是送完一家才能到下一家送貨,每個人收到外賣的時間必然很長;而GPU型餐館用十輛小摩託車送貨,每輛車送出去的不多,但是並行處理的效率高,點餐之後收貨就會比大貨車快很多。
『本文轉載自網絡,版權歸原作者所有,如有侵權請聯繫刪除』