具有轻微延迟的MATLAB并行循环

时间:2016-12-08 23:45:59

标签: matlab parallel-processing parfor

我在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 

1 个答案:

答案 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