From: Saiful on
Hi,

I am working on a large data set (primarily graphical analysis). So I am using Dell Precision T7500 (double quad-core processor, 8 GB Ram). I have enabled Hyperthreading in the BIOS. So Windows Task Manager is now showing 16 processors in total.

While I am executing the function, windows task manager is showing that onle 2/3 processors (12-15% of the total processor capability) and 1.6 GB RAM is used. I am using a MEX file (C++) in my program compiled for 64 bit windows.

How can I increase the usages of processor and RAM to speed up Matlab computation?By the way, I am using Matlab 2009b (64-bit). It is supposed to support multiple processors and multiple cores of processors.

Please advise. Thanks
From: jay on
On Jan 11, 4:03 am, "Saiful " <esai...(a)gmail.com> wrote:
> Hi,
>
> I am working on a large data set (primarily graphical analysis). So I am using Dell Precision T7500 (double quad-core processor, 8 GB Ram). I have enabled Hyperthreading in the BIOS. So Windows Task Manager is now showing 16 processors in total.
>
> While I am executing the function, windows task manager is showing that onle 2/3 processors (12-15% of the total processor capability) and 1.6 GB RAM is used. I am using a MEX file (C++) in my program compiled for 64 bit windows.
>
> How can I increase the usages of processor and RAM to speed up Matlab computation?By the way, I am using Matlab 2009b (64-bit). It is supposed to support multiple processors and multiple cores of processors.
>
> Please advise. Thanks

Did you get an answer from anyone? I have the same problem.
Thanks
Al
From: omegayen on
jay <jay003al(a)yahoo.com> wrote in message <ba317306-82a7-457d-9794-60e70fd28455(a)m31g2000yqd.googlegroups.com>...
> On Jan 11, 4:03 am, "Saiful " <esai...(a)gmail.com> wrote:
> > Hi,
> >
> > I am working on a large data set (primarily graphical analysis). So I am using Dell Precision T7500 (double quad-core processor, 8 GB Ram). I have enabled Hyperthreading in the BIOS. So Windows Task Manager is now showing 16 processors in total.
> >
> > While I am executing the function, windows task manager is showing that onle 2/3 processors (12-15% of the total processor capability) and 1.6 GB RAM is used. I am using a MEX file (C++) in my program compiled for 64 bit windows.
> >
> > How can I increase the usages of processor and RAM to speed up Matlab computation?By the way, I am using Matlab 2009b (64-bit). It is supposed to support multiple processors and multiple cores of processors.
> >
> > Please advise. Thanks
>
> Did you get an answer from anyone? I have the same problem.
> Thanks
> Al

You may want to take a look at http://www.mathworks.com/products/parallel-computing/

Parallel functions in matlab are some what limited. I am assuming only one of your processors out of 8 is being used for whatever you are trying to do. If you are generating a plot this is a current inherent limitation. However if you have code that can be independent you could potentially get a speed up with a parfor loop.
From: Michael Croucher on
Matlab *supports* multi-core processors but this doesn't mean that it
will automatically *use* them all. To make use of more than one
processor simultaneously in any function then some work has to be
done. Sometimes this work is easy and other times it is very VERY
difficult. The practical upshot of all of this is that only a small
subset of MATLAB commands will make use of your multiple CPUs without
any extra work from you. The Mathworks are increasing the number of
these 'implicitly parallel' functions with every release. I had a go
at giving a full list of them at the following website.

http://www.walkingrandomly.com/?p=1894

As another poster has mentioned, you might be able to use something
like parfor to paralellise your code but this will cost you extra
because you'll need the parallel computing toolbox.

However, since you are using a mex file, you might be able to use
OpenMP within your C++ code to get parallelization for free. I have
done this on Linux and wrote it up at

http://www.walkingrandomly.com/?p=1795

Hope this helps.
Best Wishes,
Mike

On 5 Feb, 06:58, "omegayen " <omega...(a)ameritech.net> wrote:
> jay <jay00...(a)yahoo.com> wrote in message <ba317306-82a7-457d-9794-60e70fd28...(a)m31g2000yqd.googlegroups.com>...
> > On Jan 11, 4:03 am, "Saiful " <esai...(a)gmail.com> wrote:
> > > Hi,
>
> > > I am working on a large data set (primarily graphical analysis). So I am using Dell Precision T7500 (double quad-coreprocessor,8GB Ram). I have enabled Hyperthreading in the BIOS. So Windows Task Manager is now showing 16 processors in total.
>
> > > While I am executing the function, windows task manager is showing that onle 2/3 processors (12-15% of the total processor capability) and 1.6 GB RAM is used. I am using a MEX file (C++) in my program compiled for 64 bit windows.
>
> > > How can I increase the usages of processor and RAM to speed up Matlab computation?By the way, I am using Matlab 2009b (64-bit). It is supposed to support multiple processors and multiple cores of processors.
>
> > > Please advise. Thanks
>
> > Did you get an answer from anyone?  I have the same problem.
> > Thanks
> > Al
>
> You may want to take a look athttp://www.mathworks.com/products/parallel-computing/
>
> Parallel functions in matlab are some what limited. I am assuming only one of your processors out of8is being used for whatever you are trying to do.. If you are generating a plot this is a current inherent limitation. However if you have code that can be independent you could potentially get a speed up with a parfor loop.

From: Sebastien Paris on
Very interessting results.


However I did some smal tests with OpenMP + Intel Compiler 10.2 + Wintel 32 (XP SP3 + C2D)

OMP_NUM_THREADS = 1

x=rand(1,99999999);

tic;mex_sum_openmp(x);toc
» Elapsed time is 4.8 seconds.

OMP_NUM_THREADS =2

x=rand(1,99999999);

tic;mex_sum_openmp(x);toc
» Elapsed time is 2.77 seconds.

Here both core of my C2D are running

So a good news but ... when I compiled without the #pragma, using a sole core but with the Intel optimization flags (/fast) I had
tic;mex_sum_openmp(x);toc
» Elapsed time is 2.8 seconds.

So either I had 2 cores working without specifics optimization, or one with full optimization ....

How to have both ? I don't know yet ....

Sébastien







Michael Croucher <walking.randomly(a)googlemail.com> wrote in message <82721884-1399-47e4-ac29-38af7ffcd1e1(a)u26g2000yqm.googlegroups.com>...
> Matlab *supports* multi-core processors but this doesn't mean that it
> will automatically *use* them all. To make use of more than one
> processor simultaneously in any function then some work has to be
> done. Sometimes this work is easy and other times it is very VERY
> difficult. The practical upshot of all of this is that only a small
> subset of MATLAB commands will make use of your multiple CPUs without
> any extra work from you. The Mathworks are increasing the number of
> these 'implicitly parallel' functions with every release. I had a go
> at giving a full list of them at the following website.
>
> http://www.walkingrandomly.com/?p=1894
>
> As another poster has mentioned, you might be able to use something
> like parfor to paralellise your code but this will cost you extra
> because you'll need the parallel computing toolbox.
>
> However, since you are using a mex file, you might be able to use
> OpenMP within your C++ code to get parallelization for free. I have
> done this on Linux and wrote it up at
>
> http://www.walkingrandomly.com/?p=1795
>
> Hope this helps.
> Best Wishes,
> Mike
>
> On 5 Feb, 06:58, "omegayen " <omega...(a)ameritech.net> wrote:
> > jay <jay00...(a)yahoo.com> wrote in message <ba317306-82a7-457d-9794-60e70fd28...(a)m31g2000yqd.googlegroups.com>...
> > > On Jan 11, 4:03 am, "Saiful " <esai...(a)gmail.com> wrote:
> > > > Hi,
> >
> > > > I am working on a large data set (primarily graphical analysis). So I am using Dell Precision T7500 (double quad-coreprocessor,8GB Ram). I have enabled Hyperthreading in the BIOS. So Windows Task Manager is now showing 16 processors in total.
> >
> > > > While I am executing the function, windows task manager is showing that onle 2/3 processors (12-15% of the total processor capability) and 1.6 GB RAM is used. I am using a MEX file (C++) in my program compiled for 64 bit windows.
> >
> > > > How can I increase the usages of processor and RAM to speed up Matlab computation?By the way, I am using Matlab 2009b (64-bit). It is supposed to support multiple processors and multiple cores of processors.
> >
> > > > Please advise. Thanks
> >
> > > Did you get an answer from anyone?  I have the same problem.
> > > Thanks
> > > Al
> >
> > You may want to take a look athttp://www.mathworks.com/products/parallel-computing/
> >
> > Parallel functions in matlab are some what limited. I am assuming only one of your processors out of8is being used for whatever you are trying to do. If you are generating a plot this is a current inherent limitation. However if you have code that can be independent you could potentially get a speed up with a parfor loop.