我目前正在实施一个光线跟踪.因为光线跟踪是极为重计算,因为我要找到CUDA编程无论如何,我想知道,如果任何人有任何经验相结合的两个。我真的不能告诉我们,如果计算模型的比赛,我想知道期望什么。我得到的印象是,它不完全匹配在天堂,而是一个体面的速度increasy将比没有好。

有帮助吗?

解决方案

一件事是非常警惕在CUDA是,分歧的控制流动在内核码绝对杀性能,由于结构的基础GPU硬件。Gpu通常有大量数据并行工作负荷具有高度一致的控制流程(即你有几百万象素,每个(或至少大片的)将在通过 确切的 同样的着色程序,即使采取同样的方向上通过的所有分支机构。这使他们能够作出一些硬件优化,像只有一个单个指令缓,取的单元,和解的逻辑对于每个集团的32线。在理想的情况下,这是在共同图形,他们可以广播的同一指令的所有32台的执行单位在同一周期(这被称为单指令,或者单指令多数据)。他们可以 模仿 MIMD(多指令)和SPMD(单程),但在螺纹内流媒体多处理(SM)分歧(采用不同的路径代码出的一个分支),这个问题的逻辑实际上交换机之间的每一个码的道路上一个周期的基础上。你可以想象的是,在最糟糕的是,所有的线都是在独立道路,硬件的利用率只下降的一个因素32,有效地杀死任何好处,你会已经通过上运行的一个GPU过CPU,特别是考虑到相关的开销调集的数据集,从CPU,在Pci,GPU。

这就是说,光线跟踪的,而数据,并在某种意义上,已经广泛散控制流量,甚至小幅复杂的景象。甚至如果你能到的地图一大堆严格的间隔线,你赶出去旁边的每一个其他的到同一SM,数据和指令的地方你必须对最初的反弹不会很长时间。例如,想象一下所有32个高度连贯光线反弹的一个领域。他们都会去在相当不同的方向,在此之后反弹,并可能打击的对象出的不同的材料,有不同的灯光条件等。每材料和照明、闭塞,等等。条件具有其自己的指令流与它相关联(计算折射,反省,吸收,等等), 所以它就变得相当困难的运行相同的指令流,即使在一个重要部分的螺纹在一个SM。这个问题,与当前状态的技术的在线跟踪码,减少GPU利用率的一个因素16-32,这可能会使业绩不能接受你的应用程序,尤其是如果这是真的-时间(例如一种游戏)。它仍然可能会优于一个处理器例如一个呈现场。

那里是一个新出现的类MIMD或SPMD加速器在看着现在在研究社会。我会看看这些作为合乎逻辑的平台软件,实时光线跟踪.

如果你有兴趣的算法的参与和映射它们的代码,检查了POVRay.还看到光子的映射,这是一个有趣的技术,这种技术甚至更进一步接近表示的物理现实比光线跟踪.

其他提示

这当然是可以做到的,已经完成,并且是一个热点话题目前其中的光线跟踪和Cuda大师。我会开始通过仔细阅读 http://www.nvidia.com/object/cuda_home.html

但它基本上是一个研究的问题。人人都做的很好都遇到了同行审查的研究论文,出来。但 好, 在这一点仍然意味着最佳GPU/Cuda结果是大约有竞争力的最佳解决方案上的CPU/多核心/SSE。因此,我认为这是一个有点早假定使用Cuda是要加速射示踪剂。问题是,虽然光线追踪"令人尴尬的平行"(正如他们所说的),它不是那种"固定的输入和输出大小"问题,即地图直接以Gpu-你想树木,成堆的、动态的数据结构,等等。它可以做Cuda/GPU,但这是非常棘手。

你的问题不清楚关于你的经验水平或目标的项目。如果这是你的第一个光线追踪你们只是想学,我会避免Cuda--它将带你10倍的再开发和可能不会获得良好的速度。如果你是一个中等经验丰富的Cuda程序员,并正在寻找一个具有挑战性的项目和光线跟踪只是一个有趣的事情了解,通过各种手段,尽量做到在Cuda.如果你在犯一个商业应用程序和你希望得到一个有竞争力的速度边缘-很好,这可能是一个垃圾拍摄的这一点...你可能会得到有效的边缘,但牺牲的更多困难的发展和依赖特定硬件。

检查后一年内,答案可能不同后,另一代或两个GPU速度,Cuda编译器发展和研究社会的经验。

更演示'ed光线跟踪在CUDA在他们的会议NVision这一年。这里有一个链接到他们的幻灯片。

http://www.nvidia.com/object/nvision08-IRT.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top