| Genetic Algorithm and Direct Search Toolbox™ | ![]() |
| On this page… |
|---|
Using Parallel Computing with patternsearch |
Parallel computing is the technique of using multiple processes or processors on a single problem. The reason to use parallel computing is to speed up computations.
If enabled for parallel computation, the Genetic Algorithm and Direct Search Toolbox™ solver patternsearch automatically distributes the evaluation of objective and constraint functions associated with the points in a pattern to multiple processes or processors. patternsearch uses parallel computing under the following conditions:
You have a license for Parallel Computing Toolbox™ software.
Parallel computing is enabled with matlabpool, a Parallel Computing Toolbox function.
The following options are set using psoptimset:
Cache is 'off' (default)
CompletePoll is 'on'
Vectorized is 'off' (default)
UseParallel is 'always'
When these conditions hold, the solver computes the objective function and constraint values of the pattern search in parallel during a poll.
Currently, UseParallel cannot be accessed using the Optimization Tool GUI.
If you have a multicore processor, you might see speedup using parallel processing. You can establish a matlabpool of up to 4 parallel workers with a basic Parallel Computing Toolbox license.
Suppose you have a dual-core processor, and wish to use parallel computing:
Enter
matlabpool open 2
at the command line. The 2 specifies the number of processors to use.
Enter
options = psoptimset('UseParallel','always');When you run an applicable solver with options, applicable solvers automatically use parallel computing.
To stop computing optimizations in parallel, set UseParallel to 'never'. To halt all parallel computation, enter
matlabpool close
If you have multiple processors on a network, use Parallel Computing Toolbox functions and MATLAB® Distributed Computing Server™ software to establish parallel computation. Here are the steps to take:
Obtain a license for Parallel Computing Toolbox functions and MATLAB Distributed Computing Server software.
Configure your system for parallel processing. See the Parallel Computing Toolbox documentation, or MATLAB® Distributed Computing Server™ System Administrator's Guide.
In particular, if network_file_path is the network path to your objective or constraint functions, enter
pctRunOnAll('addpath network_file_path')so the worker processors can access your objective or constraint M-files.
Check whether an M-file is on the path of every worker by entering
pctRunOnAll('which filename')If any worker does not have a path to the M-file, it reports
filename not found.
At the command line enter
matlabpool open conf
or
matlabpool open conf n
where conf is your configuration, and n is the number of processors you wish to use.
Enter
options = psoptimset('UseParallel','always');Once your parallel computing environment is established, applicable solvers automatically use parallel computing whenever called with options.
To stop computing optimizations in parallel, set UseParallel to 'never'. To halt all parallel computation, enter
matlabpool close
patternsearch can optionally call a search function at each iteration. The search is done in parallel under the following conditions:
CompleteSearch is 'on'.
The search method is not @searchneldermead or custom.
If the search method is a pattern search function or Latin hypercube search, UseParallel is 'always'.
If the search method is ga, the search method option structure has UseParallel set to 'always'.
Pattern search is implemented in the patternsearch solver by using the Parallel Computing Toolbox™ function parfor. parfor distributes the evaluation of objective and constraint functions among multiple processes or processors.
The limitations on options, listed in Parallel Pattern Search, arise partly from the limitations of parfor, and partly from the nature of parallel processing:
Cache is implemented as a persistent variable internally. parfor does not handle persistent variables, because the variable could be set differently at different processors.
CompletePoll determines whether a poll stops as soon as a better point is found. When searching in parallel with parfor, all evaluations are scheduled at once, and computing continues after all evaluations are returned. It is not easy to halt evaluations once they have been scheduled.
Vectorized determines whether a pattern is evaluated with one function call. If it is 'on', it is not possible to distribute the evaluation of the function using parfor.
More caveats related to parfor are listed in the Limitations section of the Parallel Computing Toolbox documentation.
The Improving Performance with Parallel Computing section of the Optimization Toolbox™ documentation contains information on factors that affect the speed of parallel computations, factors that affect the results of parallel computations, and searching for global optima. Those considerations also apply to parallel computing with pattern search.
Additionally, there are considerations having to do with random numbers that apply to Genetic Algorithm and Direct Search Toolbox functions. Random number sequences in MATLAB® are pseudorandom, determined from a "seed," an initial setting. Parallel computations use seeds that are not necessarily controllable or reproducible. For example, there is a default global setting on each instance of MATLAB that determines the current seed for random sequences.
Parallel pattern search does not have reproducible polls when used with MADS, and does not have reproducible searches with MADS, the genetic algorithm, or Latin hypercube search methods.
![]() | Pattern Search Examples: Setting Options | Using the Genetic Algorithm | ![]() |
| © 1984-2008- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |