天天看點

GPU揭秘:深入剖析概念、工作原理以及與CPU的驚人差異

作者:大資料與人工智能分享

在最近幾個月裡,幾乎所有行業的同仁都已經認識到了ChatGPT的驚人能力。你是否了解,ChatGPT之是以如此強大,是因為它運用了成千上萬張NVIDIA Tesla A100顯示卡進行人工智能推理和圖形計算。

探索GPU的奇妙世界:簡明解讀,精彩不容錯過!

GPU是什麼?

GPU的英文全稱Graphics Processing Unit,圖形處理單元。

說直白一點:GPU是一款專門的圖形處理晶片,做圖形渲染、數值分析、金融分析、密碼破解,以及其他數學計算與幾何運算的。GPU可以在PC、工作站、遊戲主機、手機、平闆等多種智能終端裝置上運作。

GPU和顯示卡的關系,就像是CPU和主機闆的關系。前者是顯示卡的心髒,後者是主機闆的心髒。有些小夥伴會把GPU和顯示卡當成一個東西,其實還有些差别的,顯示卡不僅包括GPU,還有一些顯存、VRM穩壓子產品、MRAM晶片、總線、風扇、外圍裝置接口等等。

GPU揭秘:深入剖析概念、工作原理以及與CPU的驚人差異

GPU和CPU誰最強呢?

GPU(圖形處理器)和CPU(中央處理器)是兩種不同的硬體裝置,各自在不同的領域有着不同的優勢。它們的性能和強大程度取決于具體的應用場景和任務。

CPU是一種通用處理器,主要負責執行各種計算和控制任務。它在單線程任務和複雜邏輯計算方面表現出色,具有更高的時鐘頻率和更大的緩存容量,使其在串行處理任務上表現優秀。是以,對于一些對單線程性能要求高、需要進行複雜邏輯計算或控制流程的任務,CPU是更适合的選擇。

GPU是一種專用處理器,旨在進行圖形渲染和并行計算。它具有大量的處理核心(CUDA核心),能夠同時處理多個任務,并行地執行大規模的浮點運算。這使得GPU在高性能計算、機器學習、深度學習等需要大規模并行計算的任務上表現出色。對于這些需要大規模并行計算的任務,GPU通常比CPU更強大。

接下來,我們做個簡單的對比。

  • 結構組成不同

CPU和GPU都是運算的處理器,在架構組成上都包括3個部分:運算單元ALU、控制單元Control和緩存單元Cache。

但是,三者的組成比例卻相差很大。

在CPU中緩存單元大概占50%,控制單元25%,運算單元25%;

在GPU中緩存單元大概占5%,控制單元5%,運算單元90%。

GPU揭秘:深入剖析概念、工作原理以及與CPU的驚人差異

結構組成上的巨大差異說明:CPU的運算能力更加均衡,但是不适合做大量的運算;GPU更适合做大量運算。

這倒不是說GPU更牛X,實際上GPU更像是一大群工廠流水線上的勞工,适合做大量的簡單運算,很複雜的搞不了。但是簡單的事情做得非常快,比CPU要快得多。

相比GPU,CPU更像是技術專家,可以做複雜的運算,比如邏輯運算、響應使用者請求、網絡通信等。但是因為ALU占比較少、核心少,是以适合做相對少量的複雜運算。

GPU揭秘:深入剖析概念、工作原理以及與CPU的驚人差異
  • 緩存不同
  • 在CPU裡面,大概50%是緩存單元,并且是四級緩存結構;而在GPU中,緩存是一級或者二級的。
  • 浮點運算方式不同
  • CPU性能更加注重線程的性能,在控制部分做的事情較多,這樣做就是為了確定控制指令不能中斷,在浮點計算上功耗少。相較于CPU,GPU的結構更為簡單,基本上它也隻做單精度或雙精度浮點運算。GPU的運算速度更快,吞吐量也更高。
  • 響應方式不同
  • CPU基本上是實時響應,采用多級緩存來保障多個任務的響應速度。GPU往往采用的是批處理的機制,即:任務先排好隊,挨個處理。

    GPU對于圖形處理我們假設在實時渲染中,一幀1080*720P的圖檔,那麼這張圖就有大概777600個像素點。如果按照最基本的24幀/秒的幀率計算。1秒鐘就要求計算機處理18662400個,即:1866.24萬個像素點。這還是高清的情況下,如果是1090*1080、2K、4K甚至8K的視訊渲染,可想而知,這個計算量是何其巨大。尤其是在像遊戲這樣的實時渲染場景下,顯然僅僅依靠CPU渲染是會逾時的。實際上,在螢幕中顯示的三維物體都要經過多重的坐标變換,并且物體的表面會受到環境中各種光線的影響,呈現不同的顔色和陰影。這就包括了光線的漫射、折射、透射、散射等。

    接下來,我們以英偉達NVIDIA RTX3090 為例,看下GPU是如何進行渲染的。RTX3090的流式多處理器有10496個,每個核心都有具備整數運算和浮點運算的部分,還有用于在操作數中排隊和收集結果的部分。所謂流式多處理器可以認為是一個獨立的任務處理單元,也可以認為一顆GPU包含了10496個CPU同時處理各個圖檔處理任務。

    我們就可以通過算法和程式,對1秒鐘18662400個像素點的整體任務進行切割分片,讓10496顆處理器并行計算。這樣的話,每個處理器負責大概每秒處理18662400/10496,即1778個像素點的渲染任務就行了。如下圖所示,在GPU中會劃分為多個流式處理區,每個處理區包含數百個核心,每個核心相當于一顆簡化版的CPU,具備整數運算和浮點運算的功能,以及排隊和結果收集功能。

    注意,除了流處理器CUDA以外,影響GPU性能的還有

  • 核心頻率:頻率越高,性能越強、功耗也越高。
  • 顯示位寬:機關是bit,位寬決定了顯示卡同時可以處理的資料量,越大越好。
  • 顯存容量:顯存容量越大,代表能緩存的資料就越多。
  • 顯存頻率:機關是MHz或bps,顯存頻率越高,圖形資料傳輸速度就越快。
  • 總結一言以蔽之,GPU不管是處理圖形渲染、數值分析,還是處理AI推理。底層邏輯都是将極為繁重的數學進行任務拆解,化繁為簡。然後,利用GPU多流處理器的機制,将大量的運算拆解為一個個小的、簡單的運算,并行處理。我們也可以認為一個GPU就是一個叢集,裡面每個流處理器都是一顆CPU,這樣就容易了解了。

    以上是關于GPU概念、工作原理的簡要介紹。說是簡單,其實在圖形處理方面,還有很多深層次的處理邏輯沒有展開,比如像素位置變換、三角原理等等。

繼續閱讀