This repository contains a performance engineering overview for a Conway's Game of Life implementation, where performance is pushed to the maximum.
The project contains the following optimizations build incrementally on top the reference implementation (v0):
- Optimized datastructure for GIF encoding after changing to
uint_8_t
(v1) and updating the border code (v2). - Removed excessive looping in GIF encoding (v3).
- Optimized indexing in world step generation (v4).
- Parallelization using OpenMP (v5.0) and PThreads (v6.0).
- Different way to write the GIF files using mmap (v5.1 and v6.1).
- Instruction level parallelization using SIMD (v7.0 and v7.1)
You can find all implementations in the apps
directory.
The inital code was based on the assignment from the Parallel Programing Practical course at the Vrije Universiteit in Amsterdam, the Netherlands, and the CS2110 course at Dalhousie University in Halifax, NS, Canada.