Matlab 多核 多个CPU 并行运算 - xiaolu的专栏 - CSDN博客 https://blog.csdn.net/zjxiaolu/article/details/44886173

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个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.

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

16.matlab并行处理,调用CPU得多核相关推荐

  1. CPU单核多核区别【转载】

    CPU个数.CPU核心数.CPU线程数 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之 ...

  2. CPU,多核,多线程,并发,并行,计算效率

    计算机原理:CPU.并发.并行.多核.多线程.多进程 0.计算机工作流程 0.0 基础概念:计算机组成 0.1 CPU(Central Processing Unit) (1)控制单元 (2)运算单元 ...

  3. 多线程与单核cpu,多核cpu概念

    1.多线程在单核和多核CPU上的执行效率问题的讨论  a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个执行而已,其实并没有快(反而慢)  多个cpu的话就可以在两个cpu中同时执 ...

  4. 对多线程程序,单核cpu与多核cpu如何工作相关的探讨

    对多线程程序,单核cpu与多核cpu如何工作相关的探讨 我们程序员在编码的时候,涉及到技术方案时,往往会忽略掉代码对性能方面的影响,或者没有足够的敏感度来帮助自己判断自己的技术方案对系统性能造成的影响 ...

  5. 对于多线程程序,单核cpu与多核cpu是怎么工作的

    此文中的大部分资料来自于网络上,我只是觉得把有道理的整理一下,方便以后查阅. 1.多线程在单核和多核CPU上的执行效率问题的讨论 a1: 多线程在单cpu中其实也是顺序执行的,不过系统可以帮你切换那个 ...

  6. 关于 CPU 的多核和超线程技术

    1. 关于 CPU 的多核和超线程技术 CPU 的物理个数由主板上的插槽数量决定,每个 CPU 可以有多核心,每核心可能会有多线程. 多核 CPU 的每核(每核都是一个小芯片),在 OS 看来都是一个 ...

  7. 在matlab如何调用库函数,Matlab调用外部库函数方法和注意事项

    在MATLAB环境下访问外部函数的共享库文件,必须首先把该库文件加载到内存中.一旦加载成功,就 能直接在MATLAB中直接请求关于函数的任何信息.而当不再需要该库时,就应当及时把库文件从内存 中卸载以 ...

  8. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

  9. 在Matlab中调用Mathematica的函数

    Matlab与Mathematica都是目前比较好的数学软件,个人感觉Matlab比较偏应用,工程计算方面,而Mathematica比较适合数学推理,,理论比较重,个人最喜欢就是它的二维输入格式,比较 ...

  10. c# 调matlab传字符串_C# Matlab 相互调用

    测试环境 VisualStudio2013 / .net4.0 Matlab2015b 高版本的matlab对外接其它语言做得很方便了,并不需要一堆的配置. 其它语言与matlab的交互操作也类似. ...

最新文章

  1. GIF动图之父Stephen Wilhite去世,享年74岁
  2. SDWebImage 在Swift中遇坑解决
  3. HDU 2289 Cup
  4. dijkstra算法代码_数据科学家需要知道的5种图算法(附代码)
  5. MySQL 优化 —— ORDER BY 优化
  6. Android轩辕剑之ActionBar之四
  7. php1怎么获取网卡id号,C#获得MAC地址(网卡序列号)代码
  8. PWA 应用列表及常用工具
  9. 聪明女婿VS刁蛮丈母娘之三十六计【转载】
  10. 软件配合实现的“一键开关机电路
  11. 计算机硬件输出设备有哪些,输出设备有哪些,输出设备的作用
  12. wordpress教程
  13. 语法树的Java代码自动化插桩
  14. 手把手教你接入快应用账号开发-客户端方式
  15. PHP获取客户端的IP
  16. 无人驾驶车辆运动规划方法综述
  17. 从原型图到成品:步步深入 CSS 布局
  18. 调戏chatGPT(二)下围棋
  19. Echarts2.27树图和Handler.aspx结合
  20. 神经网络的基本构成要素,构成神经网络的三要素

热门文章

  1. CORD重构边缘DC 开源社区推动多项研究将落地
  2. 【206】Firefox 扩展收集
  3. 团队项目—每日记录3(补4.25)
  4. cookiesession的QA故事[原理篇]
  5. tomcat7自身调优和JVM调优
  6. Debian 6.0 安装过程 及中文乱码
  7. R.drawable 转 bitmap
  8. 代码改变世界_改变世界,一次只写一行代码
  9. 致谢 开源开发者的贡献_对开源做出的贡献如何使我成为更好的开发人员,以及如何做到这一点...
  10. wincc vbs mysql_Wincc VBS操作txt及SQL2005