Send for loop iterations to multiprocessors
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello, My code consists of two parts, an outer portion that is independent and an inner portion that is dependent. I want to send the outer for loop to different processors to speed it up, but the inner loop needs to be run serially. At the end, I need to combine the results of the independent loop into one matrix.
Essentially the code can be visualized as for ii = 1:4 for i = 1:1000 a(i) = f(b) end A(ii) = a(i) end
If this makes sense, the ii loop is independent but the i loop is dependent. I want to send the ii loop to different processors so that i can be computed serially. I have not had very much luck with parfor in this instance.
Is what I am asking not possible? I estimate that if I cannot use multiple processors to execute the code, it will run for 1.5-2 days.
Thank you for any insight, Dan Stanaway
3 Kommentare
Akzeptierte Antwort
Jason Ross
am 24 Mai 2011
Try putting your inner loop in a function and calling the function instead.
e.g.:
parfor ii = 1:4
somethingout = myloopfunction
end
then in myloopfunction you have the inner for loop.
If that doesn't work, you might also want to look into the spmd functionality.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!