I have a problem about functions createJob and createTask. The problem is, I created 3 tasks in a job, I expected that they can be run in parallel. But actually they can't.
I have a function jobTest2.m, which returns labindex of worker.
code of jobTest2.m:
function [a] = jobTest2% fprintf('labindex: %d\n',labindex);
a = labindex;pause(20);end
code run in matlab command window:
parallel.defaultClusterProfile('local');c = parcluster();j = createJob(c)createTask(j, @jobTest2, 1, {});createTask(j, @jobTest2, 1, {});createTask(j, @jobTest2, 1, {});submit(j);wait(j);results = fetchOutputs(j)
output:
results = [1] [1] [1]
It takes 3 times longer than just running a task. And the labindex shows that it runs in serial. I've read a matlab answers Parallel programming with createJob and followed its proposal. But the problem is still not solved.
Before I run these code, I've delete all jobs on the cluster.
>> delete(c.Jobs)>> c c = Local Cluster Properties: Profile: local Modified: false Host: localhost NumWorkers: 4 JobStorageLocation: /home/drinkcor/.matlab/local_cluster_jobs/R2015b RequiresMathWorksHostedLicensing: false Associated Jobs: Number Pending: 0 Number Queued: 0 Number Running: 0 Number Finished: 0
Can anyone help me? Thanks in advance!
Best Answer