浅谈Mental Ray渲染引擎并行性机制

        最近一段时间过的很充实,抽周末时间总结一下自己所学渲染技术的心得体会,希望可以帮助需要此知识的朋友,也作为备忘录以供查阅。


       在图形学领域,提高渲染效率及渲染时间,从而得到更好的交互体验,是每个技术人员应有的对技术精益求精的追求。对于多进程、多线程我们再熟悉不过了。在Mental Ray渲染引擎设计中,也引入了并行机制。从来快速取得照片般逼真的结果。在该引擎中,引入了两种并行机制:线程并行与网络并行。接下来对其进行简单的介绍:


   线程并行:所谓线程并行,即允许带多个处理器的机器在运行向前细分和渲染时协同工作。mental ray将整个作业分成许多小任务。然后将他们分配到所有可用处理器上,以求通过平衡负载而获得更高的性能。使用多处理器不需要进行任何配置。如果机器中有多个处理器,mental ray将自动使用他们,除非明确的告诉他不使用多处理器。


   网络并行:所谓网络并行,即允许同一网络中的多台机器在渲染一幅图像时协同工作。除了网络并行外还需要在所有参加的机器之间使用TCP/IP套接字及案例通信通道之外,网络并行使用与线程并行的机制几乎完全形同。参加的机器型号可以不同,mental ray可以连接各种机器,无论他们使用什么CPU类型、字节顺序、32位或者64位体系结构以及系统(Unix or Windows)。网络中mental ray的版本必须合理的相近,否则mental ray将拒绝那些运行着不兼容版本的mental ray机器参加网络并行任务。通常,若版本号的前两个数字不同(例如3.2.1与3.3.1),则两个版本很可能兼容。


   既然实现网络并行功能带来一些启动与通信负载,那么对于给定的一系列变量,例如场景大小与复杂度、网络带宽、单台机器的速度等,就存在最优的服务器机数量。mental ray尝试在机器之间平衡负载并节约网络带宽,但是在某点以后增加更多机器不能在明显改善性能。在单机上增加处理器数量也可能导致一定的负载,但是mental ray能很好的适配带16个甚至更多的大型机器。一般而言,使用少量带很多处理器的机器比使用大量的带很少处理器的机器效率要高。


   mental ray为存储场景设计了虚拟共享数据库,这种设计确保了所有连接的处理器从场景数据库和执行作业的角度而言都是等价的,无论他们位于客户端还是位于某台服务器上。无需对场景或着色器做任何修改即可利用并行性,只要在编写新的自定义着色器时遵循并行编程的一般规则即可。


  

你可能感兴趣的:(Ray,Mental,光线跟踪渲染,线程并行,网络并行)