Parallel and in-process compilation of individuals for genetic programming on GPU
This work addresses a specific bottleneck in genetic programming for researchers and practitioners using GPU acceleration, though it is incremental in nature.
The paper tackles the prohibitive compilation overhead in genetic programming on GPU hardware by applying in-process compilation and parallelizing it using multiprocess memory sharing and interprocess communication, achieving further reductions in compilation overhead. It also contributes an open-source C# framework for building arbitrary grammatical genetic programming experiments on GPU with minimal extra coding effort.
Three approaches to implement genetic programming on GPU hardware are compilation, interpretation and direct generation of machine code. The compiled approach is known to have a prohibitive overhead compared to other two. This paper investigates methods to accelerate compilation of individuals for genetic programming on GPU hardware. We apply in-process compilation to minimize the compilation overhead at each generation; and we investigate ways to parallelize in-process compilation. In-process compilation doesn't lend itself to trivial parallelization with threads; we propose a multiprocess parallelization using memory sharing and operating systems interprocess communication primitives. With parallelized compilation we achieve further reductions on compilation overhead. Another contribution of this work is the code framework we built in C# for the experiments. The framework makes it possible to build arbitrary grammatical genetic programming experiments that run on GPU with minimal extra coding effort, and is available as open source.