From: Matt J on
I'm wondering where I can get performance info on the Parallel Computing Toolbox.
I've finally got fed up with waiting hours for my code to crunch and am wondering how much acceleration I can hope to get using the toolbox. Should I just buy as many cores as I can afford, or are there known limits on the number of cores the PCT can deploy to?
From: Bruce on
"Matt J " <mattjacREMOVE(a)THISieee.spam> wrote in message <i1th2c$1e7$1(a)fred.mathworks.com>...
> I'm wondering where I can get performance info on the Parallel Computing Toolbox.
> I've finally got fed up with waiting hours for my code to crunch and am wondering how much acceleration I can hope to get using the toolbox. Should I just buy as many cores as I can afford, or are there known limits on the number of cores the PCT can deploy to?

Hello Matt,

The Parallel Computing Toolbox PCT can handle up to 8 workers. So generally speaking two quad core processors (1 worker mapped to 1 core) should be enough to use it to full capacity. You can map 2 workers to a core (so I hear) so a single quad core processor is, in theory, enough.
(ref:
http://www.mathworks.com/products/parallel-computing/?s_cid=HP_FP_ML_parallelcomptbx)

If you are able to afford the Distributed Computing Server (DCS) as well then you can of course send batch jobs to a cluster and further expand the power of the PCT.
NB: the PCT is a prerequisite product for the DCS.

The DCS (available in various configs of n workers) allows you to distribute arrays too big to fit into your desktop's memory as well as expand the number of workers to allocate to a single job or several jobs at once in parallel. It uses a scheduler to organise the jobs you sent it via the PCT.
(ref:
http://www.mathworks.com/products/distriben/)

As for acceleration of your code via the PCT...the answer is that it all depends.
You probably will need to make use of 'parfor' within
your code to speed it up. Although it is possible to create task-parallel jobs
without 'parfor' using a local scheduler, the speed benefit being that you can call a function several times in parallel as opposed to the normal serial process without the PCT. NB: parfor loops = parallel for-loops.
'spmd' blocks are useful when dealing with large data that cannot fit on a single machine. So this command might help too if your job deals with large files of input data.
NB: spmd blocks = single program - multiple data blocks.

If your code does not contain any for loops then 'parfor'
(http://www.mathworks.com/access/helpdesk/help/toolbox/distcomp/parfor.html)
won't help. If you do use 'parfor' be sure to use consecutive integer loop counters in row vector format otherwise an invalid 'parfor' range results.

I have experienced significant speedup of my own code samples with the PCT and 'parfor' cmd so I recommend
it where speed is really important to you and you have a multi-core computer to hand (plus MATLAB and the PCT).


Cheers

Bruce
From: Matt J on
Thanks for the info, Bruce. I guess I'm not going to run out and buy a 24-core machine.