Skip to main content

A MIMD Interpreter for Genetic Programming

  • Conference paper
  • First Online:
Applications of Evolutionary Computation (EvoApplications 2020)

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    https://software.intel.com/en-us/node/523876.

  2. 2.

    https://software.intel.com/sites/landingpage/IntrinsicsGuide/#techs=FMA&expand=2549.

References

  1. Koza, J.R.: Genetic programming as a means for programming computers by natural selection. Stat. Comput. 4(2), 87–112 (1994)

    Article  Google Scholar 

  2. Chitty, D.M.: Fast parallel genetic programming: multi-core CPU versus many-core GPU. Soft. Comput. 16(10), 1795–1814 (2012)

    Article  Google Scholar 

  3. 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

    Chapter  MATH  Google Scholar 

  4. 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)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. Fernández, F., Spezzano, G., Tomassini, M., Vanneschi, L.: 6. In: Parallel Genetic Programming, pp. 127–153. Wiley-Blackwell, Hoboken (2005)

    Google Scholar 

  7. 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

    Google Scholar 

  8. 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

    Chapter  MATH  Google Scholar 

  9. 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)

    Google Scholar 

  10. 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

    Article  Google Scholar 

  11. 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)

    MathSciNet  MATH  Google Scholar 

  12. 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

    Chapter  Google Scholar 

  13. Augusto, D.A., Barbosa, H.J.: Accelerated parallel genetic programming tree evaluation with OpenCL. J. Parallel Distrib. Comput. 73(1), 86–100 (2013)

    Article  Google Scholar 

  14. 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

    Google Scholar 

  15. 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

    Chapter  Google Scholar 

  16. 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)

    Google Scholar 

  17. 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

    Chapter  Google Scholar 

  18. Robilliard, D., Marion-Poty, V., Fonlupt, C.: Genetic programming on graphics processing units. Genet. Program Evolvable Mach. 10(4), 447 (2009)

    Article  Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. 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)

    Google Scholar 

  22. 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

    Chapter  Google Scholar 

  23. Keith, M.J., Martin, M.C.: Genetic programming in C++: implementation issues. In: Advances in Genetic Programming, pp. 285–310. MIT Press, Cambridge (1994)

    Google Scholar 

Download references

Acknowledgements

This work was supported by Grant #2016/07095-5, São Paulo Research Foundation (FAPESP).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Giovanni Iacca .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics