If it is possible to parallelize the evaluation of individual problem functions effectively, some thought and, perhaps, experimentation will be needed to determine the level at which multitasking should be performed. This will obviously depend on the number of processors available, the intended population size and the potential speed-ups available. If the number of processors exceeds the population size (a highly parallel machine!), multi-level parallelization may be possible.
A significant component of a GA code is the random number generator, which is essential to the processes of selection, crossover and mutation. (See, for example, the sample code supplied with this section.) Random number generators are often provided in standard function libraries or as machine-specific functions. It is important, particularly when tackling large scale problems requiring thousands of iterations, that the random number generator used have good spectral properties --- see the chapter on Random Number Generators for more details.