【发布时间】:2016-05-10 09:07:48
【问题描述】:
我正在尝试在 Matlab 中并行化作业。我有一大组矩阵,我想将它们传递给一个函数,然后该函数返回一个向量。我想做的是将矩阵的一个子集分配给每个任务,然后返回它们的输出。我已经能够让代码工作,其中每个任务只分配一个矩阵来传递,但是当我尝试为每个任务分配多个矩阵时,我得到了 Too Many Arguments 错误。
通过阅读createTask 上的文档,我怀疑我用来传递矩阵的结构是问题所在。
numTasks=4;
%Setting up the splitting of my 60 matrices among 4 tasks.
[xSplit, numTasks] =pctdemo_helper_split_vector(linspace(1,60,60, numTasks));
%XSplit shows the splits of the numbers 1-60 to each of 4 cells in XSplit
celldisp(xSplit);
%Substituting in my matrices for the indices in XSplit
for i=1:numTasks
xSplitVec=xSplit{i};
for j=1:length(xSplitVec);
%SCov is an array where I have collected all my matrices
xSplitMat{i,j}=SCov_array(:,:, xSplitVec(j));
end
end
parallel.defaultClusterProfile('local');
c = parcluster();
job=createJob(c);
for i=1:numTasks
xThis=xSplitMat(i,:);
%@Norm1MinVar_par is my function, which takes matrices and returns a vector
createTask(job, @Norm1MinVar_par, 1, xThis);
end
submit(job);
wait(job);
y=fetchOutputs(job);
delete(job);
cat(2, y{:})
我的代码遵循Dividing Tasks 中的示例。
【问题讨论】:
标签: matlab matrix parallel-processing task cells