CPU,GPU,GPGPU

CPU,GPU,GPGPU

1.基本概念

1.1 GPU

圖形處理器(bai英語:Graphics Processing Unit,縮寫:GPU),又稱顯示核心、視覺du處理器、zhi顯示芯片,是一種專門在個人電腦、工dao作站、遊戲機和一些移動設備(如平板電腦、智能手機等)上圖像運算工作的微處理器。

1.2 CPU

中央處理器(CPU,Central Processing Unit)是一塊超大規模的集成電路,是一臺計算機的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋計算機指令以及處理計算機軟件中的數據。
在這裏插入圖片描述
1.3 GPGPU

GPGPU全稱General Purpose GPU,即通用計算圖形處理器。其中第一個“GP”通用目的(GeneralPurpose)而第二個“GP”則表示圖形處理(GraphicProcess),這兩個“GP”搭配起來即“通用圖形處理”。再加上“U”(Unit)就成爲了完整的通用處理器。 人們一直在尋找各種加速圖像處理的方法,然而受到CPU本身在浮點計算能力上的限制,對於那些需要高密度計算的圖像處理操作,過去傳統的在CPU上實現的方法,並沒有在處理性能與效率上有很大進步。隨着可編程圖形處理器單元(GPU)在性能上的飛速發展,利用GPU加速圖像處理的技術逐漸成爲研究熱點。
在這裏插入圖片描述
GPGPU,帶baiCPU處理能力的GPU。主要是GPU的工作,GPU的能力,可以有協助duCPU的運zhi算的能力,(通用圖形處理)超出daoGPU的能力範圍,甚至完全具備通用的數據處理。能否成爲CPU看是否放在主板上。GPU,用於圖形處理的芯片。(GPU也是一種CPU,,相對於顯卡)早期顯卡是沒有專門用做圖形處理的GPU的,不支持3D。CPU,用於數據處理的芯片(圖形也可以認爲是數據)。中央處理器,一種相對的概念。潛移默化被認定是放在主板上的那顆東西,通過向GPU傳送指令,控制GPU。其實也就是一種微處理器。AMD-APU,加速處理器。集成GPU核心的CPU,並且融合。不同於Intel I系智能(GPU CPU獨立工作)。

  1. 基本原理

2.1 中央處理器(CPU)

中央處理器(CPU,Central Processing Unit)是一塊超大規模的集成電路,是一臺計算機的運算核心(Core)和控制核心( Control nit)。它的功能主要是解釋計算機指令以及處理計算機軟件中的數據。

中央處理器主要包括運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩衝存儲器(Cache)及實現它們之間聯繫的數據(Data)、控制及狀態的總線(Bus)。它與內部存儲器(Memory)和輸入/輸出(I/O)設備合稱爲電子計算機三大核心部件。

CPU的結構主要包括運算器(ALU, Arithmetic and Logic Unit)、控制單元(CU, Control Unit)、寄存器(Register)、高速緩存器(Cache)和它們之間通訊的數據、控制及狀態的總線。

簡單來說就是:計算單元、控制單元和存儲單元,架構如下圖所示:
在這裏插入圖片描述
CPU微架構示意圖
換種表示方法:
在這裏插入圖片描述
CPU微架構示意圖(改)

從字面上我們也很好理解,計算單元主要執行算術運算、移位等操作以及地址運算和轉換;存儲單元主要用於保存運算中產生的數據以及指令等;控制單元則對指令譯碼,並且發出爲完成每條指令所要執行的各個操作的控制信號。

所以一條指令在CPU中執行的過程是這樣的:讀取到指令後,通過指令總線送到控制器(黃色區域)中進行譯碼,併發出相應的操作控制信號;然後運算器(綠色區域)按照操作指令對數據進行計算,並通過數據總線將得到的數據存入數據緩存器(大塊橙色區域)。過程如下圖所示:
在這裏插入圖片描述
CPU遵循的是馮諾依曼架構,其核心就是:存儲程序,順序執行。

講到這裏,有沒有看出問題,沒錯——在這個結構圖中,負責計算的綠色區域佔的面積似乎太小了,而橙色區域的緩存Cache和黃色區域的控制單元佔據了大量空間。

高中化學有句老生常談的話叫:結構決定性質,放在這裏也非常適用。

因爲CPU的架構中需要大量的空間去放置存儲單元(橙色部分)和控制單元(黃色部分),相比之下計算單元(綠色部分)只佔據了很小的一部分,所以它在大規模並行計算能力上極受限制,而更擅長於邏輯控制。

另外,因爲遵循馮諾依曼架構(存儲程序,順序執行),CPU就像是個一板一眼的管家,人們吩咐的事情它總是一步一步來做。但是隨着人們對更大規模與更快處理速度的需求的增加,這位管家漸漸變得有些力不從心。

於是,大家就想,能不能把多個處理器放在同一塊芯片上,讓它們一起來做事,這樣效率不就提高了嗎?

沒錯,GPU便由此誕生了。

2.2 顯卡

顯卡(Video card,Graphics card)全稱顯示接口卡,又稱顯示適配器,是計算機最基本配置、最重要的配件之一。顯卡作爲電腦主機裏的一個重要組成部分,是電腦進行數模信號轉換的設備,承擔輸出顯示圖形的任務。顯卡接在電腦主板上,它將電腦的數字信號轉換成模擬信號讓顯示器顯示出來,同時顯卡還是有圖像處理能力,可協助CPU工作,提高整體的運行速度。對於從事專業圖形設計的人來說顯卡非常重要。 民用和軍用顯卡圖形芯片供應商主要包括AMD(超微半導體)和Nvidia(英偉達)2家。現在的top500計算機,都包含顯卡計算核心。在科學計算中,顯卡被稱爲顯示加速卡。

爲什麼GPU特別擅長處理圖像數據呢?這是因爲圖像上的每一個像素點都有被處理的需要,而且每個像素點處理的過程和方式都十分相似,也就成了GPU的天然溫牀。
在這裏插入圖片描述
從架構圖我們就能很明顯的看出,GPU的構成相對簡單,有數量衆多的計算單元和超長的流水線,特別適合處理大量的類型統一的數據。
再把CPU和GPU兩者放在一張圖上看下對比,就非常一目瞭然了。
在這裏插入圖片描述
GPU的工作大部分都計算量大,但沒什麼技術含量,而且要重複很多很多次。

但GPU無法單獨工作,必須由CPU進行控制調用才能工作。CPU可單獨作用,處理複雜的邏輯運算和不同的數據類型,但當需要大量的處理類型統一的數據時,則可調用GPU進行並行計算。

借用知乎上某大佬的說法,就像你有個工作需要計算幾億次一百以內加減乘除一樣,最好的辦法就是僱上幾十個小學生一起算,一人算一部分,反正這些計算也沒什麼技術含量,純粹體力活而已;而CPU就像老教授,積分微分都會算,就是工資高,一個老教授資頂二十個小學生,你要是富士康你僱哪個?

注:GPU中有很多的運算器ALU和很少的緩存cache,緩存的目的不是保存後面需要訪問的數據的,這點和CPU不同,而是爲線程thread提高服務的。如果有很多線程需要訪問同一個相同的數據,緩存會合並這些訪問,然後再去訪問dram。

2.3 內存

內存是計算機中重要的部件之一,它是與CPU進行溝通的橋樑。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存(Memory)也被稱爲內存儲器,其作用是用於暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。只要計算機在運行中,CPU就會把需要運算的數據調到內存中進行運算,當運算完成後CPU再將結果傳送出來,內存的運行也決定了計算機的穩定運行。 內存是由內存芯片、電路板、金手指等部分組成的。

2.4 顯存

顯存,也被叫做幀緩存,它的作用是用來存儲顯卡芯片處理過或者即將提取的渲染數據。如同計算機的內存一樣,顯存是用來存儲要處理的圖形信息的部件。

2.5
顯卡、顯卡驅動、CUDA之間的關係

顯卡:(GPU)主流是NVIDIA的GPU,深度學習本身需要大量計算。GPU的並行計算能力,在過去幾年裏恰當地滿足了深度學習的需求。AMD的GPU基本沒有什麼支持,可以不用考慮。

驅動:沒有顯卡驅動,就不能識別GPU硬件,不能調用其計算資源。但是呢,NVIDIA在Linux上的驅動安裝特別麻煩,尤其對於新手簡直就是噩夢。得屏蔽第三方顯卡驅動。下面會給出教程。

CUDA:是NVIDIA推出的只能用於自家GPU的並行計算框架。只有安裝這個框架才能夠進行復雜的並行計算。主流的深度學習框架也都是基於CUDA進行GPU並行加速的,幾乎無一例外。還有一個叫做cudnn,是針對深度卷積神經網絡的加速庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章