哪些圖形演算法是不能用 GPU 來計算的?

比如軟陰影,全局光照,Final Gathering,或者某種渲染效果是不能用GPU計算的。我的意思是,GPU渲染真的能完全替代CPU渲染嗎?


王洋子豪先生的回答。感謝!

王洋子豪 ,計算機科學博士生, 關注圖形學及並行計算

Rendering包含很多演算法和步驟。利用GPU加速Rendering主要用在基於光柵化的Real-Time Rendering中。軟陰影是一種較容易映射到GPU的演算法(事實上,早在2006年我就在OpenGL Shading Language, Second Edition的第13章Shadows中看到了軟陰影演算法在GPU上的實現)。其他Rendering演算法在glsl, hlsl, Cg等Shading Language出現後都被大批的移植到GPU上。然而,對於光線追蹤和全局光照的GPU加速雖然近年來很多論文和開源/商業軟體都有涉及到(比如[1]以及[2]),仍然是一個困難的問題。GPU最適合任務規則劃分的數據級並行處理,全局光照和光線追蹤中的光照計算以及採用的數據結構(k-d樹等)會帶來隨機/非連續的內存訪問和不規則的計算任務分布。這給將傳統CPU渲染演算法移植到GPU上帶來了很多困難。我不認為有某種渲染演算法是不能用GPU計算的。但是目前看來GPU在Physically-Based Photo-Realistic Rendering上還不能完全取代傳統的基於CPU的渲染軟體(如業界標準PRMan)。然而,越來越多的渲染管線中的子任務正在被GPU所完成,如[3]。周昆在[4]中首次實現了將PRMan的shader完全在GPU下編譯。然而,要實現完全獨立的基於GPU的渲染管線,尤其是針對複雜的光照模型的真實感渲染,還需要很多努力。所以你的問題目前仍然沒有標準答案。但是可以肯定的是,GPU會使圖形渲染越來越快,越來越真實。

希望我的答案對你有所幫助。

[1] NVIDIA OptiX http://nvidia.com/object...

[2] GPU Gems 2 Chapter 38. High-Quality Global Illumination Rendering Using Rasterization http://http.developer.nvidia.com/GPUGems2...

[3] PantaRay: Fast Ray-traced Occlusion Caching of Massive http://Scenesresearch.nvidia.com/publicat...

[4] RenderAnts: Interactive Reyes Rendering on GPUs http://kunzhou.net/#renderants


結果數據的相關性很低。比如基於卷積的圖像處理。內存對齊,適合高速匯流排。沒有指針等間接引用。除此都不適合。

補充一下,@羅登 認為很難說有絕對不能用 GPU 計算的問題。對此從邏輯上說是可能的。但是即使一個問題從邏輯上找到了 GPU 解法,還要面臨工程問題。比如內存匯流排問題。PCI 的低帶寬,讓目前 GPU 只適合解決兩種問題:一是圖形直接顯示在屏幕上(因為屏幕和 GPU 在 PCI 同側),二是結果遠遠小於數據的問題,判定問題,比如密碼破解。像圖像處理,雖然速度很快,但是在 Phothshop 這樣的 app 中,從 GPU 傳回結果仍然是一個巨大的瓶頸。


王洋子豪先生的回答非常好,讓人開了眼界了。

簡單地說兩句:GPU是SIMD架構,所有適合於SIMD的演算法都可以使用GPU加速。


推薦閱讀:

學計算機具體有那些內容?
計算機windows7操作系統到底是屬於多用戶還是單用戶?
重裝系統(windows PC端)各種方法的原理是什麼?
計算機系專業本科生應該在畢業時具備哪些素質?(上海工科985)
為什麼用win7「畫圖」軟體剪切圖片像素變小了圖片佔用反而變大了?但是繼續剪切的話就會變小?

TAG:演算法 | 計算機 | 圖形處理器GPU | 圖形 |