在MATLAB中从异步函数评估中检索Worker索引

在MATLAB中从异步函数评估中检索Worker索引,matlab,asynchronous,parallel-processing,Matlab,Asynchronous,Parallel Processing,我试图在MATLAB中使用并行处理实现一个迭代算法。存在由单个迭代工作者更新的多个迭代序列。然后,这些工作人员将他们的最新迭代发送给分析工作人员的。分析工作人员从队列中提取下一个更新,并相应地更新分析。但是,除非分析工作人员知道更新是从哪个迭代工作人员传递的,否则无法正确更新分析 已进行以下尝试,以报告正在执行异步函数评估的工作进程的标识符: for j = 1:20 L(j) = parfeval(gcp, @() labindex, 1); end for j = 1:20 [

我试图在MATLAB中使用并行处理实现一个迭代算法。存在由单个迭代工作者更新的多个迭代序列。然后,这些工作人员将他们的最新迭代发送给分析工作人员的。分析工作人员从队列中提取下一个更新,并相应地更新分析。但是,除非分析工作人员知道更新是从哪个迭代工作人员传递的,否则无法正确更新分析

已进行以下尝试,以报告正在执行异步函数评估的工作进程的标识符:

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
。这是获取处理功能评估的工作人员标识符的正确方法吗?还有其他我应该使用的财产吗?是否有办法为正在完成工作的工作人员创建唯一标识符,以便分析工作人员知道是哪个工作人员计算了系列中的下一次迭代?

只有在使用spmd块的情况下,Labindex才会返回工作进程的索引,该索引对于该特定工作进程是唯一的。spmd模块使您能够完全控制单个工人。spmd块非常方便,甚至可以帮助您在工作人员之间传输数据

我希望这有帮助。

只有在使用spmd块的情况下,Labindex才会返回工作进程的索引,该索引对于该特定工作进程是唯一的。spmd模块使您能够完全控制单个工人。spmd块非常方便,甚至可以帮助您在工作人员之间传输数据

我希望这有帮助