从MATLAB中的异步函数评估中检索工人索引

时间:2017-10-25 15:35:41

标签: matlab asynchronous parallel-processing

我尝试使用并行处理在MATLAB中执行迭代算法。存在多个迭代序列,由个体的迭代工作者更新。然后,这些工作人员将最新的迭代发送到分析工作者的DataQueue。分析工作程序从队列中提取下一个更新并相应地更新分析。但是,除非分析工作人员知道更新已通过哪个迭代工作程序,否则无法正确更新分析。

以下尝试报告正在执行异步功能评估的工作人员的标识符:

for j = 1:20
   L(j) = parfeval(gcp, @() labindex, 1);
end

for j = 1:20
   [~,idx] = fetchNext(L)
end

function index = labindex()
   index = labindex
end

此代码报告所有评估的idx值为1。这是获取处理功能评估的工作人员标识符的正确方法吗?我应该使用另一种房产吗?有没有办法为正在完成工作的工作人员创建唯一标识符,以便分析工作人员知道哪个工作人员计算了系列中的下一次迭代?

1 个答案:

答案 0 :(得分:0)

Click here for Documentation about labindex in MATLAB

仅当您使用spmd块时,Labindex才会返回该特定工作者唯一的工作者索引。 spmd blocks让您可以完全控制个别员工。 spmd块非常方便,甚至可以帮助您在工作人员之间传输数据。

Click here for Documentation about spmd in MATLAB

我希望这会有所帮助。