Users of all artificial intelligence tools are always eager to extend the boundaries of their techniques, for example by attacking more and more difficult problems. In fact, to solve hard problems it may be necessary to push GP to the limit -- populations of millions of programs and/or long runs may be necessary.
There are a number of techniques to speed up, parallelise and distribute GP search. We start by looking at ways to reduce the number of fitness evaluations or increase their effectiveness (Section 10.1 ) and ways to speed up their execution (Section 10.2 ). We then look at the idea of running GP in parallel (Section 10.3 ) and point out that faster evaluation is not the only reason for doing so, as geographic distribution has advantages in its own right. In Section 10.4 we describe master-slave parallel architectures (Section 10.4.1 ), running GP on graphics hardware (Section 10.4.2 ) and FPGAs (Section 10.4.3 ). Section 10.4.4 describes a fast method to exploit the parallelism available on every computer. Finally, Section 10.5 concludes this chapter with a brief discussion of distributed, even global, evolution of programs.