Parallel and in-process compilation of individuals for genetic programming on GPU
- Published
- Accepted
- Subject Areas
- Artificial Intelligence, Distributed and Parallel Computing
- Keywords
- genetic programming, gpu, cuda, grammar, grammatical genetic programming, evolutionary computing, parallel compilation, nvcc, parallelization, compiler
- Copyright
- © 2017 Ayral et al.
- Licence
- This is an open access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted use, distribution, reproduction and adaptation in any medium and for any purpose provided that it is properly attributed. For attribution, the original author(s), title, publication source (PeerJ Preprints) and either DOI or URL of the article must be cited.
- Cite this article
- 2017. Parallel and in-process compilation of individuals for genetic programming on GPU. PeerJ Preprints 5:e2936v1 https://doi.org/10.7287/peerj.preprints.2936v1
Abstract
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.
Author Comment
This is a submission to PeerJ Computer Science for review.