Abstract
Most Genetic Programming implementations use an interpreter to execute an individual, in order to obtain its outcome. Usually, such interpreter is the main bottleneck of the algorithm, since a single individual may contain thousands of instructions that must be executed on a dataset made of a large number of samples. Although one can use SIMD (Single Instruction Multiple Data) intrinsics to execute a single instruction on a few samples at the same time, multiple passes on the dataset are necessary to calculate the result. To speed up the process, we propose using MIMD (Multiple Instruction Multiple Data) instruction sets. This way, in a single pass one can execute several instructions on the dataset. We employ AVX2 intrinsics to improve the performance even further, reaching a median peak of 7.5 billion genetic programming operations per second in a single CPU core.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Koza, J.R.: Genetic programming as a means for programming computers by natural selection. Stat. Comput. 4(2), 87–112 (1994)
Chitty, D.M.: Fast parallel genetic programming: multi-core CPU versus many-core GPU. Soft. Comput. 16(10), 1795–1814 (2012)
Langdon, W.B., Banzhaf, W.: A SIMD interpreter for genetic programming on GPU graphics cards. In: O’Neill, M., et al. (eds.) EuroGP 2008. LNCS, vol. 4971, pp. 73–85. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78671-9_7
Fukunaga, A., Stechert, A., Mutz, D.: A genome compiler for high performance genetic programming. In: Genetic Programming 1998: Proceedings of the Third Annual Conference, University of Wisconsin, Madison, Wisconsin, USA, pp. 86–94. Morgan Kaufmann (1998)
Nordin, P.: A compiling genetic programming system that directly manipulates the machine code. In: Advances in Genetic Programming, pp. 311–331. MIT Press, Cambridge (1994)
Fernández, F., Spezzano, G., Tomassini, M., Vanneschi, L.: 6. In: Parallel Genetic Programming, pp. 127–153. Wiley-Blackwell, Hoboken (2005)
Eklund, S.E.: Time series forecasting using massively parallel genetic programming. In: Proceedings International Parallel and Distributed Processing Symposium, pp. 1–5. IEEE, New York, April 2003
Heywood, M.I., Zincir-Heywood, A.N.: Register based genetic programming on FPGA computing platforms. In: Poli, R., Banzhaf, W., Langdon, W.B., Miller, J., Nordin, P., Fogarty, T.C. (eds.) EuroGP 2000. LNCS, vol. 1802, pp. 44–59. Springer, Heidelberg (2000). https://doi.org/10.1007/978-3-540-46239-2_4
Cano, A., Ventura, S.: GPU-parallel subtree interpreter for genetic programming. In: Proceedings of the 2014 Annual Conference on Genetic and Evolutionary Computation, GECCO 2014, pp. 887–894. ACM, New York (2014)
Chitty, D.M.: Faster GPU-based genetic programming using a two-dimensional stack. Soft. Comput. 21(14), 3859–3878 (2016). https://doi.org/10.1007/s00500-016-2034-0
da Silva, C.P., Dias, D.M., Bentes, C., Pacheco, M.A.C., Cupertino, L.F.: Evolving GPU machine code. J. Mach. Learn. Res. 16, 673–712 (2015)
Vašíček, Z., Slaný, K.: Efficient phenotype evaluation in cartesian genetic programming. In: Moraglio, A., Silva, S., Krawiec, K., Machado, P., Cotta, C. (eds.) EuroGP 2012. LNCS, vol. 7244, pp. 266–278. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-29139-5_23
Augusto, D.A., Barbosa, H.J.: Accelerated parallel genetic programming tree evaluation with OpenCL. J. Parallel Distrib. Comput. 73(1), 86–100 (2013)
Harding, S.L., Banzhaf, W.: Distributed genetic programming on GPUs using CUDA. In: Workshop on Parallel Architectures and Bioinspired Algorithms, Raleigh, NC, USA, pp. 1–10. Universidad Complutense de Madrid, September 2009
Maitre, O., Lachiche, N., Collet, P.: Fast evaluation of GP trees on GPGPU by optimizing hardware scheduling. In: Esparcia-Alcázar, A.I., Ekárt, A., Silva, S., Dignum, S., Uyar, A.Ş. (eds.) EuroGP 2010. LNCS, vol. 6021, pp. 301–312. Springer, Heidelberg (2010). https://doi.org/10.1007/978-3-642-12148-7_26
Robilliard, D., Marion, V., Fonlupt, C.: High performance genetic programming on GPU. In: Proceedings of the 2009 Workshop on Bio-inspired Algorithms for Distributed Systems, BADS 2009, 85–94. ACM, New York (2009)
Robilliard, D., Marion-Poty, V., Fonlupt, C.: Population parallel GP on the G80 GPU. In: O’Neill, M., et al. (eds.) EuroGP 2008. LNCS, vol. 4971, pp. 98–109. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78671-9_9
Robilliard, D., Marion-Poty, V., Fonlupt, C.: Genetic programming on graphics processing units. Genet. Program Evolvable Mach. 10(4), 447 (2009)
Harding, S., Banzhaf, W.: Implementing cartesian genetic programming classifiers on graphics processing units using GPU.NET. In: Proceedings of the 13th Annual Conference Companion on Genetic and Evolutionary Computation, GECCO 2011, pp. 463–470. ACM, New York (2011)
Staats, K., Pantridge, E., Cavaglia, M., Milovanov, I., Aniyan, A.: TensorFlow enabled genetic programming. In: Proceedings of the Genetic and Evolutionary Computation Conference Companion, GECCO 2017, pp. 1872–1879. ACM, New York (2017)
Chitty, D.M.: A data parallel approach to genetic programming using programmable graphics hardware. In: Proceedings of the 9th Annual Conference on Genetic and Evolutionary Computation, GECCO 2007, pp. 1566–1573. ACM, New York (2007)
Harding, S., Banzhaf, W.: Fast genetic programming on GPUs. In: Ebner, M., O’Neill, M., Ekárt, A., Vanneschi, L., Esparcia-Alcázar, A.I. (eds.) EuroGP 2007. LNCS, vol. 4445, pp. 90–101. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-71605-1_9
Keith, M.J., Martin, M.C.: Genetic programming in C++: implementation issues. In: Advances in Genetic Programming, pp. 285–310. MIT Press, Cambridge (1994)
Acknowledgements
This work was supported by Grant #2016/07095-5, São Paulo Research Foundation (FAPESP).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
de Melo, V.V., Fazenda, Á.L., Sotto, L.F.D.P., Iacca, G. (2020). A MIMD Interpreter for Genetic Programming. In: Castillo, P.A., Jiménez Laredo, J.L., Fernández de Vega, F. (eds) Applications of Evolutionary Computation. EvoApplications 2020. Lecture Notes in Computer Science(), vol 12104. Springer, Cham. https://doi.org/10.1007/978-3-030-43722-0_41
Download citation
DOI: https://doi.org/10.1007/978-3-030-43722-0_41
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-43721-3
Online ISBN: 978-3-030-43722-0
eBook Packages: Computer ScienceComputer Science (R0)