GPU與CPU、顯卡、顯存關係

最近開始接觸雲計算底層GPU虛擬化方面的業務,之前對GPU直通,顯存監控等了解的不多,查閱資料,做下總結。

一、GPU與CPU

GPU 表示 Graphics Processing Unit,即圖像處理單元。一開始的時候GPU 主要用於 3D 遊戲的渲染,但是現在GPU已經廣泛用於加速計算性負載,比如金融模型計算、科學研究以及石油和天然氣開發等。從架構上看,CPU 是由若干核(core)和許多的緩存(cache memory)組成,因此CPU可以並行處理若干線程。相對地,GPU是由幾百個核組成,因此可以併發處理數千個線程。儘管 GPU 的內核數目遠遠超過 CPU,但是它的每個核的處理能力遠小於CPU的核,而且不具有現代操作系統的所需要的一些特性,GPU 並不合適用於處理普通的計算。它們更多地用於計算消耗性操作,比如視頻處理和物理仿真等。

                                          (GPU 和 CPU 對比) 

可以使用 lspci 命令來獲取 GPU PCI 設備:

# lspci -nn | grep NVI
85:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104GL [GRID K2] [10de:11bf] (rev a1)
86:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104GL [GRID K2] [10de:11bf] (rev a1

輸出中各個值的說明:

輸出值 含義 詳細解釋
"85:00.0" 和 “86::00.0” 以 ”bus:slot.func“ 格式來唯一標識一個 PCI 功能設備

唯一定位一個 PCI 設備的虛擬功能,可以是一個物理設備,也可以是一個多功能設備的功能設備,一個多功能設備可以最多有8個功能。

  • 總線號(bus):  從系統中的256條總線中選擇一條,0--255。
  • 設備號(slot):  在一條給定的總線上選擇32個設備中的一個。0--31。
  • 功能號(func):  選擇多功能設備中的某一個功能,有八種功能,0--7。 PCI規範規定,功能0是必須實現的。
”0300“ PCI 設備類型 指 PCI 設備的類型,來自不同廠商的同一類設備的類型碼可以是相同的。
“10de” 供應商識別字段(Vendor ID) 該字段用一標明設備的製造者。一個有效的供應商標識由 PCI SIG 來分配,以保證它的唯一性。Intel 的 ID 爲 0x8086,Nvidia 的 ID 爲 0x10de
“11bf” 設備識別字段(Device ID) 用以標明特定的設備,具體代碼由供應商來分配。本例中表示的是 GPU 圖形卡的設備 ID。
“a1”  版本識別字段(Revision ID) 用來指定一個設備特有的版本識別代碼,其值由供應商提供

二、GPU與顯卡

GPU是顯卡的核心,顯卡,則是由GPU、顯存、電路板,還有BIOS固件組成的,GPU不等於顯卡。

GPU只是顯卡上的一個核心處理芯片,是顯卡的心臟,不能單獨作爲外接擴展卡使用,GPU因並行計算任務較重,所以功耗較大,只能焊接在顯卡的電路板上使用。

顯卡上都有GPU,它是區分顯性能的最主要元件,顯卡也叫顯示適配器,分爲獨立顯卡和主板上集成顯卡,獨立顯卡主要由GPU、顯存和接口電路構成,集成顯卡沒有獨立顯存而是使用主板上的內存。

好果把顯卡的電路板看成主板,GPU就是顯卡上的CPU,即顯卡的中央處理器。

現在的GPU開發廠家只有2個,一個是AMD(ATI),一個是N'VIDIA英偉達。GPU之於顯卡,就相當於CPU之於電腦的關係。

GPU運算時沒有其他CPU那些指令集之類東西干擾,所以專一運算效率更高。

GPU是圖形處理器,一般GPU就是焊接在顯卡上的,大部分情況下,我們所說GPU就等於指顯卡,但是實際情況是GPU是顯示卡的“心臟”,是顯卡的一個核心零部件,核心組成部分。它們是“寄生與被寄生”關係。GPU本身並不能單獨工作,只有配合上附屬電路和接口,才能工作。這時候,它就變成了顯卡。

三、GPU直通

也就是GPU穿透(pass-through),簡單說,GPU直通就是虛擬機實現了將物理顯卡直接映射到虛擬機,這樣你的虛擬機的圖像信息就不再交給虛擬顯卡,而是直接發送到你真是存在的顯卡進行運算,這樣效率更高。

四、GPU虛擬化

虛擬化就是將顯卡進行切片,並將這些顯卡時間片分配給虛擬機使用的過程。有些型號的GPU設備可虛擬化爲n個vGPU,n個虛擬機可同時直接使用該GPU設備,根據不同的GPU設備型號和虛擬策略,可進行GPU獨佔或透傳等相應設計。每個虛擬機通過綁定的vGPU可以直接訪問物理GPU的部分硬件資源(所有vGPU都能夠分時共享訪問物理GPU的3D圖形引擎和視頻編解碼引擎,並擁有獨立的顯存)

五、顯存佔用和GPU監控

nvidia-smi是 Nvidia 顯卡命令行管理套件,基於 NVML 庫,可管理和監控 Nvidia GPU 設備。

這裏推薦一個好用的小工具:gpustat, 直接pip install gpustat即可安裝,gpustat 基於nvidia-smi,可以提供更美觀簡潔的展示,結合 watch 命令,可以動態實時監控GPU 的使用情況。

watch --color -n1 gpustat -cpu

顯存可以看成是空間,類似於內存。

  • 顯存用於存放模型,數據

  • 顯存越大,所能運行的網絡也就越大

GPU 計算單元類似於 CPU 中的核,用來進行數值計算。

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