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.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
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
A. Agapitos, S.M. Lucas, Evolving efficient recursive sorting algorithms, in IEEE Congress on Evolutionary Computation (IEEE, New York, 2006), pp. 2677–2684
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
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)
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
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
S. Benkner, VFC: the vienna fortran compiler. Sci. Program. 7(1), 67–81 (1999)
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
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
S. Brave, Evolving recursive programs for tree search, in Advances in Genetic Programming, vol. 2 (MIT Press, Cambridge, MA, 1996), pp. 203–220
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
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)
G. Chennupati, Grammatical evolution + multi-cores = automatic parallel programming!, PhD thesis, University of Limerick, Limerick, Ireland, 2015
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
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
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
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
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
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
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
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
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
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
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
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
L. Dagum, R. Menon, Openmp: an industry-standard api for shared-memory programming. IEEE Comput. Sci. Eng. 5(1), 46–55 (1998)
J. Demšar, Statistical comparisons of classifiers over multiple data sets. J. Mach. Learn. Res. 7, 1–30 (2006)
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)
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)
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)
W.D. Hillis, Co-evolving parasites improve simulated evolution as an optimization procedure. Phys. D Nonlinear Phenom. 42(1), 228–234 (1990)
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
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
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
D.E. Knuth, The Art of Computer Programming, Volume 3: Sorting and Searching, 2nd edn. (Addison Wesley Longman Publishing, Redwood City, 1998)
J.R. Koza, Genetic Programming: On the Programming of Computers by Means of Natural Selection (MIT Press, Cambridge, MA, 1992)
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
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
M. Nicolau, D. Slattery, Libge - grammatical evolution library (2006), http://bds.ul.ie/libGE/index.html
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
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)
M. O’Neill, C. Ryan, Grammatical Evolution: Evolutionary Automatic Programming in an Arbitrary Language (Kluwer Academic Publishers, Norwell, 2003)
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
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
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
D. Patterson, The trouble with multi-core. IEEE Spectr. 47(7), 28–32, 53 (2010)
C. Ryan, Automatic Re-engineering of Software Using Genetic Programming. Genetic Programming, vol. 2 (Springer, Berlin, 1999)
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
C. Stephen, Multicore processors create software headaches, Technical report, MIT Technology Review, April 2010
J. Torrellas, M. Lam, J.L. Hennessy, False sharing and spatial locality in multiprocessor caches. IEEE Trans. Comput. 43(6), 651–663 (1994)
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
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)
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
P.A. Whigham, Grammatical bias for evolutionary learning, PhD thesis, University of New South Wales, New South Wales, Australia, 1996
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
K.P. Williams, Evolutionary algorithms for automatic parallelization, PhD thesis, University of Reading, 1998
M.L. Wong, T. Mun, Evolving recursive programs by using adaptive grammar based genetic programming. Genet. Program Evolvable Mach. 6(4), 421–455 (2005)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer International Publishing AG, part of Springer Nature
About this chapter
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)