matlab开启并行计算 核数_[续] Matlab 并行编程——多核 多线程

刚开始接触matlab并行计算,以前旧电脑从不考虑这些的

小本i7四核八线程16G内存,64位win7和matlab 2012b,任务管理器显示有8个框

当用普通for循环,只有一个框接近100%,cpu使用率只有12%左右

默认配置下,键入matlabpool,右下角提示4个

然后使用parfor,进程中也能看到5个叫做matlab的,一个接近400M,其他4个接近200M

但为什么只有4个框接近100%,cpu使用率只有50%左右?如何充分使用资源

使用matlabpool 是建议1个核(core)对应一块pool(worker)所以建议出现默认4个,可以试下,

setenv('OMP_NUM_THREADS', '8');

setenv 'OMP_NUM_THREADS' 8

getenv 'OMP_NUM_THREADS'

图形界面的设置如下Home-parallel-mange cluster profile,修改NumWorkers为8,再次打开matlabpool,右下角显示8,运行cpu100%满负荷

顺便说下,小本风扇顿时惨厉的狂豪;内存共9个叫做Matlab的,一个主的接近3G,其他8个接近200M,我的16G内存快接近一半了

MATLAB多线程

http://blog.sina.com.cn/s/blog_48a0eb290100q9gc.html

MATLAB先天的多线程残疾,给编写实时程序带来了致命的打击。一般情况只能按堆栈的形式,排队执行Matlab命令,可是无巧不成书,有时我们偏偏需要进行多线程和实时编程。

比如:

1.我想实时更新一个电子表的时间,也就是每1s读取一次系统时间或者自动加1s

2.我需要这个程序在10s后终止

明显这些需要,使用一般的Matlab编程是没法或者说很难实现的。

还好Matlab自知在这方面亏欠大家太多,提供了唯一一个多线程的实现方法——Timer对象

一、Timer对象的创建T = timer

T = timer('PropertyName1', PropertyValue1, 'PropertyName2', PropertyValue2,...)

括号中的参数可以在创建Timer是给出,也可以通过以后的set/get命令设置和读取

二、Timer属性参数

1.属性设置

(1)创建的时候直接赋值

%创建一个Timer对象变量TaskTimer,并给出部分参数

TaskTimer=timer(...

'Name','Matl

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值