Abstract
Genetic Programming (GP) (Koza, Genetic programming, MIT Press, Cambridge, 1992) is well-known as a computationally intensive technique. Subsequently, faster parallel versions have been implemented that harness the highly parallel hardware provided by graphics cards enabling significant gains in the performance of GP to be achieved. However, extracting the maximum performance from a graphics card for the purposes of GP is difficult. A key reason for this is that in addition to the processor resources, the fast on-chip memory of graphics cards needs to be fully exploited. Techniques will be presented that will improve the performance of a graphics card implementation of tree-based GP by better exploiting this faster memory. It will be demonstrated that both L1 cache and shared memory need to be considered for extracting the maximum performance. Better GP program representation and use of the register file is also explored to further boost performance. Using an NVidia Kepler 670GTX GPU, a maximum performance of 36 billion Genetic Programming Operations per Second is demonstrated.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Al-Madi N, Ludwig S (2013) Scaling genetic programming for data classification using mapreduce methodology. In: 2013 World Congress on nature and biologically inspired computing (NaBIC), pp 132–139
Andre D, Koza JR (1996) Parallel genetic programming: a scalable implementation using the transputer network architecture. MIT Press, Cambridge
Augusto DA, Barbosa HJC (2013) Accelerated parallel genetic programming tree evaluation with OpenCL. J Parallel Distrib Comput 73(1):86–100
Brameier M, Banzhaf W (2001) A comparison of linear genetic programming and neural networks in medical data mining. IEEE Trans Evol Comput 5(1):17–26
Cano A, Luna J, Ventura S (2013) High performance evaluation of evolutionary-mined association rules on GPUs. J Supercomput 66(3):1438–1461
Cano A, Ventura S (2014) Gpu-parallel subtree interpreter for genetic programming. In: Proceedings of the 2014 conference on genetic and evolutionary computation, GECCO ’14. ACM, New York , pp 887–894
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 D (2012) Fast parallel genetic programming: multi-core CPU versus many-core GPU. Soft Comput 16(10):1795–1814
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, p 1229
Cupertino LF, Silva CP, Dias DM, Pacheco MAC, Bentes C (2011) Evolving CUDA PTX programs by quantum inspired linear genetic programming. In: Proceedings of the 13th annual conference companion on genetic and evolutionary computation, GECCO ’11. ACM, New York, pp 399–406
Eklund S (2003) Time series forecasting using massively parallel genetic programming. In: Proceedings of international symposium parallel and distributed processing, 2003, pp 143–147
Frank A, Asuncion A (2010) UCI machine learning repository. http://archive.ics.uci.edu/ml
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-Martfn 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, pp 1–10
Juillé H, Pollack JB (1996) Massively parallel genetic programming. In: Angeline PJ, Kinnear KE Jr (eds) Advances in genetic programming 2, chap. 17. MIT Press, Cambridge, pp 339–358
KDD Cup 1999 Data (1999) Third international knowledge discovery and data mining tools competition. http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html
King RD, Feng C, Sutherland A (1995) Statlog: comparison of classification algorithms on large real-world problems. Appl Artif Intell 9(3):289–333. doi:10.1080/08839519508945477
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, pp 1628–1635
Koza JR (1992) Genetic programming. MIT Press, Cambridge
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. In: Proceedings of the 11th European conference on genetic programming, EuroGP’08. Springer, Berlin, pp 73–85
Langdon W, Harrison A (2008) GP on SPMD parallel graphics hardware for mega bioinformatics data mining. Soft Comput 12:1169–1183
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, pp 1379–1386
Lewis TE, Magoulas GD (2011) TMBL kernels for CUDA GPUs compile faster using PTX: computational intelligence on consumer games and graphics hardware. In: Proceedings of the 13th annual conference companion on genetic and evolutionary computation, GECCO ’11. ACM, New York, pp 455–462
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. Genet Progr Evol 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, pp 339–344
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 Progr Evol Mach 10:447–471
Sherry D, Veeramachaneni K, McDermott J, O’Reilly U-M (2012) Flex-gp: genetic programming on the cloud. In: Proceedings of the 2012 European conference on applications of evolutionary computation, EvoApplications’12. Springer, Berlin, pp 477–486
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
Vasicek Z, Sekanina L (2008), Hardware accelerators for cartesian genetic programming. In: ONeill M, Vanneschi L, Gustafson S, Esparcia Alczar A, Falco I, Cioppa A, Tarantino E (eds) Genetic programming, vol 4971 of Lecture Notes in Computer Science. Springer, Berlin, pp 230–241
Vašíček Z, Slaný K (2012) Efficient phenotype evaluation in cartesian genetic programming. In: Proceedings of the 15th European conference on genetic programming, EuroGP’12. Springer, Berlin, pp 266–278
White D, McDermott J, Castelli M, Manzoni L, Goldman B, Kronberger G, Jakowski W, OReilly UM, Luke S (2013) Better GP benchmarks: community survey results and proposals. Genet Progr Evol Mach 14(1):3–29
Wilson G, Banzhaf W (2008) Linear genetic programming GPGPU on Microsoft’s Xbox 360. In: IEEE Congress on evolutionary computation, 2008, CEC 2008 (IEEE World Congress on Computational Intelligence), pp 378–385
Wilson G, Banzhaf W (2009) Deployment of CPU and GPU-based genetic programming on heterogeneous devices. In: Proceedings of the 11th annual conference companion on genetic and evolutionary computation conference: late breaking papers’, GECCO ’09. ACM, New York, pp 2531–2538
Wilson G, Banzhaf W (2010) Deployment of parallel linear genetic programming using GPUs on PC and video game console platforms. Genet Progr Evol Mach 11(2):147–184
Acknowledgments
This work was supported by the Engineering Department at the University of Bristol.
Author information
Authors and Affiliations
Corresponding author
Additional information
Communicated by V. Loia.
Rights and permissions
About this article
Cite this article
Chitty, D.M. Improving the performance of GPU-based genetic programming through exploitation of on-chip memory. Soft Comput 20, 661–680 (2016). https://doi.org/10.1007/s00500-014-1530-3
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00500-014-1530-3