那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是GPU及其分類?GPU如何演化為通用計算平臺?

Linux閱碼場 ? 來源:GPU and Computing ? 作者:GPU and Computing ? 2021-06-15 10:37 ? 次閱讀

在前面文章中,我們交代了計算平臺相關的一些基本概念以及為什么以GPU為代表的專門計算平臺能夠取代CPU成為大規模并行計算的主要力量。在接下來的文章中,我們會近距離從軟硬件協同角度討論GPU計算如何開展。跟先前的文章類似,筆者會采用自上而下,從抽象到具體的方式來論述。希望讀者不只是對GPU計算能有所理解,而且能夠從中了解可以遷移到其它計算平臺的知識,此是筆者之愿景,能否實現一二,還懇請各位看官不斷反饋指正,歡迎大家在后臺留言交流。在本文中,我們首先介紹下GPU及其分類,并簡單回顧下GPU繪制流水線的運作,最后又如何演化為通用計算平臺。

一,什么是GPU及其分類

按維基百科定義,GPU(Graphics Processing Unit,圖形處理器)是一種專門在個人電腦、工作站、游戲機和一些移動設備(如平板電腦、智能手機等)上運行繪圖運算工作的微處理器。為了以后討論方便,這里先給市面的GPU按配置大致做個分類,分類之間界限比較模糊,不一定完全準確。

獨立GPU(Discrete GPU),或者獨立顯卡。是指GPU通過PCI Express或者早期的AGP、PCI等擴展接口與主板連接。所謂的“獨立”即是指顯卡內的RAM只會被該GPU專用,而不是指顯卡是否可從主板上移除。由于尺寸和重量的限制,供筆記本電腦使用的獨立GPU通常會通過非標準的接口作連接,然而由于邏輯接口相同,這些接口仍會被視為PCIE,即使在物理上它們是不可與其他顯卡互換。一些專門的GPU互聯技術,如NVIDIA的SLI、NVLink和AMD的CrossFire等允許多個獨立GPU協同工作,可顯著增強設備的圖形處理能力。獨立GPU價格高,體積大,功耗高,但性能更強勁,而且因為自帶顯存,消耗的系統資源也更少。

poYBAGDIFBaAD9kXAACdmyzLWsk142.jpg

集成GPU(Integrated GPU), 或者集成顯卡。是集成在主板或CPU上的GPU,運行時會占用部分的系統內存,相比起使用獨立顯卡的方案,這種方案較為便宜,但性能也相對較低。從2009年開始,集成GPU已經從主板移至CPU了,Intel將之稱為HD Graphics(核芯顯卡),AMD也推出了集成了CPU和GPU的APU。將GPU集成至處理器的好處是可以降低功耗,提升性能。隨著技術的成熟,目前的集成GPU已經足夠應付基本3D的需求,不過由于仍然依賴主板本身的RAM,相比獨立顯卡,訪存帶寬始終是個不小的限制。

poYBAGDIFDaABYpSAAB-PiGJoeQ717.jpg

移動GPU(Mobile GPU)。在移動設備領域,隨著手機以及平板電腦等設備對圖形處理能力的需求越來越高,GPU也成為移動處理器(SoC)的標配,高通、Imagination和ARM等等都在這個領域大顯身手。我們在以前的文章提到過,蘋果拋棄Imagination的PowerVR IP,在新近的產品采用自研GPU,也成為一股不可忽視的力量。因為移動設備散熱和電

供電的限制,功耗是GPU設計首要考慮的問題,所以移動GPU相比其它GPU架構方面會有不小差異。

以后談到GPU計算的時候,我們主要還是以高性能為訴求。所以如果上下文沒有特別說明,我們一般都是針對獨立GPU。

二,GPU繪制流水線

在這節我們會簡單的介紹GPU的繪制流水線(Rendering Pipeline),GPU就是為圖形繪制加速而生,知道它的來龍去脈,有助于我們理解在其基礎之上衍生的GPGPU。GPU繪制的過程,類似我們生活中拍照和寫生,是有關如何把三維空間的場景在二維的屏幕上能盡量真實的呈現出來。我們以寫生來做譬喻,針對特定場景輸入,擇一視點,取景構圖,按照透視比例通過點線面勾勒出物體的邊界和輪廓,確定明暗色調,注意遠近關系多層次描繪。

與采用畫筆、相機等工具不同,3D圖形程序通過調用OpenGL(ES)、Direct3D或者Vulcan API的接口函數來同GPU硬件交互。為方便論述又不失代表性,下圖是一個相對目前GPU簡化的繪制管線,基本上相當于OpenGL(ES) 2.0或者Direct3D 9.0的規格,繪制管線主要有以下步驟構成。值得注意的是,管線分為可編程單元以及固定功能(fixed function)單元,后者優化處理管線中不容易并行化的工作,顯然各種Shader都在可編程單元執行。

pYYBAGDIFECANH7EAAEECgnMG4A704.jpg

頂點數據輸入。3D程序需要的三維場景可以通過3ds Max、Maya等專業軟件來建模,生成的模型可以有成千上萬個三角面片網格構成,其中不僅規定頂點的位置、顏色、紋理坐標和法向量等等屬性也包括它們之間的連接信息。模型導入3D程序以后,就可以成為3D程序的頂點數據流,頂點數據為為后面的Vertex Shader等階段提供待處理的數據。

Vertex Shader(頂點著色器)。Vertex Shader的主要功能是對頂點屬性進行變換,包括頂點位置的坐標轉換,從局部坐標統一到世界坐標并切換到視點坐標以至裁剪坐標。以前也在Vertex Shader進行光照顏色計算,但是由于不夠真實,目前一般移到Fragment Shader階段才發生。Vertex Shader的輸入輸出都是頂點。

Primitive Setup(圖元裝配)和Rasterization(光柵化)。圖元裝配是將變換后的的頂點根據連接信息組裝成指定的圖元。圖元裝配階段會進行裁剪(clip)和背面剔除(backface culling)相關的優化,可以減少不必要的工作量。另外還需要透視除法(Perspective Division)達到透視效果,然后通過視口變化(Viewport Transformation)最終得到頂點的屏幕坐標。在光柵化階段,基本圖元被轉換為一組二維的片元(fragment),片元表示將來可以被渲染到屏幕上的像素,它包含有位置,顏色,紋理坐標等信息,這些屬性是由圖元的相關頂點信息進行插值計算得到的。這些片元接著被送到Fragment Shader處理。

Fragment Shader(片元著色器)。片元著色器用來決定屏幕上潛在像素的最終顏色。在這個階段會依據紋理坐標進行紋理采樣、計算光照以及處理陰影等等,是繪制管線產生高級效果所在。

測試合成。測試合成是繪制管線的最后一個步驟。主要測試有裁剪測試(Scissor Test)、模板測試(Stencil Test)以及深度測試(Depth Test),深度測試就是確認進入的片元有沒有被Framebuffer(幀緩存)同樣位置的像素遮擋。通過最終測試的片元會進入合成階段,就是進入的片元和Framebuffer已有的像素進行混合,根據顏色的Alpha值取代現有像素或混合產生半透明的效果。Alpha表示的是物體的透明度。測試合成階段不是可編程的,但是我們依舊可以通過3D API提供的接口函數進行動態配置,并進一步定制測試和混合的方式。

poYBAGDIFEeAE_paAAB8TWEFoU0070.jpg

上面的步驟針對接口函數其中一個繪制命令,而一幀畫面一般需要很多個繪制命令才能完成,等一幀內容結束以后,該Framebuffer就會作為新的Front Buffer交由顯示設備顯示,而先前顯示的Front Buffer會變成Back Buffer又開始下一幀的繪制之旅。這就是GPU的雙緩存(Double Buffering)策略。在上層應用程序可以通過3D API的接口函數調用GPU功能,在底層GPU驅動將這些接口函數轉化為各種GPU私有的命令執行,它們可以完成繪制,狀態寄存器設置以及同步等任務。CPU和GPU通過Ring Buffer(環形緩存)來傳遞和接受這些命令,CPU承擔Ring Buffer生產者的角色,而GPU扮演消費者的角色,因為Ring Buffer大小有限,CPU和GPU需要同步。如果CPU老是要等GPU,我們說這個程序是GPU Bound,我們可能需要去優化Shader程序,減少三角面片數量來提高性能。相反如果GPU老是要等CPU,我們就認定這個程序是CPU Bound, 應用程序可以考慮把一些CPU預處理移交給GPU解決,比如利用GPU繪制管線支持的Geometry Shader(幾何著色器)和Tessellation Shaders(細分曲面著色器)來生成額外頂點和圖元,而不是等待CPU輸入等等。

poYBAGDIFE-AZouDAABFieMF1x4289.jpg

三,GPU計算的演進之旅

隨著真實感繪制進一步發展,對圖形性能要求愈來愈高,GPU發展出前所未有的浮點計算能力以及可編程性。這種遠超CPU的計算吞吐和內存帶寬使得GPU不只是在圖形領域獨領風騷,也開始涉足其它非圖形并行計算應用。最早通過使用3D API OpenGL或者DirectX接口函數,很多數據并行算法被移植到GPU,性能也獲得很好提升,但是這種利用模式面臨不少問題,下面具體看看一步步是如何解決的。

CUDA的發明。之前的GPGPU實現需要并行算法程序員很熟悉圖形API和GPU硬件,算法輸入輸出需要定義為圖形繪制的元素,比如頂點坐標,紋理,幀緩存等,而實際算法又必須著用著色程序(Shader Program)來表達,極大增加了通用并行算法在GPU上移植開發的復雜度,另外受限圖形API的表達能力,很多并行問題沒辦法有效發揮GPU的潛力。2006年,Nvidia破天荒地推出CUDA,作為GPU通用計算的軟件平臺和編程模型,它將GPU視為一個數據并行計算的設備,可以對所進行的計算分配和管理。在CUDA框架中,這些計算不像過去那樣必須映射到圖形API,因此對于開發者來說,基于CUDA的開發門檻大大降低了。CUDA編程語言基于標準的C語言,一般用戶也很容易上手開發CUDA的應用程序。

統一可編程單元。早些時候的GPU繪制管線都是固定功能的,不存在可編程部分。后來出現了可編程的Vertex和Fragment處理,極大地豐富了繪制效果,但是Vetex和Fragment的處理單元還是分離的,很容易造成負載不均衡,性能的伸縮性也不好。伴隨著Direct3D 10(Shader Model 4.0)出現,GPU開始用統一的處理單元運行Vertex、Fragment以及Geomerty Shader。對通用并行計算而言,配合CUDA框架,只要增加GPU可編程處理器數量配置,這種統一處理方式就能夠最大限度地擴展性能,影響非常深遠。

浮點計算的標準化。GPU的可編程處理單元是面向浮點運算,但是浮點數的支持之前幾乎每個GPU廠商都有自己的解決方案,精度、舍入的處理都不一致,導致計算的準確度存在明顯差異。比如繪制管線傾向于把溢出(overflow),下溢(underflow)和非規格化浮點數(denorms)截斷為可表示有意義的最大值或者最小值。現在GPU增加了對特殊數值(Special Values)Infinity和NaN的支持,計算過程的精度和準確度也向IEEE 754標準要求靠攏,比如下圖演示的FMA。浮點計算除支持半精度和單精度以外,雙精度的支持也不可或缺。另外除了浮點數,GPU也開始支持各種各樣的整形運算。這些數據類型的支持對GPU通用計算的重要意義不言而喻。

隨機存取數據。傳統的GPU架構只有非常有限的尋址能力,如通過提供紋理坐標給紋理處理單元讀取紋理數據,Fragment Shader把像素最終的顏色值輸出到對應的幀緩存位置,這些讀寫過程用戶沒有辦法顯式控制,非常限制通用計算的數據交互能力。現在的的GPU增加了額外的存取單元,在指令集中增加統一尋址存取指令,很大程度拓展了GPU通用計算應用空間。

存儲支持ECC。隨著制程工藝不斷進步,器件尺寸縮小,DRAM和SRAM的永久性故障(Hard Error)和瞬時間失效(Soft Error)錯誤都會增加,尤其后者在電容儲存電荷量較小的情況下,問題會越來越嚴重。GPU當然也不能幸免,從顯存,到多級cache以至寄存器文件(Register File)都暴露在這一風險之下。對圖形應用來說,這一問題并不需要太多擔心,人們根本意識不到屏幕上幾百萬個像素中個別顏色值中一位或幾位bit出現了翻轉,哪怕發生更嚴重的錯誤,人類的視覺機制都有機會自我補償糾正。但在高性能計算領域,差之毫厘,謬以千里,這些存儲失效的問題都是不能承受之重。所以現在GPU廠商至少會針對HPC產品在整個存儲器層次結構添加ECC(Error Correcting Code)支持,數據中心和服務器的客戶也才敢放心購買使用。

有了以上一些改進和其他措施,終于GPU作為通用計算平臺慢慢脫離原始階段,開始成熟起來,成為大規模并行計算市場的主力軍。

責任編輯:lq6

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4774

    瀏覽量

    129350
  • 計算平臺
    +關注

    關注

    0

    文章

    53

    瀏覽量

    9682

原文標題:近距離看GPU計算

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    GPU計算服務怎么樣

    在當今數字化快速發展的時代,高性能計算需求日益增長。為滿足這些需求,GPU計算服務應運而生。那么,GPU計算服務怎么樣呢?接下來,AI部
    的頭像 發表于 02-05 15:01 ?29次閱讀

    澎峰科技計算軟件棧與沐曦GPU完成適配和互認證

    ?近期,澎峰科技與沐曦完成了對PerfXLM(推理引擎)、PerfXCloud(大模型服務平臺)與沐曦的曦云系列通用計算GPU的聯合測試,測試結果表明PerfXLM、PerfXCloud軟件與沐曦
    的頭像 發表于 01-21 09:51 ?132次閱讀

    GPU加速云服務器怎么用的

    GPU加速云服務器是將GPU硬件與云計算服務相結合,通過云服務提供商的平臺,用戶可以根據需求靈活租用帶有GPU資源的虛擬機實例。那么,
    的頭像 發表于 12-26 11:58 ?128次閱讀

    《CST Studio Suite 2024 GPU加速計算指南》

    GPU Computing Guide》是由Dassault Systèmes Deutschland GmbH發布的有關CST Studio Suite 2024的GPU計算指南。涵蓋GP
    發表于 12-16 14:25

    軟銀升級人工智能計算平臺,安裝4000顆英偉達Hopper GPU

    軟銀公司宣布,其正在擴展的日本頂級人工智能計算平臺已安裝了約4000顆英偉達Hopper GPU。這一舉措顯著提升了平臺計算能力。據悉,該
    的頭像 發表于 11-04 16:18 ?490次閱讀

    【「算力芯片 | 高性能 CPU/GPU/NPU 微架構分析」閱讀體驗】--了解算力芯片GPU

    本篇閱讀學習第七、八章,了解GPU架構演進及CPGPU存儲體系與線程管理 █從圖形到計算GPU架構演進 GPU圖像計算發展 ●從三角形開始
    發表于 11-03 12:55

    常見GPU問題及解決方法

    GPU(圖形處理單元)是計算機硬件的重要組成部分,負責處理圖形和視頻渲染任務。隨著技術的發展,GPU在深度學習、游戲、視頻編輯等領域扮演著越來越重要的角色。然而,在使用GPU的過程中,
    的頭像 發表于 10-27 14:12 ?1934次閱讀

    GPU加速計算平臺是什么

    GPU加速計算平臺,簡而言之,是利用圖形處理器(GPU)的強大并行計算能力來加速科學計算、數據分
    的頭像 發表于 10-25 09:23 ?291次閱讀

    GPU計算主板學習資料第735篇:基于3U VPX的AGX Xavier GPU計算主板 信號計算主板 視頻處理 相機信號

    GPU計算主板學習資料第735篇:基于3U VPX的AGX Xavier GPU計算主板 信號計算主板 視頻處理 相機信號
    的頭像 發表于 10-23 10:09 ?311次閱讀
    <b class='flag-5'>GPU</b><b class='flag-5'>計算</b>主板學習資料第735篇:基于3U VPX的AGX Xavier <b class='flag-5'>GPU</b><b class='flag-5'>計算</b>主板 信號<b class='flag-5'>計算</b>主板 視頻處理 相機信號

    GPU算力租用平臺怎么樣

    GPU算力租用平臺以其成本效益、靈活性與可擴展性、簡化運維以及即時訪問等優勢,在深度學習、科學計算、圖形渲染等多個領域發揮著重要作用。
    的頭像 發表于 10-17 10:03 ?277次閱讀

    GPU算力租用平臺是什么

    GPU算力租用平臺是一種基于云計算的服務模式,它允許用戶通過互聯網按需租用高性能GPU資源,而無需自行購買、部署和維護這些硬件。
    的頭像 發表于 10-16 10:15 ?304次閱讀

    CPU渲染和GPU渲染優劣分析

    使用計算機進行渲染時,有兩種流行的系統:基于中央處理單元(CPU)或基于圖形處理單元(GPU)。CPU渲染利用計算機的CPU來執行場景并將其渲染到接近完美。這也是執行渲染的更傳統方式。然而,隨著
    的頭像 發表于 05-23 08:27 ?695次閱讀
    CPU渲染和<b class='flag-5'>GPU</b>渲染優劣分析

    NVLink技術之GPUGPU的通信

    在多 GPU 系統內部,GPU 間通信的帶寬通常在數百GB/s以上,PCIe總線的數據傳輸速率容易成為瓶頸,且PCIe鏈路接口的串并轉換會產生較大延時,影響GPU并行計算的效率和性能。
    發表于 03-27 09:40 ?4228次閱讀
    NVLink技術之<b class='flag-5'>GPU</b>與<b class='flag-5'>GPU</b>的通信

    FPGA在深度學習應用中或將取代GPU

    基礎設施,人們仍然沒有定論。如果 Mipsology 成功完成了研究實驗,許多正受 GPU 折磨的 AI 開發者將從中受益。 GPU 深度學習面臨的挑戰 三維圖形是 GPU 擁有如此大的內存和
    發表于 03-21 15:19

    gpu是什么和cpu的區別

    GPU和CPU是兩種常見的計算機處理器,它們在結構和功能上有很大的區別。在這篇文章中,我們將探討GPU和CPU的區別,并詳細介紹它們的原理、應用領域和性能特點。 一、概述 1.1 GPU
    的頭像 發表于 02-20 11:24 ?1.9w次閱讀
    新彩百家乐官网的玩法技巧和规则| 百家乐娱乐场开户注册| 百家乐官网怎么样投注| bet365金融技巧| 百家乐里和的作用| 三公百家乐官网在哪里可以玩| 百家乐官网开发软件| 百家乐官网游戏机在哪有| 广河县| 新濠国际娱乐| 362娱乐城开户| 晓游棋牌官网| 德州扑克术语| 大发888备用网| VIP百家乐-挤牌卡安桌板| 什么百家乐平注法| 澳门百家乐玩法心得技巧| 大发888官方下载 银行| 大发888游戏官方下载客户端| 大发888大发888娱乐城| 大发888怎么玩| 德州扑克冠军| 888达人| 尚志市| 百家乐官网连黑记录| 百家乐官网关键词| 百家乐官网真人游戏网| 金臂百家乐官网注册送彩金 | 上蔡县| 百家乐官网庄闲局部失衡| 赌博百家乐官网趋势把握| 网上百家乐官网哪家较安全| 代理百家乐官网试玩| 百家乐官网大| 百家乐手机投注平台| 百家乐赌博牌路分析| 君怡百家乐的玩法技巧和规则 | 有钱人百家乐的玩法技巧和规则 | 太阳城的故事| 赌球赔率| 真人百家乐官网试玩账号|