Conways' Life Writ Large
08 Jan 2010
This is (half of) a system I developed for SHARCNET last year. They have a nifty little 'Supercomputer in a Box' project designed for community outreach. Like most modern supercomputers, it's a cluster of machines. For the sake of size, it's made of eight Apple Mac Minis.
Supercomputers have their own constraints; it is not worth parallelizing a process if the gains in computation are outweighed by communications overhead. This is intuitive to a computer scientist, but we're not normal people. Non-computer scientists could use a visual aide.
The above screenshot shows a distributed version of Conway's Life, a trivial cellular automata. It's not a particularly important application; it's just intended to burn up CPU cycles. Each stripe represents a process running on a distinct CPU. In this case I'm wasting time in 16-way glory.
Using the control panel on the left, a user can change the dimensions of the cellular automata, or inflate its computational complexity. For example, a very wide, short simulation will use more network than CPU. A very large simulation will use up available memory and thrash when running on a single processor, but will be perfectly happy when split across a cluster.
In practical use, this program is only half a solution; it works well in concert with a cluster monitoring package such as ganglia.
The distributed conway's life implementation is written in C using MPI. The front end program is written in Python, using wxPython for the graphical interface, and Twisted Python to receive images from each compute process.
