Matlab并行计算工具箱
jm=findResource('scheduler','type','jobmanager','name','ccy'); j = createJob(jm); fun=inline('4./(1+x.^2)','x'); worker_number=20; for i=1:worker_number
作业将被标记为完成状态. 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); for i = 1 : 3 disp(results{i}) end 3.3.3.2 设计开发并行应用程序 并行应用程序适用于解决那些可以被分割为在整个应用程序生命周期中的特定时间交换数 据和同步化的独立任务的问题。分布式计算工具箱支持用于设计开发并行应用程序的特定方 法:使用并行 for 循环和分布式数组,或使用消息传递构造。这些构造使得我们可以对并行 应用程序有很好的控制。可以将任何串行 MATLAB 算法转换成使用这些构造的并行算法。
2.创建一个作业——创建作业用以产生一个任务集合.作业存在于作业管理器中,而一个在本 地 MATLAB 内核中的作业对象代表相应的作业.
3.创建任务——创建任务添加到作业中去,可以用本地 MATLAB 内核中的任务对象表示作业 中的每一个任务.
4.提交作业到待执行的任务队列——当作业的每一个任务都被定义之后,将它提交到作业管 理器或者作业调度程序.它们将任务分配到各个节点执行.当各节点的所有任务执行完毕后,
val_pi=val_pi+results{i}; end destroy(j); str=sprintf('PI=%e,Error=%e',val_pi,val_pi-pi); disp(str); val_pi /redirect.php?fid=37&tid=570&goto=nextnewset (三)MATLAB 中的并行程序开发
MDCE 主要用于执行 Clinet Session 中定义的 job 和 task
一、安装 MDCE MDCE 安装在 D:\Program Files\MATLAB\R2008a\toolbox\distcomp\bin 目录下: 在 Matlab 的 command windows 中执行 复制内容到剪贴板 代码: mdce install %安装引擎 mdce start %启动引擎 执行上面两条命令后,分布式计算引擎服务程序就安装完毕了。MDCE 就是一个服务进程, 在使用 MDCE 之前需要首先启动它。
3.3.3.1 编写分布式应用程序
分布式应用程序适用于解决可以被分割为在几个处理器上独立执行的完全独立工作或任务 单的问题.如 Monte Carlo 模拟和其它粗粒(coarse-grained)或易并行(embarrassingly parallel)应用程序。分布式计算工具箱提供的功能可以将应用程序分割为能在多个 worker (从客户会话中单独运行的 MATLAB 计算引擎)上独立执行的任务。在一个应用程序中, 这些任务可以包含一个或多个 MATLAB 功能,或涵盖多组参数的完整 Simulink 模型。
Matlab 并行计算工具箱
(一)Matlab 分布式和并行编程 Distributed and Parallel Programming 11/29/2008 10:31:15 AM
Today's engineers and scientists, faced with the demand to model increasingly complex systems in less time, are pursuing distributed and parallel solutions in high-performance computing (HPC) distributed environments made out of commercial off-the-shelf (COTS) multiprocessor, multicore computers. 工程师和科学家们面临着用更少的时间建立复杂系统模型的需求,他们使用分布式和并行计 算来解决高性能计算的问题。这些分布式的环境由多处理器和多核计算机来实现。 并行计算工具箱和 Matlab 分布式计算服务器允许你在 Matlab 中建模和开发分布式和并行应 用,并在多核处理器和多核计算机中执行他们,而且并不离开你的及时开发环境。用这种方 法来执行模型,你可以解决更大的问题,盖更多的仿真情景并减少桌面资源。 开发分布式应用 分布式应用或者并行应用,包含独立的任务,它可以独立的执行,而并不需要任务间的通信。 对于分布式应用来说,你可以使用分布式计算工具箱中的函数来为你的应用定制独立的计算 任务,它可以被收集到分布式的任务中并集群的提交执行。 开发并行应用 并行应用包含相互依存的任务,它在应用执行的过程中交换数据。工具箱和引擎包含基于 MPI 标准的函数,它支持 Matlab 开发并行应用中的通信。然而,使用这些基于 MPI 功能的 函数包含跟踪消息传递的详细信息,像在处理器和控制处理器间的通信。 并行计算工具箱用两种重要的方式简化了并行应用的开发。首先,工具箱支持分布式矩阵, 它在对待分布式处理器的数据时,把它作为一个单独的矩阵,而不是作为在不同处理器上的 独立的矩阵。通过分布式矩阵,研究人员可以直接的在矩阵中展示操作,而并不需要处理复 杂的信息传递。工具箱为分布式矩阵提供了超过 150 个的 Matlab 函数,包括基于 ScaLAPACK 的线性算数。第二,工具箱包含新的交换的并行执行模型。从而,研究人员可以在许多个处 理器和内核中,并行同时的工作。这个模式可用于交互的开发、设计开发和解决问题。 支持调度程序 对于任务调度工作,你可以或者使用 MathWorks 的工具经理,这个调度程序。它配置在引 擎中或者第三方的调度程序。这个工具箱和引擎支持所有的第三方的调度程序,像 LSF 平 台,Microsoft Windows Compute Cluster Server, PBS, 和 Sun Grid Engine。或者直接的,或 者通过基因调度接口来实现。这些资源包括安装脚本,在线技术解决和供应商提供的一体化 脚本。这些都可以帮助你结合工具箱和引擎到你已经存在的计算环境中。 /Article/D-P.html (二)Matlab 分布式计算工具箱使用指南(转载) 使用 Matlab 进行分布式计算需要两个产品: 1、分布式计算工具箱(Distributed Computing Toolbox) 2、Matlab 分布计算引擎 MDCE(Matlab Distributed Computer Engine)
分布式应用程序的工作流程一般是:
1.寻找一个作业管理器(或者作业调度程序(scheduler))——你的网络上可能有一个或多个作 业管理器(但是通常只有一个 scheduler);用来寻找一个作业管理器或者作业调度程序的函 数 findResource()在当前 MATLAB 内核中创建一个对象,用来表示将要运行作业的作业管理 器或者作业调度程序.
二、启动一个 Job Manager 复制内容到剪贴板 代码: startjobmanager -name matlabsky -v %启动一个名为 matlabsky 的作业管理进程 jm = findResource('scheduler','type','jobmanager', 'Name', 'matlabsky'); %找出 PC 上有效的分布 计算资源 三、启动 Worker 复制内容到剪贴板 代码: startworker -name worker1 out = findResource('worker') waitForState(job, 'finished',1000) jm=findResource('scheduler','type','jobmanager','name','default_jobmanager'); 四、分布式计算工具箱示例 在运行示例之前,必须先安装 MDCE,然后启动一个 Job Manager 和若干个 Worker,并 且在 Job Manager 中注册 Worker。要查看 MDCE 进程的状态,可以用 nodestatus.bat 批处理 文件来查看。如果在 Job Manager 中没有注册 Worker,那么 Job Manager 就没有办法把任务 分配给 Worker 计算,当调用 waitForState(job, 'finished')命令时,就会发生死锁。
在解释分布式数组之前,先说明一个专用词汇:lab.当 MATLAB 工作进程开始工作时,它们在 默认情况下是独立工作,也可以相互通信协同工作.这时他们被称为 labs. 分布式数组是存储 一组 labs 中分割后各部分数据的特殊数组. 你可以进行各种操作,如变换,直接分解分布式阵 列, 就像使用常用数组一样.