【发布时间】:2015-03-04 17:49:26
【问题描述】:
我在 Matlab 中使用parfor 进行并行计算。我不熟悉这个命令。如果可能,请查看下面的代码并告诉我是否可以使用parfor 编写它。
这些错误和警告出现在 Matlab 编辑器中:
由于使用了变量
Dat的方式,无法运行 parfor 循环。 (当我评论Dat.normXpj = normXpj(pj,:);这一行时,这个错误解决了,出现了类似如下错误的其他错误。-
整个数组或结构
Bound是广播变量。这
可能会导致不必要的通信开销。parfor pj = 1:size(normXpj,1) Dat.normXpj = normXpj(pj,:); if size(Dat.InitialGuess)==0 X = (Bound(:,1)+(Bound(:,2)-Bound(:,1)).*rand(Nvar,1))'; else X = Dat.InitialGuess; end [Xsqp, ~, FLAG,Options] = mopOPT(X,Dat); FEVALS = Options.funcCount; FES = FES+FEVALS; PSet(pj,:) = Xsqp; PFront(pj,:) = mop(Xsqp,Dat,0); if FLAG==-2 disp('.......... Algo paso...'); else F = PFront(pj,:); if Nobj==2 plot(F(1,1),F(1,2),'*r'); grid on; hold on; elseif Nobj==3 end end end
【问题讨论】:
-
嗯,没人帮忙吗? :(
-
你能用
Dat发布确切的错误信息吗? -
当我将鼠标悬停在
parfor上时,这是我在 Matlab 编辑器窗口中得到的:由于使用变量 Dat 的方式,无法运行 parfor 循环 @CrazyRat -
好的。这与我的回答一致。
-
所以,真的不行吗? :((@CrazyRat
标签: matlab parallel-processing parfor