Parallel computing is the technique of using multiple processors on a single problem. The reason to use parallel computing is to speed computations.
The following Optimization Toolbox™ solvers can automatically distribute the numerical estimation of gradients of objective functions and nonlinear constraint functions to multiple processors:
These solvers use parallel gradient estimation under the following conditions:
You have a license for Parallel Computing Toolbox™ software.
false, or, if there is a nonlinear constraint
function, the option
the default value of these options, you don't have to set them; just
don't set them both to
Parallel computing is enabled with
a Parallel Computing Toolbox function.
UseParallel is set to
The default value of this option is
When these conditions hold, the solvers compute estimated gradients in parallel.
Note: Even when running in parallel, a solver occasionally calls the objective and nonlinear constraint functions serially on the host machine. Therefore, ensure that your functions have no assumptions about whether they are evaluated in serial or parallel.
One solver subroutine can compute in parallel automatically: the subroutine that estimates the gradient of the objective function and constraint functions. This calculation involves computing function values at points near the current location x. Essentially, the calculation is
f represents objective or constraint functions
ei are the unit direction vectors
Δi is the size of a step in the ei direction
To estimate ∇f(x) in parallel, Optimization Toolbox solvers distribute the evaluation of (f(x + Δiei) – f(x))/Δi to extra processors.
You can choose to have gradients estimated by central finite differences instead of the default forward finite differences. The basic central finite difference formula is
This takes twice as many function evaluations as forward finite differences, but is usually much more accurate. Central finite differences work in parallel exactly the same as forward finite differences.
Enable central finite differences by using
FiniteDifferenceType option to
To use forward finite differences, set the
Solvers employ the Parallel Computing Toolbox function
parfor to perform parallel estimation
parfor does not work in parallel
when called from within another
Therefore, you cannot simultaneously use parallel gradient estimation
and parallel functionality within your objective or constraint functions.
Suppose, for example, your objective function
and you wish to call
fmincon in a loop. Suppose
also that the conditions for parallel gradient evaluation of
as given in Parallel Optimization Functionality, are satisfied. When parfor Runs In Parallel shows three
The outermost loop is
Only that loop runs in parallel.
parfor loop is
parfor loop is
userfcn can use
When parfor Runs In Parallel