problem performing multiple, independent tasks simultaneously in parfor
이전 댓글 표시
Here's a parfor code snippet that's intended to search for 2 different file types and load a file simultaneously, but fails due to different output types:
% run 3 independent things simultaneously to save time
parfor n 1:3
switch n
case 1
output{n} = dir('pathname\**\*.txt'); % this takes a long time
case 2
output{n} = dir('pathname\**\*.csv'); % this takes a long time
case 3
output{n} = load('pathname\matlab.mat'); % this also takes a long time
end
end
Here's how I'd prefer to write this function, which doesn't crash and runs MUCH faster than each function separately, but variables a, b, and c are not saved.
% run 3 independent things simultaneously to save time
parfor n 1:3
switch n
case 1
a = dir('pathname\**\*.txt'); % this takes a long time
case 2
b = dir('pathname\**\*.csv'); % this takes a long time
case 3
c = load('pathname\matlab.mat'); % this also takes a long time
end
end
I'm not I/O limited, these processes run simultaneously much faster. Run time with the second snippet is the same as the single longest operation. How can I run either method of code snippet with the outputs saved?
댓글 수: 3
Walter Roberson
2022년 7월 26일
parfor n = 1:3
output{1} and output{2} would be directory information, output{3} would be a struct containing one field for each variable loaded from the matlab.mat file.
Bruno Luong
2022년 7월 26일
편집: Bruno Luong
2022년 7월 26일
Redargless it does't work (I don't know why just by reading your code)
Your parfor doesn't do any real computation, just reading, so it is mostly limited by your perepherical HW (reading speed and transfert data through the bus). Not sur parfor will not in contrary to what you would expect slow down even more, since the caching is worse.
David L.
2022년 7월 26일
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!