【问题标题】:Retrieving Worker Index from Asynchronous Function Evaluation in MATLAB从 MATLAB 中的异步函数求值中检索 Worker 索引
【发布时间】:2017-10-25 15:35:41
【问题描述】:

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

【问题讨论】:

    标签: matlab asynchronous parallel-processing


    【解决方案1】:

    Click here for Documentation about labindex in MATLAB

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

    Click here for Documentation about spmd in MATLAB

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2021-03-27
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      相关资源
      最近更新 更多