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

MATLAB parallel loop with slight delays

我在 matlab 中有一个并行循环,如下所示。有没有办法确保循环不是同时 运行ning 而是有轻微的延迟?我也愿意使用 batch 或 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 

您可以使用 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