Abstract
Genetic Programming (GP) is a computationally intensive technique which is also highly parallel in nature. In recent years, significant performance improvements have been achieved over a standard GP CPU-based approach by harnessing the parallel computational power of many-core graphics cards which have hundreds of processing cores. This enables both fitness cases and candidate solutions to be evaluated in parallel. However, this paper will demonstrate that by fully exploiting a multi-core CPU, similar performance gains can also be achieved. This paper will present a new GP model which demonstrates greater efficiency whilst also exploiting the cache memory. Furthermore, the model presented in this paper will utilise Streaming SIMD Extensions to gain further performance improvements. A parallel version of the GP model is also presented which optimises multiple thread execution and cache memory. The results presented will demonstrate that a multi-core CPU implementation of GP can yield performance levels that match and exceed those of the latest graphics card implementations of GP. Indeed, a performance gain of up to 420-fold over standard GP is demonstrated and a threefold gain over a graphics card implementation.
Similar content being viewed by others
References
Andre D, Koza JR (1996) Parallel genetic programming: a scalable implementation using the transputer network architecture. MIT Press, Cambridge, pp 317–337
Banzhaf W, Harding S, Langdon WB, Wilson G (2009) Accelerating genetic programming through graphics processing units. In: Genetic programming theory and practice VI. Genetic and Evolutionary Computation. Springer, Ann Arbor, pp 1–19
Cano A, Zafra A, Ventura S (2012) Speeding up the evaluation phase of GP classification algorithms on GPUs. Soft Comput 16(2):187–202
Chitty DM (2007) A data parallel approach to genetic programming using programmable graphics hardware. In: Proceedings of the 9th annual conference on Genetic and evolutionary computation, GECCO ’07, pp 1566–1573
Chong FS, Langdon WB (1999) Java based distributed genetic programming on the internet. In: Banzhaf W, Daida J, Eiben AE, Garzon MH, Honavar V, Jakiela M, Smith RE (eds) Proceedings of the genetic and evolutionary computation Conference, vol 2, Morgan Kaufmann, Orlando, FL, USA, p 1229
Dongarra J, Hinds AR (1979) Unrolling loops in FORTRAN. Softw Pract Exp 9(3):219–226
Eklund SE (2003) Time series forecasting using massively parallel genetic programming. In: Proceedings of the 17th international symposium on parallel and distributed processing’, IPDPS ’03, IEEE Computer Society, Washington
Fernández F, Tomassini M, Vanneschi L (2003) An empirical study of multipopulation genetic programming. Genet Program Evolvable Mach 4(1):21–51
Folino G, Pizzuti C, Spezzano G (2003) A scalable cellular implementation of parallel genetic programming
Frank A, Asuncion A (2010) UCI machine learning repository
Golub G, Loan C (1989) Matrix computations, Johns Hopkins series in the mathematical sciences. Johns Hopkins University Press, Baltimore
Gustafson S, Burke EK (2006) The speciating island model: an alternative parallel evolutionary algorithm. J Parallel Distrib Comput 66(8):1025–1036
Harding S, Banzhaf W (2007) Fast genetic programming on GPUs. In: Proceedings of the 10th European conference on genetic programming, vol 4445 of LNCS, Springer, pp 90–101
Harding S, Banzhaf W (2009) Distributed genetic programming on GPUs using CUDA. In: Risco-Martn JL, Garnica O (eds) WPABA’09: Proceedings of the second international workshop on parallel architectures and bioinspired algorithms (WPABA 2009), Universidad Complutense de Madrid, Raleigh, NC, USA, pp 1–10
Intel architecture software developer’s manual volume 2: instruction set reference intel architecture software developer’s manual volume 2: instruction set reference (1997)
Juille H, Pollack JB (1996) Massively parallel genetic programming. In: Angeline PJ, Kinnear KE Jr (eds) Advances in genetic programming 2. MIT Press, Cambridge, chapter 17, pp 339–358
KDD Cup 1999 Data: third international knowledge discovery and data mining tools competition. KDD Cup 1999 data. Third international knowledge discovery and data mining tools competition (1999)
King RD, Feng C, Sutherland A (1995) Statlog: comparison of classification algorithms on large real-world problems
Klein J, Spector L (2007) Unwitting distributed genetic programming via asynchronous javascript and XML. In: Proceedings of the 9th annual conference on Genetic and evolutionary computation, GECCO ’07, ACM, New York, NY, USA, pp 1628–1635
Koza JR (1992) Genetic programming
Lam MD, Rothberg EE, Wolf ME (1991) The cache performance and optimizations of blocked algorithms. In: Proceedings of the fourth international conference on architectural support for programming languages and operating systems. ASPLOS-IV, ACM, New York, NY, USA, pp 63–74
Langdon W, Harrison A (2008) GP on SPMD parallel graphics hardware for mega bioinformatics data mining. Soft Comput 12:1169–1183
Langdon WB (2010) A many threaded CUDA interpreter for genetic programming. In: EuroGP’, pp 146–158
Langdon WB, Banzhaf W (2008) A SIMD interpreter for genetic programming on GPU graphics cards. Genetic Program 4971(CSM-470):73–85
Lee VW, Kim C, Chhugani J, Deisher M, Kim D, Nguyen AD, Satish N, Smelyanskiy M, Chennupaty S, Hammarlund P, Singhal R, Dubey P (2010) Debunking the 100× GPU vs. CPU myth: an evaluation of throughput computing on CPU and GPU. In: Proceedings of the 37th annual international symposium on Computer architecture, ISCA ’10, ACM, New York, NY, pp 451–460
Lewis TE, Magoulas GD (2009) Strategies to minimise the total run time of cyclic graph based genetic programming with GPUs. In: Proceedings of the 11th annual conference on genetic and evolutionary computation, GECCO ’09, ACM, New York, NY, pp 1379–1386
Maitre O, Lachiche N, Collet P (2010) Fast evaluation of GP trees on GPGPU by optimizing hardware scheduling. In: EuroGP. pp 301–312
Martin P (2001) A hardware implementation of a genetic programming system using FPGAs and Handel-C. Genetic Program Evolvable Mach 2:317–343. doi:10.1023/A:1012942304464
Niwa T, Iba H (1996) Distributed genetic programming: empirical study and analysis. In: Proceedings of the first annual conference on genetic programming, GECCO ’96, MIT Press, Cambridge, MA, pp 339–344
Punch WF (1998) How effective are multiple populations in genetic programming. In: Koza JR, Banzhaf W, Chellapilla K, Deb K, Dorigo M, Fogel DB, Garzon MH, Goldberg DE, Iba H, Riolo R (eds) Genetic programming 1998: proceedings of the third annual conference, Morgan Kaufmann, University of Wisconsin, Madison, Wisconsin, USA, pp 308–313
Robilliard D, Marion-Poty V, Fonlupt C (2008) Population parallel GP on the G80 GPU. In: Proceedings of the 11th European conference on genetic programming, EuroGP’08, Springer, Berlin, pp 98–109
Robilliard D, Marion-Poty V, Fonlupt C (2009) Genetic programming on graphics processing units. Genet Program Evol Mach 10:447–471
Smith AJ (1982) Cache memories. ACM Comput Surv 14(3):473–530
Tufts P (1995) Parallel case evaluation for genetic programming. In: Nadel L, Stein DL (eds) 1993 lectures in complex systems, vol VI of Santa Fe Institute Studies in the Science of Complexity, Addison-Wesley, pp 591–596
Wolf ME, Lam MS (1991), A data locality optimizing algorithm. In: Proceedings of the ACM SIGPLAN 1991 conference on programming language design and implementation, PLDI ’91, ACM, New York, pp 30–44
Wolfe M (1989) More iteration space tiling. In: Proceedings of the 1989 ACM/IEEE conference on supercomputing. Supercomputing ’89, ACM, New York, pp 655–664
Acknowledgments
This work was supported in part by the University of Bristol and the UK’s Engineering and Physical Sciences Research Council.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Chitty, D.M. Fast parallel genetic programming: multi-core CPU versus many-core GPU. Soft Comput 16, 1795–1814 (2012). https://doi.org/10.1007/s00500-012-0862-0
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00500-012-0862-0