GPU特征处理技术
GPU特征處理技術
GPU和CPU有何不同?
現代片上系統(SoC)通常集成中央處理器(CPU)和圖形處理器(GPU)。設計不同,這可能更取決于處理的數據集的類型。
CPU經過優化,可以一次對幾塊數據執行大量分支任務。在CPU上運行的線程通常是唯一的,并且是獨立執行的,通常獨立于所有其他線程。任何給定的處理元素都將在單個線程中進行處理。CPU上程序的典型線程數通常為1到8個,在任何時間段內最多為幾十個。
GPU經過優化,工作原理是同一段代碼將在多個線程中執行,通常數為數百萬,以處理當今設備的大屏幕分辨率。這些線程只在輸入上不同,通常遵循完全相同的執行步驟。
并行性
每個圖形處理器在多線程上以單指令多數據(SIMD)處理的形式,并發執行同一條指令。
SIMD體系結構的主要優點,對于結構正確的應用程序,可以并行運行大量線程,效率極高。SIMD體系結構通常能夠同時運行比典型CPU多幾個數量級的線程。
SIMD設計用于處理大的相干數據集,在這類任務中表現得非常出色。因此,在大型相干數據集上獨立運行的算法(如圖形和圖像處理),非常適合這種處理器類型。
矢量和標量處理
現代圖形核心體系結構具有多個基于矢量或標量的處理單元。都受不同版本的PowerVR體系結構支持–Series 5 supporting vector,以及Series 6、Series 7和Series 8 supporting scalar。
標量處理單元對每個處理單元的單個值進行操作。
向量處理單元對每個處理單元處理多個值。
矢量
向量處理可以非常有效,因為執行單元可以同時處理多個值,而不是只處理一個值。對于顏色和頂點操作,這種類型的架構是非常有效的。因此,傳統的渲染操作非常適合這種體系結構,因為計算通常同時對三個或四個元素進行操作。
向量體系結構的主要缺點是,如果使用標量值或小于處理器期望值的向量,則會浪費額外的處理元素寬度。最常見的向量寬度是4,這意味著主要操作三個分量向量的著色器或內核將以75%的效率操作這些指令。一次只在一個標量上工作的著色器可能會將這個數字降低到25%。這會浪費能源和性能,因為處理器的某些部分沒有做任何工作。可以通過矢量化代碼對此進行優化,但這會增加程序員的負擔。
標量
標量處理器在每個硬件周期可以執行的操作方面往往更加靈活,因為不需要用數據填充額外的處理寬度。雖然向量架構可能在同一個硅區域中處理更多的值,但對于非向量化代碼,在標量架構中每個時鐘的實際有用結果數通常會更高。標量體系結構往往更適合于通用處理和更高級的渲染技術。
關于消除混疊反采樣
該技術引入了GRLAA(Gradient Line Anti-Aliasing,梯度線消除混疊),這是一種相對簡單有效的方法,用于處理汽車導航應用中經常出現的混疊線。
在信號處理學科中,有一個特定的采樣頻率稱為奈奎斯特頻率。當以低于奈奎斯特頻率的頻率對信號進行采樣時,從這些采樣重構的信號與原始信號不同。原始信號和重構信號之間的差異表現為偽影。這種效果稱為“混疊”。
本文討論了計算機圖形學中兩種最常見的混疊現象。第一種是“鋸齒狀”(下圖1),這里原本是一條對角線的直線,看起來像鋸齒狀的樓梯。這是由圖形卡的“光柵化器階段”引入的,將“中間”像素渲染為開或關。
第二種是采樣混疊。這是當一個高頻(快速變化的)紋理被用來渲染遠處的某物時,比如圖2中的棋盤格圖案,并且似乎創建了被稱為moir的可見人工制品模式。
有幾種算法可用于消除可見鋸齒的數量,并去除staircase上的偽影artefacts。但是,這些算法可能會產生適中的性能成本,這取決于它所部署的硬件。
超級采樣消除混疊(SSAA)。這是一種暴力技術,比最終分辨率高出整數倍(x2,x4)的分辨率渲染整個場景,然后對整個幀緩沖區進行下采樣,產生所需的最終分辨率。結果,鋸齒和紋理偽影采樣,進行優良的質量和改善,但技術顯然是極其昂貴的。渲染成本(包括光柵操作、片段操作和相關帶寬)乘以分辨率乘數的平方,即x4表示x2 SSAA,x16表示x4等
多采樣消除混疊(MSAA)。這種技術通過將圖像渲染到一個緩沖區,增加每個像素的采樣數,該緩沖區能夠存儲每個像素的多個采樣。然后解析該緩沖區,生成與viewport分辨率匹配的輸出。這在PowerVR硬件上非常有效,因為解析是在芯片上執行的,節省了寶貴的內存帶寬。MSAA改善了鋸齒,但沒有對偽影進行采樣。
基于著色器的技術,如快速近似消除混疊(FXAA)或亞像素形態,消除混疊(SMAA)。這兩種技術分析檢測和模糊銳化的幾何特征。在屏幕空間中執行的后處理算法,通常具有固定的成本(一次全屏傳遞),但需要更多的內存帶寬,這在移動和嵌入式設備上通常是額外的。
總結
- 上一篇: 数据类型概述
- 下一篇: MLIR: 编译器基础架构重定义