日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GPU 原理解密(一)画个三角形居然这么难

發(fā)布時(shí)間:2025/3/21 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GPU 原理解密(一)画个三角形居然这么难 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



系列文章第一篇,介紹些術(shù)語,混個(gè)眼熟,讓大家有點(diǎn)感性認(rèn)識。

這是一張顯卡,它包括中間的 GPU(graphics processing unit)、顯存(framebuffer / FB)以及一堆小張不認(rèn)識的電器元件。

這是一枚 GPU

這是 GPU 內(nèi)部原理圖(芯片型號為 GM 204),這張圖里值得關(guān)注的名詞有:

  • PCI Express 3.0 Host Interface
  • GigaThread Engine
  • GPC (Graphics Processing Cluster)
  • Raster Engine
  • SM (Streaming Multiprocessor)
  • Memory Controller
  • L2 Cache

看到這里,你一定有個(gè)疑惑

為啥搞這么復(fù)雜?

在圖形應(yīng)用中,每一個(gè)繪圖函數(shù)(drawcall)都可能生成數(shù)量千差萬別的三角形。能活下來的頂點(diǎn)和我們從應(yīng)用程序中塞給 API 的不一樣的。不可見的三角形、被遮擋住的像素,種種情況影響下,有些三角形并不需要在屏幕上畫任何東西。同樣大小的一個(gè)三角形,有時(shí)候需要畫幾百個(gè)像素,有時(shí)候卻一個(gè)都不畫。

所以啊,三角形在現(xiàn)在的 GPU 里走的是一條邏輯上的管線(logical pipeline),而非物理上的管線。對管線的概念陌生的讀者,可以想象下富士康的手機(jī)組裝流水線。每一個(gè)車間工人,就好比 GPU 中的一個(gè)單元。車間中的管線是固定的,工人只做一件事情,保證效率。然而 GPU 中的管線是靈活的,好比前一秒在裝蘋果手機(jī)的屏幕,后一秒就去裝 VR 頭盔的傳感器了。

回到三角形身上,我們現(xiàn)在要畫三角形 A 和 B,它們可能位于不同的管線階段。三角形 A 已經(jīng)通過坐標(biāo)變換,準(zhǔn)備好光柵化(to be rasterized)。A 的一些像素甚至正在執(zhí)行像素著色器(pixel shader),另一坨卻被深度緩存(depth-buffer)拋棄了,還有些已經(jīng)寫到了顯存(framebuffer),最后還有些像素在發(fā)呆(ZzzzzZzzzz)。這時(shí),三角形 B 粉墨登場,我們還需要獲取 B 的頂點(diǎn)數(shù)據(jù)。你看,雖然每個(gè)三角形都需要照著套路走一場,在三角形一生的不同階段,它們要做不同事情。畫三角形這件事,分為許多微小的工作,這些工作是可以并行的。硬件單元只要空閑了,就會(huì)分到新的工作,頂點(diǎn)處理和像素著色會(huì)同時(shí)進(jìn)行。

N 卡的架構(gòu)自 Fermi 時(shí)代以來一脈相承。Giga Thread Engine管理所有進(jìn)行的工作量。GPU 被劃分為多個(gè) GPC (Graphics Processing Cluster),每個(gè) GPC 又帶了多個(gè) 流處理器 (SM / Streaming Multiprocessor) 和一個(gè)光柵化引起(Raster Engine)。整個(gè)過程中存在大量的溝通交流,最值得一提的是 Crossbar(我也不知道怎么翻譯),它使得 GPC 上的工作和其他子系統(tǒng)比如 ROP (渲染輸出單元 / render output unit) 進(jìn)行協(xié)作。

SM 是執(zhí)行 glsl / hlsl / cuda kernel 的運(yùn)算單元,放大后是這樣的:

SM 包含大量的核(Core)進(jìn)行數(shù)學(xué)運(yùn)算,這些核很無腦,它們以 32 個(gè)為一組,接收 Warp Schedulers 的號召,scheduler 決定了運(yùn)算的邏輯,下達(dá)指令“跟著我一起揮舞左手,再揮舞右手”。32 個(gè) Core 乖乖地做,一起揮舞左手,再揮舞右手。

但是,如果 scheduler 下達(dá)的指令是“單號的觀眾揮舞左手,雙號的觀眾揮舞右手”,事情就變得有趣了。

在單號的 Core 揮舞左手的時(shí)候,雙號的 Core 會(huì)處于發(fā)呆狀態(tài)(ZzzzzZzzzz)。

等單號的 Core 揮舞完了,雙號的 Core 才開始揮舞右手。

每個(gè) GPU 含多少 GPC,每個(gè) GPC 含多少 SM,這些配置取決于不可說的秘密。前面放過的 GM 204 還記得不,它有 4 個(gè) GPC,每個(gè) GPC 含 4 個(gè) SM。Tegra X1 雖然同為 Maxwel 架構(gòu),僅有 1 個(gè) GPC 和 2 個(gè) SM。

至于 SM 的設(shè)計(jì),包含多少的 core,多少的 scheduler 也是每代芯片都不同,確保可以滿足高端顯卡、筆記本、手機(jī)等的需求。

總結(jié)下,這篇文章簡要介紹了 GPU、GPC 和 SM,估計(jì)大家看完了依然不明白。沒事兒,我們下集見。

參考資料

developer.nvidia.com/co



作者:Vinjn張靜
鏈接:https://zhuanlan.zhihu.com/p/20918974
來源:知乎

總結(jié)

以上是生活随笔為你收集整理的GPU 原理解密(一)画个三角形居然这么难的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。