Ray tracing on PS3 hardware

一个多月前看过的视频,3台PS3通过路由连接起来,已经可以实现实时(或交互)的ray tracing了。虽然对Cell之前有过了解,但是那么快就有成果还是比较震惊的。



看了一下paper,有所启发。一般有两种做法,SPE作为ray tracing的每个stage,拥有不同的kernel,以及SPE上运行相同的ray tracing kernel,处理屏幕上不同的像素。第一种方法问题在于难以平衡每个stage中的load balance,避免stall,设计方面将会无比复杂;第二种方法头疼的地方在于每个SPE都要任意存取整个场景的几何数据,这显然不是256KB LS能放的下的,所以需要设计一个software cache做法来掩盖讨厌的DMA操作,所幸相近的像素之间对于场景数据的coherent是相对较大的,所以software cache的命中率也会较高,再加上software hyperthreading的做法——把cache miss后的SPE转去处理其他已有现成场景数据的像素,等它所需要的数据异步DMA到达之后,再处理之。
至于多台CellBE的话,可以把场景数据通过网络同步到多台CellBE的主存中,然后通过协议分割屏幕像素以便处理。说实话,这种做法的工作也不小……

由此看来,加上Folding@home在PS3上的巨大成功,我们有理由相信类似CellBE架构的CPU将会成为未来高性能计算的主流之一——只是目前我们尚缺乏时间和工具。

题外话:似乎国内这方面动手的还是比较少,希望有经验的朋友多交流。
posted @ 2007-05-24 10:38  eygneph  阅读(266)  评论(1编辑  收藏  举报