Conways' Life Writ Large

08 Jan 2010
Tagged: C, Cloud Computing, Distributed Computing, Projects, python
Distributed Conway's Life 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.