我尝试使用并行处理在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
。这是获取处理功能评估的工作人员标识符的正确方法吗?我应该使用另一种房产吗?有没有办法为正在完成工作的工作人员创建唯一标识符,以便分析工作人员知道哪个工作人员计算了系列中的下一次迭代?
答案 0 :(得分:0)
Click here for Documentation about labindex in MATLAB
仅当您使用spmd块时,Labindex才会返回该特定工作者唯一的工作者索引。 spmd blocks让您可以完全控制个别员工。 spmd块非常方便,甚至可以帮助您在工作人员之间传输数据。
Click here for Documentation about spmd in MATLAB
我希望这会有所帮助。