PARFOR in real applications
2 次查看(过去 30 天)
显示 更早的评论
I've installed the Parallel Computing Toolbox for some experiments with my code. To my surprise none of the codes run faster with PARFOR compared to sequential FOR loops.
Examples:
- https://www.mathworks.com/matlabcentral/answers/762196-how-can-i-efficiently-add-multiple-arrays-generated-in-a-loop
- Another example was a simple loop calling the external lame.exe function:
lamebin = 'C:\Program_\lame3.99.5\lame.exe';
switches = ' -m j -h -V 1 -q 2 --vbr-new --nohist';
WavFiles = dir(fullfile(Folder, '*.wav'));
parfor iWav = 1:nFile
aFile = fullfile(Folder, WavFiles(iWav).name);
[aPath, aFile] = fileparts(aFile);
aMP3 = fullfile(aPath, [aFile, '.mp3']);
[s, w] = dos([lamebin, switches, '"', aFile, '" "', aMP3, '"']);
end
Both examples take about the double time than a FOR loop on my 2 core CPU, but there is no acceleration on the 4 core also. The RAM is not exhausted in both cases.
Questions:
- Are there obvious mistakes in my naive approachs?
- How do you use PARFOR in your applications to accelerates the processing on a pool with 2 or 4 local workers? I know the examples from the documentation, but I was not successful yet to implement it in my codes.
4 个评论
Edric Ellis
2021-3-5
I presume when you're trying with Java you are running multiple "lame" processes simultaneously, and seeing a sensible speed-up? (I was going to speculate that perhaps disk access was limiting performance, but if you're able to get expected performance running multiple processes a different way, then that would seem unlikely).
回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel Computing Fundamentals 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!