fminbnd in parallel: no gain

1 次查看(过去 30 天)
I want to minimize a function using fminbnd on a 32-core Linux machine (running Ubuntu 13.10+matlab2013a). I do the following:
>>matlabpool
Starting matlabpool using the 'local' profile ...
connected to 12 workers
>>optim_fminbnd=optimset('fminbnd');
>>tic
>>disp('With parallelization:')
With parallelization:
>> fminbnd(@localstrul_valuespectral,0,359,optimset(optim_fminbnd,'UseParallel','a
lways'))
ans =
221.8743
>>toc
Elapsed time is 7.124580 seconds.
>>tic
>>disp('Without parallelization:')
Without parallelization:
>>fminbnd(@localstrul_valuespectral,0,359,optimset(optim_fminbnd,'UseParallel','ne
ver'))
ans =
221.8743
>>toc
Elapsed time is 7.785863 seconds
that is to say there is no gain in speed (sometimes the non-parallel version is marginally faster). Do I set the parameters wrong?

采纳的回答

Alan Weiss
Alan Weiss 2014-1-24
fminbnd is a serial algorithm. There is no gain possible using parallel processing. In fact, look at the options for fminbnd, and you see that fminbnd does not use the UseParallel option.
Alan Weiss
MATLAB mathematical toolbox documentation
  1 个评论
Matt J
Matt J 2014-1-24
编辑:Matt J 2014-1-24
However, it might be possible to use parallel operations inside the objective function localstrul_valuespectral to speed up its evluations.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Simulink Functions 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by