Matlab 并行计算工具箱函数基本情况介绍

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

Matlab并行计算工具箱的使用

Matlab并行工具箱的产生一方面给大规模的数据分析带来了巨大的效益,另一方面且引入了分布式计算,借助matlab自身携带的MDCE,可以实现单机多核并行运行或者是同一个局域网络中的多台处理器组成的机群的并行运行。

个人以为后者是前者的拓展,并行计算的最初目的是为了解决串行计算速度不能满足某些复杂运算而产生的技术,能够借助较低配置的处理,协同工作处理同一个程序,但是他们之间是并不会交互的,仅仅是有核心主机—client进行大任务的分解,而后将它们分配给各个处理器,由处理器共同完成。所以说并行计算的实质还是主从结构的分布式计算。这里体现了数量的优势,同一个程序串行运行可能需要40个小时,但是若是由10台处理器同时跑,则有望将计算时间降低到接近4个小时的水平。而且这十台处理器可以是一个多个多核CPU 组成,例如一个8核心CPU和1个2核心CPU。也可以是由5个2核心CPU组成,形式灵活。

而分布式计算在并行计算的基础上有功能上的扩展,一个很重要的方面就体现在,上述的十个处理器之间可以进行交互式通讯这是基于MPI(message passing interface)实现的,这对于大规模的分布式控制系统是很有需要的,也就是说,各个处理器之间要实现数据的实时传递,有时是共享某些信息,有时是lab1需要lab2的某些信息。相对于单纯的并行计算来说,后者将交互式通讯扩展到了labs之间,而不仅仅是lab和client之间。

Matlab并行计算工具箱中的函数有:

1.Parfor (FOR循环的并行计算);

函数1:matlabpool

其作用是开启matlab并行计算池,单独的命令会以默认的配置开启并行计算环境。

函数2:parfor

For循环的并行计算替代关键词,需要注意的是,parfor不能像for一样嵌套。

但是外部的parfor内部可以嵌套for循环。

函数3:batch用于在worker上运行matlab脚本或者是matlab函数。

例如:batch(‘script.m’) 语句会根据默认并行配置文件定义的集群将script脚本文件运行在worker上。

2.批处理

函数1:batch,其语法有:

j = batch('aScript')

j = batch(myCluster,'aScript')

j = batch(fcn,N,{x1, ..., xn})

j = batch(myCluster,fcn,N,{x1,...,xn})

j = batch(...,'p1',v1,'p2',v2,...)

其中的变量:

J The batch job object.

'aScript' The script of MATLAB code to be evaluated by the MATLAB pool job.

myClusterCluster object representing cluster compute resources.

fcnFunction handle or string of function name to be evaluated by the MATLAB pool job.

N The number of output arguments from the evaluated function. {x1, ..., xn}Cell array of input arguments to the function.

p1, p2Object properties or other arguments to control job behavior.

v1, v2Initial values for corresponding object properties or arguments.

3.利用GPU计算(这一部分暂时略过)

4.分布式数组和SPMD

函数1:distributed

分布式数组利用matlab计算池中所有worker的内存来存储数组。如此以来,就可以创建或者是操作对于一个机器无法存储的大型数组。

函数2:gather回收所有的分布式数组数据到当前工作空间。

例如:x = gather(D);

函数3:spmd (Single Program Multiple Data)

其使用方式一般情况下为:spmd end.当程序语句被放置在部分时,matlab会将程序语句在几个matlab worker中同时运行,并行

计算。

函数4:composite创建一个复合对象。对于在workers上运行spmd语句中的变量,在client端都可以通过构造函数获取变量值,当spmd

语句运行时,会自动生成复合构造函数,也可以利用composite函数自行创建一个。

例如对于,复合构造变量C:

C{1} 表示变量C在worker 1上的值;

C{2} 表示变量C在worker 2上的值;

函数5:codistributed用复制方式创建一个codistributed 数组。

一个codistributed数组被分割为多个片段分别分布在不同lab的工作空间中。

这种情况适用于每一个lab都要用到某一个大型数组的一个部分,这样提供了lab

在访问这些数据的便利。一个codistributed数组和一个distributed数组之间差别很

小,体现在其视角的不同。前者用于在一个lab上存取一个数组而后者则支持在

client上存取一个数组。其语法:

C = codistributed(X) distributes a replicated X using the default codistributor. X

must be a replicated array, that is, it must have the same value on all workers. Size(C) is

the same as size(X).

C = codistributed(X, codist) distributes a replicated X using the codistributor

codist.For information on constructing codistributor objects, see the reference pages for

codistributor1d and codistributor2dbc.

C = codistributed(X, codist, lab) distributes a local array X that resides on the

worker identified by lab, using the codistributor codist. Local array X must be defined

on all workers, but only the value from lab is used to construct C. size(C) is the same as

size(X).

C = codistributed(C1, codist) where the input array C1 is already a codistributed

array, redistributes the array C1 according to the distribution scheme defined by

相关文档
最新文档