CPU Concurrency and Parallelism
Order Description
Part 1 of the coursework focuses on single CPU concurrency and parallelism. This means that you will be using techniques such as multithreading, OpenMP, Algorithmic Skeletons, and CPU level parallelism.
The aim of the coursework is to evaluate the performance of a particular algorithm and then attempt to improve performance using various techniques. The main point is that you need to be systematic and document your attempts to parallelise the algorithm, investigating methods that might improve performance.
The algorithm you need to parallelise is a Genetic Algorithm – https://en.wikipedia.org/wiki/Genetic_algorithm.
An implementation of the algorithm has been made available on Moodle.
The algorithm itself can be tuned as you wish, but you should be aiming at improving overall parallel performance. You should investigate different configurations and attempt to measure the overall performance as well as possible. Measuring and the Concurrency Visualizer will help you with this.

