Matlab并行计算工具箱Word下载.docx
《Matlab并行计算工具箱Word下载.docx》由会员分享,可在线阅读,更多相关《Matlab并行计算工具箱Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
开发分布式应用
分布式应用或者并行应用,包含独立的任务,它可以独立的执行,而并不需要任务间的通信。
对于分布式应用来说,你可以使用分布式计算工具箱中的函数来为你的应用定制独立的计算任务,它可以被收集到分布式的任务中并集群的提交执行。
开发并行应用
并行应用包含相互依存的任务,它在应用执行的过程中交换数据。
工具箱和引擎包含基于MPI标准的函数,它支持Matlab开发并行应用中的通信。
然而,使用这些基于MPI功能的函数包含跟踪消息传递的详细信息,像在处理器和控制处理器间的通信。
并行计算工具箱用两种重要的方式简化了并行应用的开发。
首先,工具箱支持分布式矩阵,它在对待分布式处理器的数据时,把它作为一个单独的矩阵,而不是作为在不同处理器上的独立的矩阵。
通过分布式矩阵,研究人员可以直接的在矩阵中展示操作,而并不需要处理复杂的信息传递。
工具箱为分布式矩阵提供了超过150个的Matlab函数,包括基于ScaLAPACK的线性算数。
第二,工具箱包含新的交换的并行执行模型。
从而,研究人员可以在许多个处理器和内核中,并行同时的工作。
这个模式可用于交互的开发、设计开发和解决问题。
支持调度程序
对于任务调度工作,你可以或者使用MathWorks的工具经理,这个调度程序。
它配置在引擎中或者第三方的调度程序。
这个工具箱和引擎支持所有的第三方的调度程序,像LSF平台,MicrosoftWindowsComputeClusterServer,PBS,和SunGridEngine。
或者直接的,或者通过基因调度接口来实现。
这些资源包括安装脚本,在线技术解决和供应商提供的一体化脚本。
这些都可以帮助你结合工具箱和引擎到你已经存在的计算环境中。
(二)Matlab分布式计算工具箱使用指南(转载)
使用Matlab进行分布式计算需要两个产品:
1、分布式计算工具箱(DistributedComputingToolbox)2、Matlab分布计算引擎MDCE(MatlabDistributedComputerEngine)
MDCE主要用于执行ClinetSession中定义的job和task
一、安装MDCE
MDCE安装在D:
\ProgramFiles\MATLAB\R2008a\toolbox\distcomp\bin目录下:
在Matlab的commandwindows中执行
复制内容到剪贴板
代码:
mdceinstall%安装引擎
mdcestart%启动引擎
执行上面两条命令后,分布式计算引擎服务程序就安装完毕了。
MDCE就是一个服务进程,在使用MDCE之前需要首先启动它。
二、启动一个JobManager
startjobmanager-namematlabsky-v%启动一个名为matlabsky的作业管理进程jm=findResource('
scheduler'
'
type'
jobmanager'
'
Name'
matlabsky'
);
%找出PC上有效的分布计算资源
三、启动Worker
startworker-nameworker1
out=findResource('
worker'
)
waitForState(job,'
finished'
1000)jm=findResource('
name'
default_jobmanager'
四、分布式计算工具箱示例
在运行示例之前,必须先安装MDCE,然后启动一个JobManager和若干个Worker,并且在JobManager中注册Worker。
要查看MDCE进程的状态,可以用nodestatus.bat批处理文件来查看。
如果在JobManager中没有注册Worker,那么JobManager就没有办法把任务分配给Worker计算,当调用waitForState(job,'
)命令时,就会发生死锁。
1、ProgrammingaBasicJobwithaJobManager复制内容到剪贴板
jm=findResource('
ccy'
j=createJob(jm);
createTask(j,@sum,1,{[11]});
createTask(j,@sum,1,{[22]});
createTask(j,@sum,1,{[33]});
submit(j);
waitForState(j)
results=getAllOutputArguments(j)destroy(j)
2、使用分布式计算工具箱来计算Pi的值
fun=inline('
4./(1+x.^2)'
x'
worker_number=20;
fori=1:
worker_number
createTask(j,@quad,1,{fun,(i-1)/worker_number,i/worker_number});
end
submit(j);
waitForState(j);
results=getAllOutputArguments(j);
val_pi=0;
val_pi=val_pi+results{i};
end
destroy(j);
str=sprintf('
PI=%e,Error=%e'
val_pi,val_pi-pi);
disp(str);
val_pi
;
tid=570&
goto=nextnewset
(三)MATLAB中的并行程序开发
3.3.3.1编写分布式应用程序
分布式应用程序适用于解决可以被分割为在几个处理器上独立执行的完全独立工作或任务单的问题.如MonteCarlo模拟和其它粗粒(coarse-grained)或易并行(embarrassinglyparallel)应用程序。
分布式计算工具箱提供的功能可以将应用程序分割为能在多个worker(从客户会话中单独运行的MATLAB计算引擎)上独立执行的任务。
在一个应用程序中,这些任务可以包含一个或多个MATLAB功能,或涵盖多组参数的完整Simulink模型。
分布式应用程序的工作流程一般是:
1.寻找一个作业管理器(或者作业调度程序(scheduler))——你的网络上可能有一个或多个作业管理器(但是通常只有一个scheduler);
用来寻找一个作业管理器或者作业调度程序的函数findResource()在当前MATLAB内核中创建一个对象,用来表示将要运行作业的作业管理器或者作业调度程序.
2.创建一个作业——创建作业用以产生一个任务集合.作业存在于作业管理器中,而一个在本地MATLAB内核中的作业对象代表相应的作业.
3.创建任务——创建任务添加到作业中去,可以用本地MATLAB内核中的任务对象表示作业中的每一个任务.
4.提交作业到待执行的任务队列——当作业的每一个任务都被定义之后,将它提交到作业管理器或者作业调度程序.它们将任务分配到各个节点执行.当各节点的所有任务执行完毕后,
作业将被标记为完成状态.
5.返还作业结果
6.销毁作业——当所有作业完成,结果收集回来后,需要销毁作业以释放内存.
下面这段程序创建了三个独立的任务,产生3个不同维度的随机数矩阵.
%寻找一个作业管理器并创建一个作业
jm=findResource(‘scheduler’,‘type’,‘jobmanager’);
job=createJob(jm);
%为作业创建独立的任务
task1=createTask(job,@rand,1,{1});
task2=createTask(job,@rand,1,{2});
task3=createTask(job,@rand,1,{3});
%提交任务,等待完成
submit(job);
waitForState(job,‘finished’);
%得到结果并显示
results=getAllOutputArguments(job);
fori=1:
3
disp(results{i})
3.3.3.2设计开发并行应用程序
并行应用程序适用于解决那些可以被分割为在整个应用程序生命周期中的特定时间交换数据和同步化的独立任务的问题。
分布式计算工具箱支持用于设计开发并行应用程序的特定方法:
使用并行for循环和分布式数组,或使用消息传递构造。
这些构造使得我们可以对并行应用程序有很好的控制。
可以将任何串行MATLAB算法转换成使用这些构造的并行算法。
但是,单独Simulink模型不能被分割为跨多个worker并行运行。
分布式计算工具箱支持分布式数组,这些数组是在所有参与并行计算的所有worker中分配的任何数据类型的矩阵。
并行算法配合分布式数组使用,可以使执行数值运算,如矩阵乘法,分解并直接在分布式数组上转换。
工具箱中提供了150多个用于分布式数组的重载MATLAB函数,包括基于ScaLAPACK的线性代数实例。
在解释分布式数组之前,先说明一个专用词汇:
lab.当MATLAB工作进程开始工作时,它们在默认情况下是独立工作,也可以相互通信协同工作.这时他们被称为labs.分布式数组是存储一组labs中分割后各部分数据的特殊数组.你可以进行各种操作,如变换,直接分解分布式阵列,就像使用常用数组一样.
因为分布式数组在多个labs中存储数据,所以你可以在一个MATLAB内核中处理更大的数据集合.有超过150个MATLAB函数支持分布式数组,