> I used parfor a while ago and it worked quite well (2.5 time faster > with 3 labs). Now I tried to use it on win 7 with 2012a and an > example from > http://blogs.mathworks.com/loren/2007/10/03/parfor-the-course/ with > the following results: > > matlabpool local 3 > > n = 600; > tic > ranks = zeros(1,n); > parfor (ind = 1:n) > ranks(ind) = rank(magic(ind)); % last index could be ind,not n-ind+1 > end > toc > > tic > ranks = zeros(1,n); > for (ind = 1:n) > ranks(ind) = rank(magic(ind)); % last index could be ind,not n-ind+1 > end > toc > > Starting matlabpool using the 'local' profile ... connected to 3 labs. > Elapsed time is 10.773548 seconds. > Elapsed time is 13.993966 seconds. > > Which is surprisingly slow for 3 labs. I would be really grateful for > any hint to get the 3 labs working.
The MATLAB function 'RANK' is instrinsically multithreaded. On a single machine, it's always going to be more efficient to use intrinsic multithreading than to use explicit parallelism using a MATLABPOOL and PARFOR because of the overheads of distributing the body of the loop to the workers. MATLABPOOL workers run in "single computational thread" mode, so to make a fair comparison, you should start MATLAB using "-singleCompThread".