Cluster with 8 workers runs only one job at a time

3 views (last 30 days)
I am using a local cluster (parcluster) to run 6 jobs. When I examine my cluster, I see that it reports 8 workers. Since I'm submitting the 6 jobs simulataneously, I would expect that all six would start running right away. Instead, the jobs are only executed one at a time with the others remaining in a 'queued' state. Is there a way to run more than one job at a time, or (best case) run all jobs simultaneously?
  2 Comments
Edric Ellis
Edric Ellis on 18 Jun 2014
How are you submitting these jobs? I just tried this using the BATCH command, and saw this:
>> c = parcluster('local');
>> for idx = 1:6, batch(c, 'pause(10)'); end
>> c.Jobs
ans =
6x1 Job array:
ID Type State FinishTime Username Tasks
------------------------------------------------------------------
1 1 independent running eellis 1
2 2 independent running eellis 1
3 3 independent running eellis 1
4 4 independent running eellis 1
5 5 independent running eellis 1
6 6 independent running eellis 1
Stephen
Stephen on 18 Jun 2014
The jobs are submitted as a group of 20 tasks using createTask, as follows:
myCluster = parcluster;
for i = 1:6
workerTable{i,1} = createJob(myCluster);
for j = 1:20
createTask(workerTable{i,1},@lengthyFxn,7,{inputArgs});
end
submit(workerTable{i,1});
end

Sign in to comment.

Accepted Answer

Sean de Wolski
Sean de Wolski on 18 Jun 2014
The tasks are not running serially as you expect but are running in parallel and are thus using all of the resources available. This is why the next job has to wait until the previous has finished running all of its tasks.
  3 Comments
Stephen
Stephen on 19 Jun 2014
How could I increase the number of workers in the parpool? Would increasing the number of workers help the background processes to finish sooner or is that capped by system resources?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!