View on GitHub

parallel_genetic_algorithms

Final Project for 15-618 Parallel Computing

Parallelizing Genetic Algorithms on GPU

By Shihao, Raymond

SUMMARY

We are going to implement parallelized genetic algorithms on NVIDIA GeForce 1080 GPU on GHC machines.

BACKGROUND

Genetic Algorithms (GAs) are widely used in many applications and are often times computationally expensive. Although GAs are typically done in an iterative way, the computation within each generation is inherently parallel (Figure 1). Figure 1.General Evolutionary Process of GA

This pipelined process is very similar to graphics pipeline on GPU and might benefit a lot from parallelism. So we decide to implement the evolutionary process in parallel, with different genetic operators and using different programming models.

CHALLENGES

If the fitness function’s evaluation time is dependent on the input genes, there could be a workload imbalance between threads which could reduce the speedup from parallelizing the algorithm. One of the challenges would be to achieve a high speedup when the fitness function has a variable execution time. We would need to come up with a way to maintain the quality of the genetic algorithm’s results and keep a reasonable convergence rate in our parallelization. Additionally, one of the computations in genetic algorithms is to sort the results of the fitness functions applied to the set of genes in an iteration, and we would need to implement a parallel sorting algorithm in this context.

RESOURCES

GOALS AND DELIVERABLES

Plan to achieve:

Hope to achieve:

PLATFORM CHOICE

We will implement GAs in C/CUDA on NVIDIA 1080 GPU on GHC machines. As mentioned above, the evolutionary process is quite similar to graphics processing so GPU may be the most intuitive way to implement it. Other parallel models are also possible after we implemented the GPU version.

SCHEDULE