【问题标题】:Show or save values in parfor loops in MATLAB在 MATLAB 的 parfor 循环中显示或保存值
【发布时间】:2014-10-07 04:27:41
【问题描述】:

如果我们在 MATLAB(并行计算)中使用 Parfor,我们将无法使用 Save('My_workspace') 保存值或工作区。除此之外,如果我们在For 循环中的每一行中简单地删除;,MATLAB 会在command window 中显示输出,但在Parfor 中不会出现任何内容。 For 循环中的所有内容都是正常的,但是当我将 For 更改为 Parfor 时,我会遇到一些错误,因此我需要检查 Parfor 中的数据流和进程。

我想检查流程和数据流,正如我在 For 循环中看到的那样。我怎样才能在Parfor 结构中做到这些?

谢谢。

【问题讨论】:

标签: matlab for-loop parallel-processing save parfor


【解决方案1】:

parfor 中不允许使用save。根据this article,违反了透明度。但是你可以用函数来解决这个问题,因为函数有自己的堆栈,如this post

parfor ii = 1:4
    x = rand(10,10);
    y = ones(1,3);
    parsave(sprintf('output%d.mat', ii), x, y);
end

function parsave(fname, x,y)
save(fname, 'x', 'y')
end

命令窗口输出的另一个问题的答案是“你不能”。请参阅Mathworks' documentation(在最后一节中,显示输出),答案是“否”。

【讨论】:

    【解决方案2】:

    将其更改为常规 for 循环以进行调试,然后在修复后将其放回 parfor。

    【讨论】:

    • for 中的一切都是正常的,但是当我将for 更改为parfor 时,我会遇到一些错误,所以我需要检查parfor 中的数据流和进程。
    猜你喜欢
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多