Genetically Improved CUDA C++ Software

  • William B. Langdon
  • Mark Harman
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8599)


Genetic Programming (GP) may dramatically increase the performance of software written by domain experts. GP and autotuning are used to optimise and refactor legacy GPGPU C code for modern parallel graphics hardware and software. Speed ups of more than six times on recent nVidia GPU cards are reported compared to the original kernel on the same hardware.


Genetic Programming Shared Memory Stereo Pair Original Code Loop Unroll 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Poli, R., Langdon, W.B., McPhee, N.F.: A field guide to genetic programming,
  2. 2.
    Harman, M., Langdon, W.B., Weimer, W.: Genetic programming for reverse engineering. In: WCRE 2013, Koblenz, Germany. IEEE (2013) (Invited Keynote)Google Scholar
  3. 3.
    Harman, M., Langdon, W.B., Jia, Y., White, D.R., Arcuri, A., Clark, J.A.: The GISMOE challenge. In: ASE 2012, Essen, Germany, pp. 1–14. ACM (2012)Google Scholar
  4. 4.
    Langdon, W.B., Harman, M.: Evolving a CUDA kernel from an nVidia template. In: WCCI 2010, Barcelona, pp. 2376–2383. IEEE (2010)Google Scholar
  5. 5.
    Archanjo, G.A., Von Zuben, F.J.: Genetic programming for automating the development of data management algorithms in information technology systems. Advances in Software Engineering (2012)Google Scholar
  6. 6.
    Le Goues, C., Nguyen, T., Forrest, S., Weimer, W.: GenProg: A generic method for automatic software repair. IEEE Trans. on Soft. Eng. 38(1), 54–72 (2012)CrossRefGoogle Scholar
  7. 7.
    Sitthi-amorn, P., Modly, N., Weimer, W., Lawrence, J.: Genetic programming for shader simplification. ACM Trans. on Graphics 30(6), article:152 (2011)Google Scholar
  8. 8.
    White, D.R., Arcuri, A., Clark, J.A.: Evolutionary improvement of programs. IEEE Trans. on EC 15(4), 515–538 (2011)Google Scholar
  9. 9.
    Orlov, M., Sipper, M.: Flight of the FINCH through the Java wilderness. IEEE Trans. on EC 15(2), 166–182 (2011)Google Scholar
  10. 10.
    Langdon, W.B., Harman, M.: Optimising existing software with genetic programming. IEEE Trans. on EC (accepted)Google Scholar
  11. 11.
    Petke, J., Harman, M., Langdon, W.B., Weimer, W.: Using genetic improvement and code transplants to specialise a C++ program to a problem class. In: Nicolau, M., Krawiec, K., Heywood, M.I., Castelli, M., García-Sánchez, P., Merelo, J.J., Santos, V.M.R., Sim, K. (eds.) EuroGP 2014. LNCS, vol. 8599, pp. 137–149. Springer, Heidelberg (2014)Google Scholar
  12. 12.
    Cotillon, A., Valencia, P., Jurdak, R.: Android genetic programming framework. In: Moraglio, A., Silva, S., Krawiec, K., Machado, P., Cotta, C. (eds.) EuroGP 2012. LNCS, vol. 7244, pp. 13–24. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  13. 13.
    Cody-Kenny, B., Barrett, S.: The emergence of useful bias in self-focusing genetic programming for software optimisation. In: Ruhe, G., Zhang, Y. (eds.) SSBSE 2013. LNCS, vol. 8084, pp. 306–311. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  14. 14.
    Tiwari, V., Malik, S., Wolfe, A.: Power analysis of embedded software: A first step towards software power minimization. IEEE Trans. on VLSI 2(4), 437–445 (1994)CrossRefGoogle Scholar
  15. 15.
    Owens, J.D., Houston, M., Luebke, D., Green, S., Stone, J.E., Phillips, J.C.: GPU computing. Proceedings of the IEEE 96(5), 879–899 (2008) (Invited paper)Google Scholar
  16. 16.
    Merrill, D., Garland, M., Grimshaw, A.: Policy-based tuning for performance portability and library co-optimization. In: InPar. IEEE (2012)Google Scholar
  17. 17.
    Langdon, W.B.: Graphics processing units and genetic programming: An overview. Soft Computing 15, 1657–1669 (2011)CrossRefGoogle Scholar
  18. 18.
    Stam, J.: Stereo imaging with CUDA. Technical report, nVidia (2008)Google Scholar
  19. 19.
    Moore, G.E.: Cramming more components onto integrated circuits. Electronics 38(8), 114–117 (1965)Google Scholar
  20. 20.
    Syswerda, G.: Uniform crossover in genetic algorithms. In: ICGA 1989, pp. 2–9 (1989)Google Scholar
  21. 21.
    Koza, J.R.: Genetic Programming. MIT Press (1992)Google Scholar
  22. 22.
    Langdon, W.B.: A many threaded CUDA interpreter for genetic programming. In: Esparcia-Alcázar, A.I., Ekárt, A., Silva, S., Dignum, S., Uyar, A.Ş. (eds.) EuroGP 2010. LNCS, vol. 6021, pp. 146–158. Springer, Heidelberg (2010)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • William B. Langdon
    • 1
  • Mark Harman
    • 1
  1. 1.CREST, Department of Computer ScienceUniversity College LondonLondonUK

Personalised recommendations