Matlab多核运算(一)
2015-04-05 10:37
357 查看
先简单试试:
>> 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个MATLAB.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关闭即可。
代码及使用时间对比如下表:
70.471469/7.750534 = 9.0925,并行与否的时间比竟然是9倍,足以表明,在Matlab中使用多核并行运算给我们带来很多好处。
首先,LZ要搞清楚自己的电脑是几个核的。如果不是多核的,那就没有办法进行多核运算了。现在大多数电脑是双核的,也有一些高级一些的是四核。
如果是双核的,进行多核运算前,写上代码:
matlabpool local 2;
四核的话写上代码:
matlabpool local 4;
依此类推。
多核运算完以后,要记得关闭多核运算。写上代码:
matlabpool close;
要记住使用matlabpool和parfor缺一不可。开启了matlabpool,还是用for做循环的话,是无法回快速度的。
我没有让你把所有的for循环都改成parfor循环.我的意思是多核运算只能加速parfor的部分.
原文地址:http://blog.sina.com.cn/s/blog_890c6aa30101bhpb.html
>> 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个MATLAB.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. |
首先,LZ要搞清楚自己的电脑是几个核的。如果不是多核的,那就没有办法进行多核运算了。现在大多数电脑是双核的,也有一些高级一些的是四核。
如果是双核的,进行多核运算前,写上代码:
matlabpool local 2;
四核的话写上代码:
matlabpool local 4;
依此类推。
多核运算完以后,要记得关闭多核运算。写上代码:
matlabpool close;
要记住使用matlabpool和parfor缺一不可。开启了matlabpool,还是用for做循环的话,是无法回快速度的。
我没有让你把所有的for循环都改成parfor循环.我的意思是多核运算只能加速parfor的部分.
原文地址:http://blog.sina.com.cn/s/blog_890c6aa30101bhpb.html
相关文章推荐
- Matlab多线程与多核运算, 以及GPU加速
- Matlab 多核 多个CPU 并行运算
- matlab学习日志之并行运算
- Matlab学习笔记(一)Matlab基本运算及语法
- 如何提高 matlab 计算速度 运算效率
- MATLAB符号表达式运算
- MATLAB(6)矩阵和向量运算
- matlab在DSP中的应用(三)---离散序列的基本运算
- matlab程序运算速度
- matlab的运算
- MATLAB 线性运算之图像相加去噪
- MATLAB 几何运算之图像的放大
- 多核运算
- MATLAB符号运算(1)
- Matlab多线程运算的问题
- [资料文本] Matlab中图像的邻域与块运算(blkproc)
- matlab 运算程序时间计算
- matlab矩阵合并及相关运算
- matlab常见的运算函数
- matlab中的点运算