createCommunicatingJob
Create communicating job on cluster
Syntax
job = createCommunicatingJob(cluster)
job = createCommunicatingJob(...,'p1',v1,'p2',v2,...)
job = createCommunicatingJob(...,'Type','pool',...)
job = createCommunicatingJob(...,'Type','spmd',...)
job = createCommunicatingJob(...,'Profile','profileName',...)
Description
job = createCommunicatingJob(cluster)
creates a communicating
job object for the identified cluster.
job = createCommunicatingJob(...,'p1',v1,'p2',v2,...)
creates
a communicating job object with the specified property values. For a listing of the
valid properties of the created object, see the parallel.Job
object reference
page. The property name must be a character vector, with the value being the
appropriate type for that property. In most cases, the values specified in these
property-value pairs override the values in the profile.
When you offload computations to workers, any files that are required for computations on
the client must also be available on workers. By default, the client attempts to
automatically detect and attach such files. To turn off automatic detection, set the
AutoAttachFiles
property to false. If automatic detection cannot
find all the files, or if sending files from client to worker is slow, use the following
properties.
If the files are in a folder that is not accessible on the workers, set the
AttachedFiles
property. The cluster copies each file you specify from the client to workers.If the files are in a folder that is accessible on the workers, you can set the
AdditionalPaths
property instead. Use theAdditionalPaths
property to add paths to each worker's MATLAB® search path and avoid copying files unnecessarily from the client to workers.
If you specify AttachedFiles
or
AdditionalPaths
, the values are combined with the values
specified in the applicable profile. If an invalid property name or property value
is specified, the object will not be created.
job = createCommunicatingJob(...,'Type','pool',...)
creates a
communicating job of type 'pool'
. This is the default if
'Type'
is not specified. A 'pool'
job runs
the specified task function with a parallel pool available to run the body of
parfor
loops or spmd
blocks. Note that
only one worker runs the task function, and the rest of the workers in the cluster
form the parallel pool. So on a cluster of N workers for a 'pool'
type job, only N-1 workers form the actual pool that performs the
spmd
and parfor
code found within the task
function.
job = createCommunicatingJob(...,'Type','spmd',...)
creates a
communicating job of type 'spmd'
, where the specified task
function runs simultaneously on all workers, and spmd*
functions
can be used for communication between workers.
job = createCommunicatingJob(...,'Profile','profileName',...)
creates a communicating job object with the property values specified in the profile
'profileName'
. If no profile is specified and the cluster
object has a value specified in its 'Profile'
property, the
cluster’s profile is automatically applied.
Examples
Consider the function 'myFunction'
which uses a
parfor
loop:
function result = myFunction(N) result = 0; parfor ii=1:N result = result + max(eig(rand(ii))); end end
Create a communicating job object to evaluate myFunction
on
the default cluster:
myCluster = parcluster; j = createCommunicatingJob(myCluster,'Type','pool');
Add the task to the job, supplying an input argument:
createTask(j, @myFunction, 1, {100});
Set the number of workers required for parallel execution:
j.NumWorkersRange = [5 10];
Run the job.
submit(j);
Wait for the job to finish and retrieve its results:
wait(j) out = fetchOutputs(j)
Delete the job from the cluster.
delete(j);
Version History
Introduced in R2012a
See Also
createJob
| createTask
| findJob
| parcluster
| recreate
| submit