Conway's Game of Life (SIMDitized)

Objective

This project is a demonstration on how to creatively use SSE* instructions to implement Conway's Game of Life.

Optimizations

  • use of SSE2 instructions (obviously)
  • can be expanded to using different MP techniques such as posix threads and OpenMP, to get the best performance. The inner processing loop was constructed to minimize dependencies.
  • some crafty bit packing that I came up with. This reduces memory bandwidth.
  • Minimal branching using equality SSE instructions.

This is Work in Progress

I'm still working on user input, and possible different methods of visualization. Right now, the application supports the following modes:

Go here for installation instructions.

Life still has many Limitations.

Executables

  • lifebench

Benchmark mode (no visualization). used in conjunction with time to get statistics on how long n iterations take to run.

  • lifeglut

OpenGL implementation with GLUT. This is the primary method of displaying the world. I intend on adding user input with the mouse, and making it scale and zoom in and out. If somebody wants to convert this to SDL for me, go ahead.

  • lifeconsole

stdout implementation that represents a 128x128 block with with @'s and .'s this is broken at the moment

Information on fakesse.h

You can find out here: fakesse

Note on Hashing

Considerations were not taken as far as hashing algorithms go, so don't ask (but if you want to implement it for me, go ahead).