哪些图形算法是不能用GPU来计算的?

哪些图形算法是不能用 GPU 来计算的?
比如软阴影,全局光照,Final Gathering,或者某种渲染效果是不能用GPU计算的。我的意思是,GPU渲染真的能完全替代CPU渲染吗?

罗登,Storyteller
王洋子豪先生的回答。感谢! 
王洋子豪 ,计算机科学博士生, 关注图形学及并行计算 
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
发布于 2011-12-17  1 条评论       

冯东,Adobe 程序员
结果数据的相关性很低。比如基于卷积的图像处理。内存对齐,适合高速总线。没有指针等间接引用。除此都不适合。

补充一下,@罗登 认为很难说有绝对不能用 GPU 计算的问题。对此从逻辑上说是可能的。但是即使一个问题从逻辑上找到了 GPU 解法,还要面临工程问题。比如内存总线问题。PCI 的低带宽,让目前 GPU 只适合解决两种问题:一是图形直接显示在屏幕上(因为屏幕和 GPU 在 PCI 同侧),二是结果远远小于数据的问题,判定问题,比如密码破解。像图像处理,虽然速度很快,但是在 Phothshop 这样的 app 中,从 GPU 传回结果仍然是一个巨大的瓶颈。
编辑于 2012-09-02  添加评论       

Alan Li,JIT Compiler Optimization Developer, C…
王洋子豪先生的回答非常好,让人开了眼界了。 

简单地说两句:GPU是SIMD架构,所有适合于SIMD的算法都可以使用GPU加速。
发布于 2011-12-19  添加评论       

你可能感兴趣的:(哪些图形算法是不能用GPU来计算的?)