Friday, July 27, 2007

Distributed rendering?

I was just reading about Microsoft's Compute Cluster and how it used the Message Passing Interface (MPI) protocol to share the work across the nodes. This caused me to wonder what kind of protocols the various distributed rendering solutions used. As far as I can tell the network rendering in Carrara uses a proprietory solution that uses broadcasts TCP packets over a Lan. Piovra one of the Blender network projects uses TCP sockets and custom commands. For software such as Maya there also seems to be no standardisation.

The advantage of introducing some form of standardisation is that there will be more tools for debugging, analysing and possiblities of performance increases by swapping in newer libraries. The developers can concentrate on writing code for dealing with the graphics and UIs rather than on writing low level code for networking and distributing processes.

Given that Blender, DazStudio, Vue and Poser all use Python as an internal scripting language, they could use the Python version of MPI although I am slightly puzzled by some of the comments in their manual that implies that the messages passed from here would not be compatible with the C versions. There would also need to be a standardise language for describing the rendering processes.

2/8/2007 Update

Mac OS X supports MPI in it's XGrid and a demo of using this with POVRay was done a few years back.

There are several other python MPI implementations at SourceForge and another example of Povray.

No comments: