Skip to main content

Synthesis of Parallel Programs on Multi-Cores

  • Chapter
  • First Online:
Handbook of Grammatical Evolution

Abstract

Multi-cores offer higher processing power than single core processors. However, as the number of cores available on a single processor increases, efficiently programming them becomes increasingly more complex, often to the point where the limiting factor in speeding up tasks is the software.

We present Grammatical Automatic Parallel Programming (GAPP), a system that synthesizes parallel code on multi-cores using OpenMP parallelization primitives in problem-specific grammars. As a result, GAPP obviates the need for programmers to think parallel while still letting them produce parallel code.

The performance of GAPP on a number of difficult proof of concept benchmarks informs further optimization of both the design of grammars and fitness function to extract further parallelism. We demonstrate an improved performance of evolving programs with controlled degree of parallelism. These programs adapt to the number of cores on which they are scheduled to execute.

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 129.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 169.99
Price excludes VAT (USA)
  • Durable hardcover 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

References

  1. R. Abbott, J.G.B. Parviz, Guided genetic programming, in Proceedings of the International Conference on Machine Learning; Models, Technologies and Applications, ed. by H.R. Arabnia, E.B. Kozerenko (CSREA Press, Las Vegas, 2003), pp. 28–34

    Google Scholar 

  2. A. Agapitos, S.M. Lucas, Evolving efficient recursive sorting algorithms, in IEEE Congress on Evolutionary Computation (IEEE, New York, 2006), pp. 2677–2684

    Google Scholar 

  3. A. Agapitos, S.M. Lucas, Evolving modular recursive sorting algorithms, in Genetic Programming, ed. by M. Ebner, M. O’Neill, A. Ekárt, L. Vanneschi, A.I. Esparcia-Alcázar. Lecture Notes in Computer Science, vol. 4445 (Springer, Berlin, 2007), pp. 301–310

    Google Scholar 

  4. A. Agapitos, M. O’Neill, A. Kattan, S.M. Lucas, Recursion in tree-based genetic programming. Genet. Program Evolvable Mach. 18(2), 149–183 (2017)

    Article  Google Scholar 

  5. S.P. Amarasinghe, J.-A.M. Anderson, M.S. Lam, C.-W. Tseng, An overview of the SUIF compiler for scalable parallel machines, in Proceedings of the 7th SIAM Conference on Parallel Processing for Scientific Computing (1995), pp. 662–667

    Google Scholar 

  6. S. Bell, B. Edwards, J. Amann, R. Conlin, K. Joyce, V. Leung, J. MacKay, M. Reif, L. Bao, J. Brown, M. Mattina, C.-C. Miao, C. Ramey, D. Wentzlaff, W. Anderson, E. Berger, N. Fairbanks, D. Khan, F. Montenegro, J. Stickney, J. Zook, Tile64 - processor: a 64-core soc with mesh interconnect, in Proceedings of the 14th International Solid-State Circuits Conference, ISSCC ’08 (IEEE, New York, 2008), pp. 88–598

    Google Scholar 

  7. S. Benkner, VFC: the vienna fortran compiler. Sci. Program. 7(1), 67–81 (1999)

    Google Scholar 

  8. B. Blume, R. Eigenmann, K. Faigin, J. Grout, J. Hoeflinger, D. Padua, P. Petersen, B. Pottenger, L. Rauchwerger, P. Tu, S. Weatherford, Polaris: the next generation in parallelizing compilers, in Proceedings of the Workshop on Languages and Compilers for Parallel Computing (Springer, Berlin, 1994), pp. 10.1–10.18

    Google Scholar 

  9. S. Boyd-Wickizer, A.T. Clements, Y. Mao, A. Pesterev, M.F. Kaashoek, R. Morris, N. Zeldovich, An analysis of linux scalability to many cores, in Proceedings of the 9th USENIX Conference on Operating Systems Design and Implementation, OSDI ’10 (USENIX Association, Berkeley, 2010), pp. 1–8

    Google Scholar 

  10. S. Brave, Evolving recursive programs for tree search, in Advances in Genetic Programming, vol. 2 (MIT Press, Cambridge, MA, 1996), pp. 203–220

    Google Scholar 

  11. J.M. Bull, M.E. Kambites, Jomp–an openmp-like interface for java, in Proceedings of the ACM 2000 Conference on Java Grande, JAVA’00 (ACM, New York, 2000), pp. 44–53

    Book  Google Scholar 

  12. B. Chapman, G. Jost, R. van der Pas, Using OpenMP: Portable Shared Memory Parallel Programming. Scientific and Engineering Computation (The MIT Press, Cambridge, MA, 2007)

    Google Scholar 

  13. G. Chennupati, Grammatical evolution + multi-cores = automatic parallel programming!, PhD thesis, University of Limerick, Limerick, Ireland, 2015

    Google Scholar 

  14. G. Chennupati, C. Ryan, R.M.A. Azad, An empirical analysis through the time complexity of GE problems, in 19th International Conference on Soft Computing, MENDEL’13, Brno, Czech Republic, ed. by R. Matousek (2013), pp. 37–44

    Google Scholar 

  15. G. Chennupati, J. Fitzgerald, C. Ryan, On the efficiency of multi-core grammatical evolution (MCGE) evolving multi-core parallel programs, in Proceedings of the Sixth World Congress on Nature and Biologically Inspired Computing (IEEE, New York, 2014), pp. 238–243

    Google Scholar 

  16. G. Chennupati, C. Ryan, R.M.A. Azad, Predict the success or failure of an evolutionary algorithm run, in Proceedings of the Annual Conference on Genetic and Evolutionary Computation Companion, GECCO Comp ’14 (ACM, New York, 2014), pp. 131–132

    Google Scholar 

  17. G. Chennupati, R.M.A. Azad, C. Ryan, Multi-core GE: automatic evolution of CPU based multi-core parallel programs, in Proceedings of the Genetic and Evolutionary Computation Conference Companion (ACM, New York, 2014), pp. 1041–1044

    Google Scholar 

  18. G. Chennupati, R.M.A. Azad, C. Ryan, Predict the performance of GE with an ACO based machine learning algorithm, in Proceedings of the Genetic and Evolutionary Computation Conference Companion, ed. by D.V. Arnold, E. Alba (ACM, New York, 2014), pp. 1353–1360

    Google Scholar 

  19. G. Chennpati, R.M.A. Azad, C. Ryan, On the automatic generation of efficient parallel iterative sorting algorithms, in Proceedings of the Genetic and Evolutionary Computation Conference Companion, GECCO Companion ’15 (ACM, New York, 2015), pp. 1369–1370

    Google Scholar 

  20. G. Chennupati, R.M.A. Azad, C. Ryan, Automatic evolution of parallel recursive programs, in Proceedings of the 18th European Conference on Genetic Programming, EuroGP’15, ed. by P. Machado, M.I. Heywood, J. McDermott, M. Castelli, P. García-Sánchez, P. Burelli, S. Risi, K. Sim (Springer, Berlin, 2015), pp. 167–178

    Google Scholar 

  21. G. Chennupati, R.M.A. Azad, C. Ryan, Automatic evolution of parallel sorting programs on multi-cores, in Proceedings of the 18th European Conference on Applications of Evolutionary Computation, EvoApplications’15, ed. by A.M. Mora, G. Squillero (Springer, Berlin, 2015), pp. 706–717

    Google Scholar 

  22. G. Chennupati, R.M.A. Azad, C. Ryan, Performance optimization of multi-core grammatical evolution generated parallel recursive programs, in Proceedings of Genetic and Evolutionary Computation Conference, GECCO’15 (ACM, New York, 2015), pp. 1007–1014

    Google Scholar 

  23. G. Chennupati, R.M.A. Azad, C. Ryan, Synthesis of parallel iterative sorts with multi-core grammatical evolution, in Proceedings of the Genetic and Evolutionary Computation Conference Companion, GECCO Companion ’15 (ACM, New York, 2015), pp. 1059–1066

    Book  Google Scholar 

  24. G. Chennupati, R.M.A. Azad, C. Ryan, Automatic lock-free parallel programming on multi-core processors, in Proceedings of the IEEE Congress on Evolutionary Computation, CEC ’16 (IEEE, New York, 2016), pp. 4143–4150

    Google Scholar 

  25. G. Chennupati, N. Santhi, S. Eidenbenz, S. Thulasidasan, AMM: scalable memory reuse model to predict the performance of physics codes, in International Conference on Cluster Computing (CLUSTER) (2017), pp. 649–650

    Google Scholar 

  26. L. Dagum, R. Menon, Openmp: an industry-standard api for shared-memory programming. IEEE Comput. Sci. Eng. 5(1), 46–55 (1998)

    Article  Google Scholar 

  27. J. Demšar, Statistical comparisons of classifiers over multiple data sets. J. Mach. Learn. Res. 7, 1–30 (2006)

    MathSciNet  MATH  Google Scholar 

  28. H. Esmaeilzadeh, E. Blem, R. St. Amant, K. Sankaralingam, D. Burger, Dark silicon and the end of multicore scaling. SIGARCH Comput. Archit. News 39(3), 365–376 (2011)

    Article  Google Scholar 

  29. S. García, F. Herrera, An extension on “statistical comparisons of classifiers over multiple data sets” for all pairwise comparisons. J. Mach. Learn. Res. 9, 2677–2694 (2008)

    MATH  Google Scholar 

  30. W. Gropp, E. Lusk, N. Doss, A. Skjellum, A high-performance, portable implementation of the MPI message passing interface standard. Parallel Comput. 22(6), 789–828 (1996)

    Article  Google Scholar 

  31. W.D. Hillis, Co-evolving parasites improve simulated evolution as an optimization procedure. Phys. D Nonlinear Phenom. 42(1), 228–234 (1990)

    Article  Google Scholar 

  32. J. Howard, S. Dighe, Y. Hoskote, S. Vangal, D. Finan, G. Ruhl, D. Jenkins, H. Wilson, N. Borkar, G. Schrom, F. Pailet, S. Jain, T. Jacob, S. Yada, S. Marella, P. Salihundam, V. Erraguntla, M. Konow, M. Riepen, G. Droege, J. Lindemann, M. Gries, T. Apel, K. Henriss, T. Lund-Larsen, S. Steibl, S. Borkar, V. De, R. Van Der Wijngaart, T. Mattson, A 48-core ia-32 message-passing processor with dvfs in 45nm cmos, in Proceedings of the 16th International Solid-State Circuits Conference, ISSCC ’10 (IEEE, New York, 2010), pp. 108–109

    Google Scholar 

  33. K.E.J. Kinnear, Evolving a sort: lessons in genetic programming, in IEEE International Conference on Neural Networks (IEEE, New York, 1993), pp. 881–888

    Book  Google Scholar 

  34. K.E.J. Kinnear, Generality and difficulty in genetic programming: evolving a sort, in Proceedings of the 5th International Conference on Genetic Algorithms, ed. by S. Forrest (Morgan Kaufmann, Los Altos, 1993), pp. 287–294

    Google Scholar 

  35. D.E. Knuth, The Art of Computer Programming, Volume 3: Sorting and Searching, 2nd edn. (Addison Wesley Longman Publishing, Redwood City, 1998)

    Google Scholar 

  36. J.R. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection (MIT Press, Cambridge, MA, 1992)

    MATH  Google Scholar 

  37. T. Mattson, M. Wrinn, Parallel programming: can we PLEASE get it right this time?, in 45th Design Automation Conference (IEEE, New York, 2008), pp. 7–11

    Google Scholar 

  38. A. Moraglio, F.E.B. Otero, C.G. Johnson, S. Thompson, A.A. Freitas, Evolving recursive programs using non-recursive scaffolding, in IEEE Congress on Evolutionary Computation (IEEE, New York, 2012), pp. 1–8

    Google Scholar 

  39. M. Nicolau, D. Slattery, Libge - grammatical evolution library (2006), http://bds.ul.ie/libGE/index.html

  40. A. Nisbet, GAPS: a compiler framework for genetic algorithm (GA) optimised parallelisation. in High-Performance Computing and Networking, ed. by P. Sloot, M. Bubak, B. Hertzberger. Lecture Notes in Computer Science, vol. 1401 (Springer, Berlin, 1998), pp. 987–989

    Google Scholar 

  41. M.F.P. O’Boyle, J.M. Bull, Expert programmer versus parallelizing compiler: a comparative study of two approaches for distributed shared memory. Sci. Program. Parallel Comput. Proj. Swiss Prior. Programme 5(1), 63–88 (1996)

    Google Scholar 

  42. M. O’Neill, C. Ryan, Grammatical Evolution: Evolutionary Automatic Programming in an Arbitrary Language (Kluwer Academic Publishers, Norwell, 2003)

    Book  Google Scholar 

  43. M. O’Neill, M. Nicolau, A. Agapitos, Experiments in program synthesis with grammatical evolution: a focus on integer sorting, in IEEE Congress on Evolutionary Computation (IEEE, New York, 2014), pp. 1504–1511

    Google Scholar 

  44. U.-M. O’Reilly, F. Oppacher, An experimental perspective on genetic programming, in Parallel Problem Solving from Nature, ed. by R. Manner, B. Manderick, vol. 2 (Elsevier Science, Amsterdam, 1992), pp. 331–340

    Google Scholar 

  45. U.-M. O’Reilly, F. Oppacher, Chapter 2: A comparative analysis of genetic programming, in Advances in Genetic Programming, ed. by P.J. Angeline, J. Kenneth, E. Kinnear, vol. 2 (MIT Press, Cambridge, MA, 1996), pp. 23–44

    Google Scholar 

  46. D. Patterson, The trouble with multi-core. IEEE Spectr. 47(7), 28–32, 53 (2010)

    Google Scholar 

  47. C. Ryan, Automatic Re-engineering of Software Using Genetic Programming. Genetic Programming, vol. 2 (Springer, Berlin, 1999)

    Google Scholar 

  48. L. Spector, J. Klein, M. Keijzer, The push3 execution stack and the evolution of control, in Proceedings of the Genetic and Evolutionary Computation Conference (ACM, New York, 2005), pp. 1689–1696

    Google Scholar 

  49. C. Stephen, Multicore processors create software headaches, Technical report, MIT Technology Review, April 2010

    Google Scholar 

  50. J. Torrellas, M. Lam, J.L. Hennessy, False sharing and spatial locality in multiprocessor caches. IEEE Trans. Comput. 43(6), 651–663 (1994)

    Article  Google Scholar 

  51. A. Trenaman, Concurrent genetic programming, tartarus and dancing agents, in Genetic Programming, ed. by R. Poli, P. Nordin, W.B. Langdon, T.C. Fogarty. Lecture Notes in Computer Science, vol. 1598 (Springer, Berlin, 1999), pp. 270–282

    Google Scholar 

  52. A. Vargha, H.D. Delaney, A critique and improvement of the “cl” common language effect size statistics of mcgraw and wong. J. Educ. Behav. Stat. 25(2), 101–132 (2000)

    Google Scholar 

  53. Z. Wang, M.F. O’Boyle, Mapping parallelism to multi-cores: A machine learning based approach, in Proceedings of the 14th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP ’09 (ACM, New York, 2009), pp. 75–84

    Google Scholar 

  54. P.A. Whigham, Grammatical bias for evolutionary learning, PhD thesis, University of New South Wales, New South Wales, Australia, 1996

    Google Scholar 

  55. P.A. Whigham, R.I. McKay, Genetic approaches to learning recursive relations, in Progess in Evolutionary Computation, ed. by X. Yao. Lecture Notes in Artificial Intelligence (Springer, Berlin, 1995), pp. 17–27

    Google Scholar 

  56. K.P. Williams, Evolutionary algorithms for automatic parallelization, PhD thesis, University of Reading, 1998

    Google Scholar 

  57. M.L. Wong, T. Mun, Evolving recursive programs by using adaptive grammar based genetic programming. Genet. Program Evolvable Mach. 6(4), 421–455 (2005)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Gopinath Chennupati .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG, part of Springer Nature

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Chennupati, G., Azad, R.M.A., Ryan, C., Eidenbenz, S., Santhi, N. (2018). Synthesis of Parallel Programs on Multi-Cores. In: Ryan, C., O'Neill, M., Collins, J. (eds) Handbook of Grammatical Evolution. Springer, Cham. https://doi.org/10.1007/978-3-319-78717-6_12

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-78717-6_12

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-78716-9

  • Online ISBN: 978-3-319-78717-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics