Abstract
Writing recursive programs for fine-grained task-level execution on parallel architectures, such as the current generation of multi-core machines, often require the application of skilled parallelization knowledge to fully realize the potential of the hardware. This paper automates the process by using Grammatical Evolution (GE) to exploit the multi-cores through the evolution of natively parallel programs. We present Multi-core Grammatical Evolution (MCGE-II), which employs GE and OpenMP specific pragmatic information to automatically evolve task-level parallel recursive programs. MCGE-II is evaluated on six recursive C programs, and we show that it solves each of them using parallel code. We further show that MCGE-II significantly decreases the parallel computational effort as the number of cores increase, when tested on an Intel processor.
Keywords
- Grammatical evolution
- Automatic parallelization
- Recursion
- Program synthesis
- OpenMP
- Evolutionary auto-parallelization
This is a preview of subscription content, access via your institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
For example, the Intel Polaris has 80 cores, while the picoChip PC200 has 200+.
- 2.
References
Agapitos, A., Lucas, S.M.: Evolving efficient recursive sorting algorithms. In: IEEE Congress on Evolutionary Computation, pp. 2677–2684. IEEE (2006)
Agapitos, A., Lucas, S.: Evolving modular recursive sorting algorithms. In: Ebner, M., O’Neill, M., Ekárt, A., Vanneschi, L., Esparcia-Alcázar, A.I. (eds.) EuroGP 2007. LNCS, vol. 4445, pp. 301–310. Springer, Heidelberg (2007)
Amarasinghe, S.: (How) can programmers conquer the multicore menace?. In: Proceedings of the International Conference on Parallel Architectures and Compilation Techniques, pp. 133–133. ACM (2008)
Barker, C.: Gartner: Multicore chips leave software trailing (Jan 2009)
Bondhugula, U., Hartono, A., Ramanujam, J., Sadayappan, P.: A practical automatic polyhedral parallelizer and locality optimizer. In: ACM SIGPLAN Conference on Programming Languages Design and Implementation. vol. 43, pp. 101–113. ACM (2008)
Brave, S.: Evolving recursive programs for tree search. In: Angeline, P.J., Kinnear Jr., K.E. (eds.) Advances in Genetic Programming, vol. 2, pp. 203–220. MIT Press, Cambridge (1996)
Chennupati, G., Azad, R.M.A., Ryan, C.: Multi-core GE: automatic evolution of CPU based multi-core parallel programs. In: Proceedings of the Genetic and Evolutionary Computation Conference Companion, pp. 1041–1044. ACM (2014)
Chennupati, G., Fitzgerald, J., Ryan, C.: 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 (NaBIC), pp. 238–243. IEEE (2014)
Koza, J.R.: Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press, Cambridge (1992)
Moraglio, A., Otero, F.E.B., Johnson, C.G., Thompson, S., Freitas, A.A.: Evolving recursive programs using non-recursive scaffolding. In: IEEE Congress on Evolutionary Computation, pp. 1–8. IEEE (2012)
Nisbet, A.: A compiler framework for genetic algorithm (GA) optimised parallelisation. In: Bubak, M., Hertzberger, B., Sloot, P.M.A. (eds.) HPCN-Europe 1998. LNCS, vol. 1401, pp. 987–989. Springer, Heidelberg (1998)
OpenMP Architecture Review Board: OpenMP application program interface version 3.0., May 2008. http://www.openmp.org/mp-documents/spec30.pdf
Ryan, C.: Automatic Re-engineering of Software Using Genetic Programming, Genetic Programming, vol. 2. Springer, New York (1999)
Ryan, C., Azad, R.M.A.: Sensible initialisation in grammatical evolution. In: Barry, A.M. (ed.) Proceedings of the Bird of a Feather Workshops, Genetic and Evolutionary Computation Conference, pp. 142–145. AAAI (2003)
Ryan, C., Collins, J.J., Neill, M.O.: Grammatical evolution: evolving programs for an arbitrary language. In: Banzhaf, W., Poli, R., Schoenauer, M., Fogarty, T.C. (eds.) EuroGP 1998. LNCS, vol. 1391, pp. 83–95. Springer, Heidelberg (1998)
Ryan, C., Ivan, L.: Automatic parallelization of arbitrary programs. In: Langdon, W.B., Fogarty, T.C., Nordin, P., Poli, R. (eds.) EuroGP 1999. LNCS, vol. 1598, pp. 244–254. Springer, Heidelberg (1999)
Spector, L., Klein, J., Keijzer, M.: The push3 execution stack and the evolution of control. In: Proceedings of the Genetic and Evolutionary Computation Conference, pp. 1689–1696. ACM, New York (2005)
Trenaman, A.: Concurrent Genetic Programming, Tartarus and Dancing Agents. In: Langdon, W.B., Fogarty, T.C., Nordin, P., Poli, R. (eds.) EuroGP 1999. LNCS, vol. 1598, pp. 270–282. Springer, Heidelberg (1999)
Whigham, P.A., McKay, R.I.: Genetic approaches to learning recursive relations. In: Yao, X. (ed.) Progess in Evolutionary Computation. LNAI, vol. 956, pp. 17–27. Springer, Heidelberg (1995)
Williams, K.P.: Evolutionary algorithms for automatic parallelization. Ph.D. thesis, University of Reading (1998)
Wong, M.L., Mun, T.: Evolving recursive programs by using adaptive grammar based genetic programming. Genet. Program. Evolvable Mach. 6, 421–455 (2005)
Yu, T., Clark, C.: Recursion, lambda-abstractions and genetic programming. Cognitive Science Research Papers-University Of Birmingham CSRP, pp. 26–30 (1998)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Chennupati, G., Azad, R.M.A., Ryan, C. (2015). Automatic Evolution of Parallel Recursive Programs. In: Machado, P., et al. Genetic Programming. EuroGP 2015. Lecture Notes in Computer Science(), vol 9025. Springer, Cham. https://doi.org/10.1007/978-3-319-16501-1_14
Download citation
DOI: https://doi.org/10.1007/978-3-319-16501-1_14
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-16500-4
Online ISBN: 978-3-319-16501-1
eBook Packages: Computer ScienceComputer Science (R0)