= Conway's Game of Life (SIMDitized) = == Objective == This project is a demonstration on how to ''creatively'' use SSE* instructions to implement [http://en.wikipedia.org/wiki/Conway%27s_game_of_life Conway's Game of Life]. == Optimizations == * use of SSE2 instructions (obviously) * can be expanded to using different MP techniques such as posix threads and [wiki:OpenMP OpenMP], to get the best performance. The inner processing loop was constructed to minimize dependencies. * some crafty [wiki:BitPacking bit packing] that I came up with. This reduces memory bandwidth. * Minimal [wiki:BranchPrediction 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 [wiki:Installation installation instructions]. Life still has many [wiki: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: [wiki:FakeSSE 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).