【问题标题】:Parallel Computing in MATLAB using drange在 MATLAB 中使用 drange 进行并行计算
【发布时间】:2018-09-29 23:18:14
【问题描述】:

我有一个这样的代码,我想使用 parpool 运行它: 结果 = 零(J,K)

for k = 1:K
    for j = 1:J
        build(:,1) = old1(:,j,k)
        build(:,2) = old2(:,j,k)
        result(j,k) = call_function(build); %Takes a long time to run
    end
end

运行此代码需要很长时间,并且我必须多次运行此代码才能进行仿真,因此我想在 MATLAB 中并行运行最外层循环 (k = 1:K)。

根据我的阅读,我不能使用 parfor,因为所有每个函数都使用相同的变量 old1 和 old2。我可以使用 spmd 并分发我的矩阵 old1 和 old2。但我读到这会创建与工人一样多的变量副本,我不希望这种情况发生。我可以用drange。但我不确定它到底是如何工作的。我发现很难实际使用我在 MATLAB 参考资料中阅读的内容。任何资源和指针都会有很大帮助!

约束如下: 不得创建变量 old1、old2 的多个副本。但是我可以将它分割到工作人员之间,因为每次迭代都不需要其他迭代。 必须只为最外层循环分配。为了便于访问此代码块之外的数据。

谢谢。

【问题讨论】:

    标签: matlab parallel-processing parfor


    【解决方案1】:

    old1 和 old2 可以用,我觉得。使用以下方法初始化为常量:

    old1 = parallel.pool.Constant(old1); old2 = parallel.pool.Constant(old2);

    你看过这篇文章吗? https://www.mathworks.com/help/distcomp/improve-parfor-performance.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 2016-10-11
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多