MATLAB Answers

PARFOR in real applications

1 view (last 30 days)
Jan
Jan on 4 Mar 2021
Commented: Edric Ellis on 5 Mar 2021
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:
  1. https://www.mathworks.com/matlabcentral/answers/762196-how-can-i-efficiently-add-multiple-arrays-generated-in-a-loop
  2. 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 Comments
Edric Ellis
Edric Ellis on 5 Mar 2021
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).

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!