Matlab并行运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab并行运算

目前,新购置的电脑大部分都是多核的了,使用Matlab进行大量计算时如何有效利用多核呢?Matlab目前版本已经比较好的支持多核并行运算了。是用的Matlab版本是R2007b。电脑是双核的。

先简单试试:

>> matlabpool local 2

Submitted parallel job to the scheduler, waiting for it to start.

Connected to a matlabpool session with 2 labs.

显示正在进行多核配置,然后,提示连接到2个“实验室”(labs)。我这也理解的:本地虚拟出2台可以运行matlab的工作站,这样用分布式计算工具箱可以进行并行计算(matlabpool 这个命令好像是在并行计算工具箱里的)。

>> testParallel

Elapsed time is 7.750534 seconds.

这里运行testParallel函数,已经开辟了2个labs,为了进行多核并行运算,testParallel中,要用parfor代替原来的for循环。

在运行这个时,观察windows任务管理器,可以发现一共有3个MA TLAB.exe进程。其中一个占内存较多的,应该是主控的,他基本不干活,只负责分配,进行计算时他的cpu占用率只有1~2%,剩下两个进程专门用来计算的,跑起来各占cpu 49%左右。看上去还是每个matlab进程单核运算,但是一下开2个进程,所以能把cpu用满。当运行完testParallel后,三个进程的cpu都立刻降为1%左右了。

>> matlabpool close

Sending a stop signal to all the labs...

Waiting for parallel job to finish...

Performing parallel job cleanup...

Done.

当要关闭开辟的2个labs时,使用matlabpool close关闭即可。

代码及使用时间对比如下表:

function testParallel

%非并行

% matlabpool local 2

tic

total=10^5;

for (i=1:total)

ss(i)=inSum;

end

plot(ss);

toc

% matlabpool close

function [s]=inSum

x=abs(round(normrnd(50,40,1,1000)));

s=sum(x);

function testParallel

%并行

matlabpool local 2

tic

total=10^5;

parfor (i=1:total)

ss(i)=inSum;

end

plot(ss);

toc

matlabpool close

function [s]=inSum

x=abs(round(normrnd(50,40,1,1000)));

s=sum(x);

Elapsed time is 70.471469 seconds.Elapsed time is 7.750534 seconds.

70.471469/7.750534 = 9.0925,并行与否的时间比竟然是9倍,足以表明,在Matlab中使用多核并行运算给我们带来很多好处。

转载请注明出处/webas/item/438ed30e364e28cf905718d8。

先简单试试:

>> matlabpool local 2

Submitted parallel job to the scheduler, waiting for it to start.

Connected to a matlabpool session with 2 labs.

显示正在进行多核配置,然后,提示连接到2个“实验室”(labs)。我这也理解的:本地虚拟出2台可以运行matlab的工作站,这样用分布式计算工具箱可以进行并行计算(matlabpool 这个命令好像是在并行计算工具箱里的)。

>> testParallel

Elapsed time is 7.750534 seconds.

这里运行testParallel函数,已经开辟了2个labs,为了进行多核并行运算,testParallel中,要用parfor代替原来的for循环。

在运行这个时,观察windows任务管理器,可以发现一共有3个MA TLAB.exe进程。其中一个占内存较多的,应该是主控的,他基本不干活,只负责分配,进行计算时他的cpu占用率只有1~2%,剩下两个进程专门用来计算的,跑起来各占cpu 49%左右。看上去还是每个matlab进程单核运算,但是一下开2个进程,所以能把cpu用满。当运行完testParallel后,三个进程的cpu都立刻降为1%左右了。

>> matlabpool close

Sending a stop signal to all the labs...

Waiting for parallel job to finish...

Performing parallel job cleanup...

Done.

当要关闭开辟的2个labs时,使用matlabpool close关闭即可。

相关文档
最新文档