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

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

3天內(nèi)不再提示

從計算機圖形學到人工智能

汽車電子技術 ? 來源:程序芯世界 ? 作者:CoderWorld ? 2023-03-02 16:17 ? 次閱讀

1. 引言

多年以后,面對圖形處理器GPU)在人工智能、加密貨幣、高性能計算、自動駕駛等多研究領域的廣泛應用,如今的游戲發(fā)燒友們是否會回想起,1999年Nvidia發(fā)布專業(yè)游戲顯卡GeForce256時那個炎熱的夏天?

圖片

GPU應用

GeForce256發(fā)布以后GPU一詞才被大眾所接受,實際上1994年索尼發(fā)布PS1的時候就提出了GPU的概念,當時使用的是由東芝為索尼設計的GPU。

而后來在2002年ATI(已被AMD收購)提出的VPU(Visual Processing Unit)一詞則在時代的浪潮中消失無蹤。

從GeForce256發(fā)布至今的21年時間,GPU實現(xiàn)了從PC游戲時代到AI時代的巨大跨越。本文將和大家一起揭秘GPU為何能夠撬動計算機圖形學和人工智能這兩個博大精深的領域。

2. GPU與計算機圖形學

今年3月18日,國際計算機學會ACM官方公布了2019年度圖靈獎(計算機界的諾貝爾獎)獲得者Hanrahan和Catmull,以表彰他們對3D計算機圖形學的貢獻。

Hanrahan提出的renderMan很大程度上對GPU產(chǎn)生了影響。例如著色器(Shader)一詞的出現(xiàn),最先是由Pixar與1988年五月發(fā)布的renderMan接口規(guī)范中提出。

renderMan技術制作了一系列成功電影,其中包括《阿凡達》、《玩具總動員》、《泰坦尼克號》等。

圖片

renderMan渲染的阿凡達

另外,Hanrahan和他的學生還開發(fā)了一種用于 GPU 的語言:Brook,并最終催生了 NVIDIA的CUDA。

事實上,計算機圖形學是一個廣泛的學科,其中包括:

  • 物理模擬:涉及各個物理分支相關數(shù)學。
  • 模型處理:微積分,線性代數(shù)、微分幾何、優(yōu)化理論。
  • 渲染:微積分、概率、光學中相關數(shù)學。

而我們的GPU,正是用來為計算機圖形學中實時圖像渲染加速的。

GPU的硬件設計上引入了圖形管線,使得各任務可以通過流水線進行并行處理。

同時通過可編程的著色器,使得GPU硬件能夠根據(jù)圖形學算法更好的被使用。

通過下一節(jié)我們可以詳細的了解到什么是GPU圖形管線和可編程著色器。

2.1 GPU圖形管線

GPU圖形管線共分為三個部分,分別是應用程序階段、幾何階段、光柵化階段。

我們在最終在屏幕上看到的畫面,就是3D模型經(jīng)過這三個階段渲染后得到的。

圖片

GPU圖形管線

  • 應用程序階段

圖形渲染管線概念上的第一個階段,開發(fā)者通過程序的方式對圖元數(shù)據(jù)等信息進行配置和調(diào)控,最后傳輸?shù)较聜€階段。

  • 幾何階段

幾何階段分為模型視點變換、頂點著色、裁剪、屏幕映射等步驟。

模型視點變換 :由每個模型自己的局部坐標系轉換到世界坐標系,然后到視覺空間,通過將每個模型的各頂點坐標與相應的變換矩陣相乘來實現(xiàn)。

下圖是一個模型視點變換的實例,每個建模好的立方體的坐標是以原點為中心的局部坐標系,可以通過矩陣變換將各模型放到同一個世界坐標系中。

圖片

模型視點變換

頂點著色:著色是指確定材質(zhì)的顏色,材質(zhì)的顏色實際上和光照有關。目前常用的光照模型是馮氏光照模型,包括環(huán)境、漫反射和鏡面光照。

裁剪 :對于在屏幕空間外的物體,我們并沒有必要去計算它的顏色等信息

屏幕映射:是將之前步驟得到的坐標映射到對應的屏幕坐標系上。

  • 光柵化階段

給定經(jīng)過變換和投影之后的頂點,顏色以及紋理坐標(均來自于幾何階段),給每個像素正確配色,以便正確繪制整幅圖像,這個過程叫光柵化。

光柵化包括三角形設定、三角形遍歷、像素著色、融合階段(如下圖所示)。

圖片

光柵化階段

三角形設定階段:計算三角形表面的差異和三角形表面的其他相關數(shù)據(jù)。

三角形遍歷階段:到那些采樣點或像素在三角形中的過程通常叫三角形遍歷。

像素著色階段:主要目的是計算所有需要逐像素計算操作的過程。

融合階段:合成當前儲存于緩沖器中的由之前的像素著色階段產(chǎn)生的片段顏色。

2.2 可編程著色器

可編程著色器(shader),簡單來說就是可以運行在GPU上的程序,這種程序會使用特定的著色語言(類似于C語言)。

2.2.1 著色器語言

不同圖形編程接口對應不同的著色語言,Windows平臺上的圖形編程接口DirectX使用的是HLSL,而跨平臺的圖形編程接口OpenGL則是使用的GLSL,HLSL與GLSL的語法與C語言十分相似。而新一代圖形編程接口Vulkan則是直接定義了一套二進制中間語言SPIR-V。

圖片

HLSL與GLSL都可以編譯成獨立于機器的中間語言(SPIR-V本身就是中間語言),然后在驅動中通過編譯器轉換成實際的機器語言。這樣可以實現(xiàn)對不同硬件的兼容,因為不同廠商可以在驅動中調(diào)用自己的編譯器生成自家GPU識別的指令。

有了著色語言以后,我們的工程師就可以通過高級語言來控制GPU對圖形進行實時渲染。

但實際上我們的GPU一開始支持的Shader并沒有那么多。這與GPU硬件的可編程渲染架構發(fā)展有關。

GPU可編程渲染架構經(jīng)歷了分離渲染架構到統(tǒng)一渲染架構的進化過程。

如下圖所示,左邊是分離渲染架構,右邊是統(tǒng)一渲染架構。

圖片

分離架構 vs 統(tǒng)一渲染架構

分離渲染架構:頂點著色器與像素著色器在兩個不同的著色器核(紅色部分)上運行。

統(tǒng)一渲染架構:所有的著色器程序都可以在同一個著色器核上運行。

與分離渲染架構相比,統(tǒng)一渲染架構更加靈活且利用率更高。

下面以DirectX(openGL也有對應的版本)發(fā)布為線索,分別介紹分離渲染架構與統(tǒng)一渲染架構的發(fā)展歷史。

2.2.2 分離渲染架構

圖片

  • 1999年微軟DirectX7提供了硬件頂點變換的編程接口,NV的Geforc256對此進行了支持,從此NV公司從眾多顯卡制造商中殺出重圍,逐漸占據(jù)了龍頭老大的地位。
  • 2001年DirectX8發(fā)布,包含Shader Model 1.0標準。遵循這一模型的GPU可以具備頂點和像素的可編程性。同年,NVIDIA發(fā)布了Geforce3,ATI發(fā)布了Radeon8500,這兩種GPU支持頂點編程。但是這一時期的GPU都不支持像素編程,只是提供了簡單的配置功能。
  • 2002年,DirectX9.0公布,包含Shader Model 2.0。此模型是真正的可編程頂點著色器及像素著色器。頂點著色器主要執(zhí)行頂點的變換、完成光照與材質(zhì)的運用及計算等相關操作。
  • 2003年,NVIDIA和ATI發(fā)布的新產(chǎn)品都同時具備了可編程頂點處理和可編程像素處理器。從此,GPU具備了可編程屬性,也叫做可編程圖形處理單元。

2.2.3 統(tǒng)一渲染架構

圖片

  • 2006年包含DirectX10的 Shader Model4.0發(fā)布,采用統(tǒng)一渲染架構,使用統(tǒng)一的流處理器。這一時期,比較有代表性的GPU有NVIDIA的Geforce9600和ATI的Radeon 3850。
  • 2010年,包含DirectX11的Shader Model 5.0 發(fā)布,增加了曲面細分著色器、外殼著色器、鑲嵌單元著色器、域著色器、計算著色器。這一時期比較有代表性的GPU是GeForece405
  • 2014年,DirectX 12發(fā)布,主要特性有輕量化驅動層、硬件級多線程渲染支持、更完善的硬件資源管理,比較有代表性的GPU有GeForceGT 710
  • 2018,DirectX 12.1發(fā)布,代表性GPU是TITAN RTX,擁有1770MHz主頻,24G顯存,384位帶寬,支持8K分辨率。

以上僅列舉了部分Shader Model的特性,如要查看完整特性,有興趣的同學可以參考這個鏈接Shader Model

2.3 小結

上一節(jié)介紹了GPU渲染架構發(fā)展歷史、GPU圖形管線、以及能夠在GPU上運行的高級著色語言。

可以看到,GPU對圖形渲染的過程需要并行處理海量數(shù)據(jù),涉及大量矩陣運算,這一特性使得GPU能夠在人工智能應用中發(fā)揮巨大的作用。

下一節(jié)我們將看到GPU的這些特性是如何為深度學習加速的。

3. GPU與人工智能

2018年,國際計算機學會將圖靈獎頒發(fā)給了深度學習領域的三位大師Hinton,LeCun 和 Bengio。

深度學習剛被提出的時候曾經(jīng)遭到學術屆的質(zhì)疑,而如今卻成為了人工智能領域的熱點。

人工智能的三大要素:算法、算力、大數(shù)據(jù)。

深度學習被質(zhì)疑的一部分原因正是因為當時的計算能力無法滿足深度學習的要求,而如今異構計算則成為了深度學習的重要支柱。

使用不同的類型指令集、不同的體系架構的計算單元,組成一個混合的系統(tǒng),執(zhí)行計算的特殊方式,就叫做異構計算。

3.1 異構計算

目前關于深度學習流行的異構解決方案共三種,分別是ASIC、FPGA、GPU。

但是從開發(fā)人員數(shù)量和受歡迎程度以及生態(tài)系統(tǒng)來說,GPU無疑是最有優(yōu)勢的。

通過下面三種方案的對比,我們可以看到這三種方案各自的優(yōu)缺點。

ASIC即專用集成電路,是指應特定用戶要求和特定電子系統(tǒng)的需要而設計、制造的集成電路。

優(yōu)點::體積小、功耗低、計算性能高、計算效率高、芯片出貨量越大成本越低。

缺點:算法固定,一旦算法變化就無法使用。目前人工智能算法遠沒有到算法平穩(wěn)期,ASIC專用芯片如何做到適應各種算法是個最大的問題。

實例:寒武紀的NPU、地平線的BPU、Google的TPU都是屬于ASIC。如圖是Google的TPU,兼具了CPU與ASIC的特點。

圖片

Google TPU

  • CPU+FPGA

FPGA是一種硬件可重構的體系結構。它的英文全稱是Field Programmable Gate Array,中文名是現(xiàn)場可編程門陣列。

圖片

CPU+FPGA

優(yōu)點:靈活性高、無需取指令、譯碼,執(zhí)行效率高。FPGA中的寄存器和片上內(nèi)存由各自的邏輯進行控制無需仲裁和緩存。多個邏輯單元之間的通信已經(jīng)確定,無需通過共享內(nèi)存進行通信。

缺點:總體性價比和效率不占優(yōu)勢。FPGA的大規(guī)模開發(fā)難度偏高,從業(yè)人員相對較少,生態(tài)環(huán)境不如GPU。

實例:微軟使用FPGA為Bing搜索智能化進行加速。

  • CPU+GPU

圖片

CPU+GPU

GPU具有更好的生態(tài)環(huán)境,例如具備CUDA支持的GPU為用戶學習Caffe、Theano等研究工具提供了很好的入門平臺。為初學者提供了相對更低的應用門檻。

除此之外,CUDA在算法和程序設計上相比其他應用更加容易,通過NVIDIA多年的推廣也積累了廣泛的用戶群,開發(fā)難度更小。

最后則是部署環(huán)節(jié),GPU通過PCI-e接口可以直接部署在服務器中,方便快速。得益于硬件支持與軟件編程、設計方面的優(yōu)勢,GPU才成為了目前應用最廣泛的平臺。

3.2 GPU與深度學習

與大多機器學習算法一樣,深度學習依賴于數(shù)學和統(tǒng)計學計算。人工神經(jīng)網(wǎng)絡(ANN),卷積神經(jīng)網(wǎng)絡(CNN)和循環(huán)神經(jīng)網(wǎng)絡(RNN)是一些現(xiàn)代深度學習的實現(xiàn)。

這些算法都有以下基本運算:

  • 矩陣相乘:所有的深度學習模型中都包括這一運算,計算十分密集。
  • 卷積:也是深度學習中常用的運算,占用了模型中大部分的浮點運算。

上節(jié)中提到,GPU在進行圖像渲染時間需要處理每秒大量的矩陣乘法運算,

下圖是一個簡單直觀的例子:將一幅圖像倒置,在我們?nèi)庋劭磥硎且环B續(xù)的圖形,在GPU看來實際上是由多個離散的像素組成,將圖像倒置實際上對每個像素做矩陣乘法。

當然這只是一個簡單的例子,實際上的3D渲染處理的數(shù)據(jù)比這更多也更加復雜。

圖片

圖片

GPU并行處理

深度學習同樣需要并行處理,因為神經(jīng)網(wǎng)絡是一種典型的并行結構,每個節(jié)點的計算簡單且獨立,但是數(shù)據(jù)龐大,通常深度學習的模型需要幾百億甚至幾萬億的矩陣運算。

圖片

神經(jīng)網(wǎng)絡結構

可以看到,圖形渲染與深度學習有著相似之處。這兩種場景都需要處理每秒大量的矩陣乘法運算。

而GPU擁有數(shù)千個內(nèi)核的處理器,能夠并行執(zhí)行數(shù)百萬個數(shù)學運算。

因此GPU完美地與深度學習技術相契合。使用GPU做輔助計算,能夠更快地提高AI的性能。

總的來說,GPU做深度學習有三大優(yōu)勢:

  • 每一個GPU擁有大量的處理器核心,允許大量的并行處理。
  • 深度學習需要處理大量的數(shù)據(jù),需要大量的內(nèi)存帶寬(最高可達到750GB/S,而傳統(tǒng)的CPU僅能提供50GB/S),因此GPU更適合深度學習。
  • 更高的浮點運算能力。浮點運算能力是關系到3D圖形處理的一個重要指標?,F(xiàn)在的計算機技術中,由于大量多媒體技術的應用,浮點數(shù)的計算大大增加了,比如3D圖形的渲染等工作,因此浮點運算的能力是考察處理器計算能力的重要指標。

3.3 小結

本節(jié)介紹了異構計算對深度學習加速的優(yōu)缺點,主要包括FPGA、ASIC、GPU三種硬件解決方案。

最后通過比較GPU進行圖形渲染與深度學習計算時的相似之處,解釋了GPU為何能夠加速深度學習,以及GPU加速深度學習的優(yōu)勢。

4. 總結

計算機圖形學與人工智能是兩個博大精深的領域,本文僅從GPU實時渲染與GPU并行加速的角度進行了闡述。

寫這篇文章的初衷是因為聯(lián)想到GPU與近三年來的圖靈獎領域息息相關。

2019年圖靈獎授予了計算機圖形學領域、2018年授予了深度學習領域,2017年授予了計算機體系結構領域。

GPU實時渲染、GPU并行加速、GPU架構分別與這三個領域有著千絲萬縷的聯(lián)系,因此想到了寫這樣一篇GPU探秘的文章。

5. 推薦閱讀

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

    關注

    28

    文章

    4673

    瀏覽量

    128594
  • 算法
    +關注

    關注

    23

    文章

    4587

    瀏覽量

    92505
  • 可編程
    +關注

    關注

    2

    文章

    831

    瀏覽量

    39753
收藏 人收藏

    評論

    相關推薦

    計算機圖形學年鑒:研究現(xiàn)狀、應用和未來

    計算機圖形學是支持各種影視特效、三維動畫影片、計算機游戲、虛擬現(xiàn)實以及大家手機上各種照片視頻美化特效背后的技術基礎,在本文中,微軟亞洲研究院網(wǎng)絡圖形組深入解釋了
    發(fā)表于 01-03 10:44 ?1124次閱讀

    計算機圖形學研究和應用

    計算機圖形學研究和應用論文關于計算機圖形學的發(fā)展及應用探究  【摘要】計算機圖形學經(jīng)過三十多年的
    發(fā)表于 08-31 08:05

    計算機圖形學定義

    計算機圖形學定義:計算機圖形學是研究怎樣用數(shù)字計算機生成、處理和顯示圖形的一門學科。
    發(fā)表于 08-31 07:07

    計算機圖形學原理教程(Visual+C++版)

    計算機圖形學原理教程(Visual+C++版)
    發(fā)表于 07-15 16:11 ?0次下載

    什么是計算機圖形學

    什么是計算機圖形學 計算機圖形學(Computer Graphics,簡稱CG),是研究用計算機來處理
    發(fā)表于 05-24 23:26 ?2685次閱讀

    基于OpenGL的計算機圖形學教學改革探索

    針對傳統(tǒng)的本科計算機圖形學教學中存在的問題,提出了基于OpenGL實驗平臺的教學改革方法,設計了基于OpenGL計算機圖形學實驗項目,并給出了綜合評定考核方法。實踐表明,該教學模
    發(fā)表于 07-27 16:08 ?21次下載

    計算機圖形學講義

    計算機圖形學是利用計算機研究圖形的表示、生成、處理、顯示的學科。
    發(fā)表于 03-22 16:33 ?0次下載

    MFC編程基礎-圖形學

    計算機上的上位機制作工具語言之MFC編程基礎-圖形學
    發(fā)表于 09-01 15:01 ?0次下載

    計算機圖形學的非線性投影研究

    隨著科學技術的不斷發(fā)展,非線性的投影方法由以前的小范圍使用,發(fā)展到了包括在計算的機圖形學、圖像處理、地圖設計、攝影,畫畫等領域中。為了使各需要投影技術的領域提供更好的技術支持,文中提出了計算機
    發(fā)表于 11-11 12:08 ?9次下載
    <b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>的非線性投影研究

    NVIDIA將人工智能引入計算圖形學 NVIDIA GPU渲染加速視覺特效

    NVIDIA致力于不斷為用戶提供非凡的圖形計算性能,為專業(yè)化的工作流程注入人工智能、虛擬現(xiàn)實和照片級寫實的畫質(zhì),以適應用戶的嚴苛要求。NVIDIA在計算機
    的頭像 發(fā)表于 01-04 10:23 ?8071次閱讀

    清華AMiner團隊發(fā)布計算機圖形學研究報告

    清華AMiner團隊近日發(fā)布新一期研究報告——《計算機圖形學研究報告》,報告全文共 53 頁,概念、技術、人才、會議、應用及相應趨勢詳細介紹了計算機
    的頭像 發(fā)表于 08-20 15:31 ?3098次閱讀
    清華AMiner團隊發(fā)布<b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>研究報告

    計算機圖形學總覽:圖像和圖像的概念辨析

    計算機圖形學計算機視覺是同一過程的兩個方向。計算機圖形學將抽象的語義信息轉化成圖形
    的頭像 發(fā)表于 08-21 09:10 ?6527次閱讀

    2018計算機圖形學AMiner的研究報告詳細資料免費下載

    計算機圖形學計算機科學領域的重要研究方向之一,圖形學技術也在社會生活和生產(chǎn)的各個領域得到應用。本研究報告對計算機
    發(fā)表于 12-25 08:00 ?0次下載
    2018<b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>AMiner的研究報告詳細資料免費下載

    計算機圖形學 數(shù)字圖像處理和計算機視覺是什么?

    計算機圖形學(Computer Graphics)講的是圖形,也就是圖形的構造方式,是一種從無到有的概念,數(shù)據(jù)得到圖像。是給定關于景象結構
    的頭像 發(fā)表于 04-04 17:34 ?4784次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b> 數(shù)字圖像處理和<b class='flag-5'>計算機</b>視覺是什么?

    計算機圖形學:探索虛擬世界的構建之道

    計算機圖形學計算機科學的一個分支,它專注于創(chuàng)建和操縱計算機生成的視覺和圖形內(nèi)容。這一領域涵蓋了
    的頭像 發(fā)表于 05-07 08:27 ?339次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>圖形學</b>:探索虛擬世界的構建之道