PARFOR in real applications

2 ビュー (過去 30 日間)
Jan
Jan 2021 年 3 月 4 日
回答済み: Jan 2022 年 5 月 16 日
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 件のコメント
Mario Malic
Mario Malic 2021 年 3 月 4 日
Approximately, how long does take for one run of your program?
Edric Ellis
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 件)

Jan
Jan 2022 年 5 月 16 日
After trying many examples from many questions in the forum, I've found:
This runs 25% with parfor on my weak i5 mobile with 2 cores.
[TO BE EXPANDED] I'm going to add further examples here...

カテゴリ

Help Center および File ExchangeParallel for-Loops (parfor) についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by