MATLAB parallel loop with slight delays
10 views (last 30 days)
Show older comments
I have a parallel loop in matlab shown below. Is there a way to make sure the loops are not running simultaneously but with a slight delay? I am open to use batch or spmd also but have limited knowledge of them and will appreciate any help. I am calling another program, myprogexe.exe, but this program needs to access a specific port on a pc and multiple requests cant go in. hence i need to make sure there is a very slight delay in requests. myprogexe.exe is a very computational heavy code itself (takes about 10 mins for each input to run)
parfor i=1:length(MinorRoots)
runmodels = MinorRoots{i};
cmd = ['$myprogexe -v 2014.2 ', runmodels];
[status, result] = system(cmd);
end
0 Comments
Answers (1)
Edric Ellis
on 9 Dec 2016
You could use spmd to do this, but note that the following approach isn't completely ideal because it adds additional synchronisation points.
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
0 Comments
See Also
Categories
Find more on Parallel for-Loops (parfor) in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!