【发布时间】: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