我使用Matpower - Matlab工具箱并行计算并构建计算机集群来模拟如下所示的程序:
matlabpool open job1 5 % matlabpool means computer cluster
spmd %the statement from the Parallel computing toolbox
% Run all the statements in parallel
% first part of code
if labindex==1
runopf('casea');
end
% second part of code
if labindex==2
runopf('caseb');
end
end
matlabpool close;
当labindex为1时,该程序中代码的第一部分在集群中的“computer1”中运行,等等,当labindex为2时,程序中的第二部分代码为“在computer2中运行” 。我的问题是上面显示的主要代码按顺序或并行运行?
我的意思是,第二部分代码是否必须等待执行,直到执行代码的第一部分或者可以在集群中的两台不同计算机上并行执行两部分代码?
答案 0 :(得分:0)
spmd
和相应的end
之间的代码会发送给所有工作人员(在您的情况下为5),并且他们会并行执行这些指令。然后,在您的代码中,您指示worker#1执行runopf('casea');
和worker#2 runopf('caseb');
。 #3到#5的工人实际上什么都不做。
从技术上讲,工人#2稍后会执行runopf('caseb');
。出现延迟是因为worker#2还将检查第一个if
语句(但不会执行其中的代码)。