Matlab自带并行运算

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

Matlab自带并行运算

今天搞了一下Matlab的并行计算,效果还可以。关键比较方便,以后跑Matlab程序的时候可以注意用一下并行的问题。在网上查了一些资料,整理了一下,大家可以根据实际情况参考一下决定是否用并行。

一、Matlab并行计算原理

Matlab的并行计算实质还是主从结构的分布式计算。当你初始化Matlab并行计算环境时,你最初的Matlab进程自动成为主节点,同时初始化多个(具体个数手动设定,详见下文)Matlab计算子节点。Parfor的作用就是让这些子节点同时运行Parfor语句段中的代码。Parfor运行之初,主节点会将Parfor循环程序之外变量传递给计算子节点。子节点运算过程时互不干扰,运算完毕,则应该有相应代码将各子节点得到的结果组合到同一个数组变量中,并返回到Matlab主节点。当然,最终计算完毕应该手动关闭计算子节点。

二、初始化Matlab并行计算环境

这里讲述的方法仅针对多核机器做并行计算的情况。设机器的CPU核心数量是CoreNum双核机器的CoreNum=2,依次类推。CoreNum以不等于核心数量,但是如果CoreNum小于核心数量则核心利用率没有最大化,如果CoreNum大于核心数量则效率反而可能下降。因此单核机器就不要折腾并行计算了,否则速度还更慢。下面一段代码初始化Matlab并行计算环境:

运行成功后会出现如下语句:

Starting matlabpool using the 'local' configuration ... connected to 4 labs.

三、终止Matlab并行计算环境

用上述语句启动Matlab并行计算环境的话,在你的内存里面有CoreNum个Matlab进程存在,每个占用内存都在百兆以上。(可以用Wind ows任务管理器查看),故完成运行计算后可以将其关闭。关闭的命令很简单:

matlabpool close

四、举例

下面用一个例子来测试一下,效果如何。一般地,简单应用就直接将for循环改成parfor

即可。

测试结果:不用并行所用时间:102.8s, 使用并行的时间是42.2s

五、注意问题

1、parfor效果好,但是用起来要注意程序的细节。很多地方都会报错。比如下标必须为连续的整数!否则会报下面这个错误“The variabl e xxx in a parfor cannot be classified.”具体可以看parfor帮助文件里面的sliced variabl es这一节,帮助建议仔细全部看过最好。

2、parfor不能嵌套,在程序设计的时候当注意。

3、初始化就出现错误,说明,没有安装Matlab并行工具箱,在确定安装了此工具箱后,运行:matlabpool open l ocal 4;即可进入并行环境。

4、经测试Matlab 2010a和2011b均自带并行工具箱。

相关文档
最新文档