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

上传人:飞*** 文档编号:51021763 上传时间:2018-08-12 格式:PDF 页数:9 大小:38.99KB
返回 下载 相关 举报
Matlab并行计算工具箱函数基本情况介绍_第1页
第1页 / 共9页
Matlab并行计算工具箱函数基本情况介绍_第2页
第2页 / 共9页
Matlab并行计算工具箱函数基本情况介绍_第3页
第3页 / 共9页
Matlab并行计算工具箱函数基本情况介绍_第4页
第4页 / 共9页
Matlab并行计算工具箱函数基本情况介绍_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《Matlab并行计算工具箱函数基本情况介绍》由会员分享,可在线阅读,更多相关《Matlab并行计算工具箱函数基本情况介绍(9页珍藏版)》请在金锄头文库上搜索。

1、1 Matlab并行计算工具箱的使用Matlab 并行工具箱的产生一方面给大规模的数据分析带来了巨大的效益,另一方面且引入了分布式计算,借助matlab 自身携带的MDCE ,可以实现单机多核并行运行或者是同一个局域网络中的多台处理器组成的机群的并行运行。个人以为后者是前者的拓展,并行计算的最初目的是为了解决串行计算速度不能满足某些复杂运算而产生的技术,能够借助较低配置的处理,协同工作处理同一个程序,但是他们之间是并不会交互的,仅仅是有核心主机client 进行大任务的分解,而后将它们分配给各个处理器, 由处理器共同完成。所以说并行计算的实质还是主从结构的分布式计算。这里体现了数量的优势, 同

2、一个程序串行运行可能需要40个小时,但是若是由10 台处理器同时跑,则有望将计算时间降低到接近4 个小时的水平。 而且这十台处理器可以是一个多个多核CPU组成,例如一个8 核心 CPU 和 1 个 2 核心 CPU。也可以是由5 个 2 核心 CPU 组成,形式灵活。而分布式计算在并行计算的基础上有功能上的扩展,一个很重要的方面就体现在,上述的十个处理器之间可以进行交互式通讯这是基于MPI(message passing interface)实现的,这对于大规模的分布式控制系统是很有需要的,也就是说, 各个处理器之间要实现数据的实时传递,有时是共享某些信息,有时是lab1 需要 lab2 的某

3、些信息。相对于单纯的并行计算来说,后者将交互式通讯扩展到了labs 之间,而不仅仅是lab 和 client 之间。Matlab 并行计算工具箱中的函数有:1.Parfor (FOR循环的并行计算);函数 1:matlabpool 其作用是开启matlab 并行计算池,单独的命令会以默认的配置开启并行计算环境。函数 2:parfor For 循环的并行计算替代关键词,需要注意的是,parfor 不能像 for 一样嵌套。但是外部的parfor 内部可以嵌套for 循环。函数 3:batch 用于在 worker 上运行 matlab 脚本或者是matlab 函数。例如:batch( scrip

4、t.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,.) 其中的变量:JThe batch job object. aScript The script of MATLAB code to be evaluated by the MATLAB

5、pool job. myClusterCluster object representing cluster compute resources. fcnFunctionhandle or string of function name to be evaluated by the MATLAB pool job. 2 NThe number of output arguments from the evaluated function. x1, ., xnCell array of input arguments to the function. p1, p2Object propertie

6、s 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 (Sin

7、gle Program Multiple Data ) 其使用方式一般情况下为:spmd end. 当 程 序 语 句 被 放 置 在部分时, matlab 会将程序语句在几个matlab worker 中同时运行,并行计算。函数 4: composite创建一个复合对象。 对于在 workers 上运行 spmd语句中的变量,在client 端都可以通过构造函数获取变量值,当spmd语句运行时,会自动生成复合构造函数,也可以利用composite 函数自行创建一个。例如对于,复合构造变量C:C1 表示变量C 在 worker 1 上的值;C2 表示变量C 在 worker 2 上的值;函数

8、5:codistributed 用复制方式创建一个codistributed 数组。一个 codistributed 数组被分割为多个片段分别分布在不同lab 的工作空间中。这种情况适用于每一个lab 都要用到某一个大型数组的一个部分,这样提供了lab在访问这些数据的便利。一个codistributed 数组和一个distributed 数组之间差别很小,体现在其视角的不同。前者用于在一个lab 上存取一个数组而后者则支持在client 上存取一个数组。其语法:C = codistributed(X) distributes a replicated X using the default c

9、odistributor. 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 c

10、odistributor1d 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 s

11、ize(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 3 codistributor codist. This is the same as calling C = redistribute(C1, codist). If the specified distribution scheme is that s

12、ame as that already in effect, then the result is the same as the input. 函数 6: redistribute 将一个 codistributed 数组从新按照其他分配规则进行重新分布 。语法: redistribute(D1,CODISTR) ,将分布式数组D1 按照 CODISTR 重新分配在 labs 中的分布方式。函 数7: getLocalPart获 取 一 个 分 布 式 数 组 的 本 地 部 分 , 语 法 : L = getLocalPart(D) 返回分布式数组D 的本地部分,其格式取决于D 的具体分配

13、方案。函数 8:globalIndices 根据分布式数组在各个lab 中的分配方案获取本地部分的全局索引 。(如何使用还不清晰) 5.集群配置文件和计算规模函数 1:parcluster 根据集群配置文件建立一个集群。其语法:C = parcluster; 返回一个集群对象。该对象是由默认的集群配置文件确定;C = parcluster(profile); 返回一个集群对象,该对象是由profile 确定。函数 2:parallel.defaultClusterProfile 该函数获取或者设置默认的并行计算集群配置文件。语法:p = parallel.defaultClusterProfi

14、le ,返回当前默认集群配置文件名oldprofile = parallel.defaultClusterProfile(newprofile) 设置 newprofile 为默认配置文件,返回旧的配置文件名。可以通过saveProfile 或者 saveAsProfile 来修改一个集群对象。函数 3:parallel.importProfile 导入集群配置文件。语法:profilename = parallel.importProfile(filename).导入由 filename 确定的配置文件,而后返回导入的配置文件名。配置文件名后缀是.mat。需要注意的是,凡是导入的配置文件,在

15、以后的matlab 操作中都是有效的,不必重复导入。函数 4:pctconfig 配置一个并行计算工具箱会话。语法有:Pctconfig( p1 , v1 , ):设置 client 端的配置属性P1的值为 V1;Config = pctconfig( p1 , v1 , ):返回一个结构体赋给config, 结构体的字段名对应属性名称,字段值则对应属性值。Config = pctconfig();没有任何输入,以结构体形式返回当前所有属性以及属性值。6.详细的作业和任务控制a)作业和任务的建立函数 1:createJob 在集群上建立作业,其语法:obj = createJob(cluste

16、r),为确定的cluster 建立独立作业,作业所需要的数据存放在本地,由cluster 的 JobStorageLocation 属性确定。obj = createJob(.,p1,v1,p2,v2,.) 建立有具体属性值的作业对象。job = createJob(.,Profile,profileName,.) 建立由 profile 确定具体属性的作业对象。函数 2:createCommunicatingJob 建立一个新的通讯作业,其语法:4 Job = createCommunicatingJob(cluster) 为特定的cluster 建立一个通讯对象;Job = createCommunicatingJob( , p1, v1, p2 , ) 具体的属性值建立作业对象;Job = createCommunicatingJob( , type , SPMD , )建立一个 pool 类型的通讯作业,该作业可以利用matlab 池的资

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号