STARTMULTICOREMASTER Start multi-core processing master process.
RESULTCELL = STARTMULTICOREMASTER(FHANDLE, PARAMETERCELL, DIRNAME)
starts a multi-core processing master process. The function specified
by the given function handle is evaluated with the parameters saved in
each cell of PARAMETERCELL. Each cell may include parameters in any
form or another cell array which is expanded to an argument list using
the {:} notation to pass multiple input arguments. The outputs of the
function are returned in cell array RESULTCELL of the same size as
PARAMETERCELL. Only the first output argument of the function is
returned. If you need to get multiple outputs, write a small adapter
function which puts the outputs of your function into a cell array.
To make use of multiple cores/machines, function STARTMULTICOREMASTER
saves files with the function handle and the parameters to the given
directory DIRNAME. These files are loaded by function
STARTMULTICORESLAVE running on other Matlab processes which have access
to the same directory. The slave processes evaluate the given function
with the saved parameters and save the result in another file into the
same directory. The results are later collected by the master process.
RESULTCELL = STARTMULTICOREMASTER(FHANDLE, PARAMETERCELL, DIRNAME,
MAXMASTEREVALUATIONS) restricts the number of function evaluations done
by the master process to MAXMASTEREVALUATIONS. After the given number
of evaluations is reached, the master process waits for other processes
to complete instead of working down the list of parameter sets itself.
Use this value if the overall number of function evaluations is quite
small or the duration of a single evaluation is very long. However,
note that if the slave process is interrupted, the master process will
never terminate the computations!
Note that you can make use of multiple cores on a single machine or on
different machines with a commonly accessible directory/network share
or a combination of both.
RESULTCELL = STARTMULTICOREMASTER(FHANDLE, PARAMETERCELL) uses the
directory /multicorefiles, where is the directory
returned by function TEMPDIR2. Use this form if you are running on
multiple cores on a single machine.
RESULTCELL = STARTMULTICOREMASTER(FHANDLECELL, PARAMETERCELL, ...),
with a cell array FHANDLECELL including function handles, allows to
evaluate different functions.
Example: If you have your parameters saved in parameter cell
PARAMETERCELL, the for-loop
for k=1:numel(PARAMETERCELL)
RESULTCELL{k} = FHANDLE(PARAMETERCELL{k});
end
which you would run in a single process can be run in parallel on
different cores/machines using STARTMULTICOREMASTER and
STARTMULTICORESLAVE. Run
RESULTCELL = STARTMULTICOREMASTER(FHANDLE, PARAMETERCELL, DIRNAME)
in one Matlab process and
STARTMULTICORESLAVE(DIRNAME)
in other Matlab processes.
Markus Buehren
Last modified 13.11.2007
See also STARTMULTICORESLAVE, FUNCTION_HANDLE.