【发布时间】:2015-05-05 17:52:48
【问题描述】:
不幸的是,我不得不运行一个简单但庞大且嵌套 3 次的 for 循环。这些循环填充一个 3 维矩阵,表示函数在 3 空间坐标中的强度。 (有必要填充整个矩阵,因为我需要它来绘制 3d 强度云图...)
我想并行运行它,因为我的笔记本电脑需要数周才能顺序运行:
% Initialize vars
c0values = 400:1:600;
n0values = 1:1:10000;
phivalues = 0:0.1:2*pi;
mtxHeight = zeros(numel(c0values),numel(n0values),numel(phivalues));
% Run over c0
parfor c0ctr=1:numel(c0values)
% Run over n0
for n0ctr=1:numel(n0values)
% Run over phi
for phictr=1:numel(phivalues)
% Sum over ell
dHeight = 0;
for ell=1:10
dHeight = dHeight + fnToMaximize(mtxObs(ell,:), ...
c0values(c0ctr), ...
n0values(n0ctr), ...
phivalues(phictr));
end
mtxHeight(c0ctr,n0ctr,phictr) = dHeight;
end
end
end
由于某种原因,Matlab 抱怨mtxHeight 无法分类并拒绝以并行化的方式运行代码。
我在做什么是不允许的?
【问题讨论】:
-
并行化不是一件容易的事。特别是对于机器。
标签: matlab parallel-processing nested-loops