1. 程式人生 > >什麼是GPU 加速?

什麼是GPU 加速?

1、什麼是GPU加速計算

 GPU,又稱顯示核心、視覺處理器、顯示晶片,是一種專門在個人電腦、工作站、遊戲機和一些移動裝置(如平板電腦、智慧手機等)上影象運算工作的微處理器,與CPU類似,只不過GPU是專為執行復雜的數學和幾何計算而設計的,這些計算是圖形渲染所必需的。隨著人工智慧的發展,如今的GPU已經不再侷限於3D圖形處理了。GPU 加速計算是指同時利用圖形處理器 (GPU) 和 CPU,加快科學、分析、工程、消費和企業應用程式的執行速度。GPU 加速器於 2007 年由 NVIDIA® 率先推出,現已在世界各地為政府實驗室、高校、公司以及中小型企業的高能效資料中心提供支援。GPU 能夠使從汽車、手機和平板電腦到無人機和機器人等平臺的應用程式加速執行。

2、GPU與CPU的效能比較

理解 GPU 和 CPU 之間區別的一種簡單方式是比較它們如何處理任務。CPU 由專為順序序列處理而優化的幾個核心組成,而 GPU 則擁有一個由數以千計的更小、更高效的核心(專為同時處理多重任務而設計)組成的大規模平行計算架構。

GPU的特點是有大量的核(多達幾千個核)和大量的高速記憶體,最初被設計用於遊戲,計算機影象處理等。GPU主要擅長做類似影象處理的平行計算,所謂的“粗粒度並行(coarse-grainparallelism)”。這個對於影象處理很適用,因為畫素與畫素之間相對獨立,GPU提供大量的核,可以同時對很多畫素進行並行處理。但這並不能帶來延遲的提升(而僅僅是處理吞吐量的提升)。比如,當一個訊息到達時,雖然GPU有很多的核,但只能有其中一個核被用來處理當前這個訊息,而且GPU核通常被設計為支援與影象處理相關的運算,不如CPU通用。GPU主要適用於在資料層呈現很高的並行特性(data-parallelism)的應用,比如GPU比較適合用於類似蒙特卡羅模擬這樣的並行運算。

CPU和GPU本身架構方式和運算目的不同導致了CPU和GPU之間的不同,主要不同點列舉如下。

更形象點的說法是:

現在全班要去春遊,你有一輛保時捷和一輛大巴:保時捷只有四個座位,但半個小時就到了;大巴有50個座位,但要一個多小時。為了讓全班儘早過去,大巴一定是首選。從計算的角度看,各位的CPU就是保時捷,GPU就是大巴。GPU每個核心都很弱,但眾多的核心還是讓GPU在平行計算上擁有了相當的優勢。另外一點,GPU有相當的價格優勢。單純從浮點數計算能力來看,不到300塊的GT430(91.564G)已經接近於一兩千塊的i7(107.6G)。

3、如何部署 GPU 加速應用

理解 CPU 與 GPU 之間區別的一種簡單方式就是對比它們如何處理任務。 CPU 由專為順序序列處理而優化的幾個核心組成。另一方面,GPU 則由數以千計的更小、更高效的核心組成,這些核心專為同時處理多工而設計。

如何利用 GPU 實現加速

 

4、CPU 對陣 GPU

理解 CPU 與 GPU 之間區別的一種簡單方式就是對比它們如何處理任務。 CPU 由專為順序序列處理而優化的幾個核心組成。另一方面,GPU 則由數以千計的更小、更高效的核心組成,這些核心專為同時處理多工而設計。

GPU 擁有數以千計的核心,可高效地處理並行任務

GPU 擁有數以千計的核心,可高效地處理並行任務

5、GPU的優勢

上面已經介紹的很詳細。因為GPU的特點特別適合於大規模並行運算,GPU在“深度學習”領域發揮著巨大的作用,因為GPU可以平行處理大量瑣碎資訊。深度學習所依賴的是神經系統網路——與人類大腦神經高度相似的網路——而這種網路出現的目的,就是要在高速的狀態下分析海量的資料。例如,如果你想要教會這種網路如何識別出貓的模樣,你就要給它提供無數多的貓的圖片。而這種工作,正是GPU晶片所擅長的事情。而且相比於CPU,GPU的另一大優勢,就是它對能源的需求遠遠低於CPU。GPU擅長的是海量資料的快速處理。

將GPU加速器用於機器學習的早期使用者包括諸多規模的網路和社交媒體公司,另外還有資料科學和機器學習領域中一流的研究機構。與單純使用CPU的做法相比,GPU具有數以千計的計算核心、可實現10-100倍應用吞吐量,因此GPU已經成為資料科學家處理大資料的處理器。

6、GPU的劣勢

簡單地講,不是所有運算都可以並行化,其實這也是平行計算的弱勢。但幾乎所有矩陣運算都有並行化的可能,所以Machine Learning的很多方法移植到GPU還是相當有搞頭的。

7、現狀與趨勢

 工業與學術界的資料科學家已將GPU用於機器學習以便在各種應用上實現開創性的改進,這些應用包括影象分類、視訊分析、語音識別以及自然語言處理等等。尤其是深度學習,人們在這一領域中一直進行大力投資和研究。深度學習是利用複雜的多級「深度」神經網路來打造一些系統,這些系統能夠從海量的未標記訓練資料中進行特徵檢測。
    雖然機器學習已經有數十年的歷史,但是兩個較為新近的趨勢促進了機器學習的廣泛應用:海量訓練資料的出現以及GPU計算所提供的強大而高效的平行計算。人們利用GPU來訓練這些深度神經網路,所使用的訓練集大得多,所耗費的時間大幅縮短,佔用的資料中心基礎設施也少得多。GPU還被用於執行這些機器學習訓練模型,以便在雲端進行分類和預測,從而在耗費功率更低、佔用基礎設施更少的情況下能夠支援遠比從前更大的資料量和吞吐量。

目前大量的開發語言如R、Python等的機器學習/深度學習框架和包都支援GPU,比如,TensorFlow,Theano,scikit-learn 等等。