我在matlab中有一个并行循环,如下所示。有没有办法确保循环不同时运行,但有一点延迟?我也愿意使用批处理或spmd但对它们知之甚少,并会感谢任何帮助。 我正在调用另一个程序myprogexe.exe,但是这个程序需要访问PC上的特定端口,并且多个请求无法进入。因此我需要确保请求中有一个非常小的延迟。 myprogexe.exe本身就是一个非常繁重的代码(每个输入运行大约需要10分钟)
parfor i=1:length(MinorRoots)
runmodels = MinorRoots{i};
cmd = ['$myprogexe -v 2014.2 ', runmodels];
[status, result] = system(cmd);
end
答案 0 :(得分:0)
您可以使用spmd
执行此操作,但请注意,以下方法并非完全理想,因为它会添加其他同步点。
spmd
origLimit = length(MinorRoots);
loopLimit = numlabs * ceil(origLimit/numlabs);
for i = labindex:numlabs:loopLimit
labBarrier; % synchronise all workers
if i <= origLimit
pause(labindex-1); % timing offset
... run your code ...
end
end
end