是否可以使用使用的parfor并行计算在Matlab在这些代码?
2视图(30天)
显示旧的评论
我用
parfor
Matlab的并行计算。我不熟悉这个命令。如果这是可能的,请看下面我的代码,告诉我如果我可以写
parfor
。这些错误和警告出现在Matlab编辑器:
parfor循环不能由于运行变量的Dat的方式使用。
整个数组或结构“绑定”是广播变量。这可能导致不必要的通信开销。
parforpj = 1:尺寸(normXpj, 1)
Dat。normXpj = normXpj (pj,:);
如果大小(Dat.InitialGuess) = = 0
X =(绑定(:1)+(绑定(:,2)绑定(:1))。*兰德(据Nvar, 1)) ';
其他的
X = Dat.InitialGuess;
结束
[Xsqp, ~,国旗,选项]= mopOPT (X, Dat);
函数宏指令= Options.funcCount;
菲斯=菲斯+函数宏指令;
PSet (pj:) = Xsqp;
PFront (pj:) =拖把(Xsqp Dat 0);
% disp ([' ExitFlag:“num2str(国旗)]);
如果标志= = 2
disp (“..........藻类帕索……”);
其他的
F = PFront (pj:);
如果Nobj = = 2
情节(F (1,1), F (1、2),“* r”);网格在;持有在;
elseifNobj = = 3
结束
结束
结束
0评论
接受的答案
Edric埃利斯
2015年3月5日
这里的问题是,我们可以看到,你不使用order-dependent“大宇”的方式,但“parfor”的静态分析机械无法推断出,因为你分配的方式。我想你可以解决这一点,而不是创建一个全新的Dat每个迭代的循环,就像这样:
Dat =结构(“normXpj”1),兰德(10日,“InitialGuess”3);
normXpj =兰德(10);
parforidx = 1:10
tmpDat =结构(“normXpj”normXpj (: idx),“InitialGuess”,Dat.InitialGuess);
%使用“tmpDat”
disp (tmpDat);
结束