场景存放在常量内存中;而对于其他的3D应用,则可以将相对固定不变的背景场景存放在常量内存中,而将运动变化的对象数据存入全局内存。
另一方面,除了在读取场景数据时可能遇到内存访问的冲突,在光线跟踪结束后,往全局内存中的图像缓冲区写入像素颜色数据时,同样可能发生冲突。但这种冲突相对于读取数150 据的冲突更容易解决,因为冲突的原因主要是写入地址未对齐。这种情况主要出现在图像缓
存按行存放时,缓存的列数量不是一个线程组线程数量的整数倍。因此从图像第二行开始,每次的数据写入可能都是未对齐的。一种比较简单的解决方案是将图像缓存的列数量补齐为线程数量的整数倍。在输出的时候,补齐的区域可以不进行输出(表3)。
155
表3 内存对齐写入对运行性能的影响
5 结论
本文给出了一种基于CUDA的光线跟踪渲染器的面向对象的实现方案,并对其运行性能进行了初步的优化。CUDA提供了对面向对象的C++语言的支持,但对其某些特性的支160 持并不完善,这就使得面向对象程序向CUDA平台的移植存在一定的困难。另一方面,为
了充分利用GPU的并行计算能力,开发人员还需要对CUDA的编程模型和内存访问机制足够的了解,以避免内存冲突和数据传输等因素对程序运行性能造成影响。CUDA还有非常多的特点本文并没有涉及,利用这些特点,本文的光线跟踪渲染器还可以进一步的改进和优化。接下来的研究工作主要关注如何对CUDA上的光线跟踪渲染器进行更深入的优化,以165 探索光线跟踪在个人电脑上进行交互式运行的潜力。
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新人文社科CUDA光线跟踪渲染器的实现和优化(7)全文阅读和word下载服务。
相关推荐: