Matlab 并行计算工具箱

本文详细介绍了Matlab分布式计算工具箱的使用,包括分布式和并行编程的概念,如何创建作业、任务,以及分布式数组的使用。通过实例展示了如何编写分布式应用程序,如并行for循环和分布式数组的应用,帮助开发者更高效地利用多核处理器进行计算。

 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。或者直接的,或者通过基因调度接口来实现。这些资源包括安装脚本,在线技术解决和供应商提供的一体化脚本。这些都可以帮助你结合工具箱和引擎到你已经存在的计算环境中。 http://www.matlab-download.cn/Article/D-P.html

(二)Matlab分布式计算工具箱使用指南(转载)

使用Matlab进行分布式计算需要两个产品:
1、分布式计算工具箱(Distributed Computing Toolbox)
2、Matlab分布计算引擎MDCE(Matlab Distributed Computer Engine)

MDCE主要用于执行Clinet Session中定义的job和task


一、安装MDCE
MDCE安装在D:/Program Files/MATLAB/R2008a/toolbox/distcomp/bin目录下:
在Matlab的command windows中执行
复制内容到剪贴板
代码:
mdce install %安装引擎
mdce start %启动引擎
执行上面两条命令后,分布式计算引擎服务程序就安装完毕了。MDCE就是一个服务进程,在使用MDCE 之前需要首先启动它。

二、启动一个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')命令时,就会发生死锁。

1、Programming a Basic Job with a Job Manager
复制内容到剪贴板
代码:
jm=findResource('scheduler','type','jobmanager','name','ccy');
j = createJob(jm);
createTask(j, @sum, 1, {[1 1]});
createTask(j, @sum, 1, {[2 2]});
createTask(j, @sum, 1, {[3 3]});
submit(j);
waitForState(j)
results = getAllOutputArguments(j)
destroy(j)
2、使用分布式计算工具箱来计算Pi的值
复制内容到剪贴板
代码:
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
       
### MATLAB 并行计算工具箱使用指南与功能介绍 MATLAB并行计算工具箱(Parallel Computing Toolbox, PCT)为用户提供了一种简单而强大的方法来加速计算密集型任务[^1]。通过利用多核处理器、GPU 和分布式计算资源,用户可以显著缩短运行时间,特别是在处理大规模数据集或执行复杂模拟时。 #### 1. 并行计算工具箱的功能概述 并行计算工具箱提供了多种功能,用于加速科学计算和工程应用中的任务。这些功能包括但不限于以下几点: - **并行for循环(parfor)**:允许用户在多个工作线程中同时执行循环迭代,从而减少计算时间[^3]。 - **分布式数组**:支持将大型矩阵分割成多个部分,并在多个计算节点上存储和操作这些部分。 - **GPU 计算**:利用图形处理单元的强大计算能力来加速数值计算[^3]。 - **集群计算**:结合 MATLAB 分布式计算引擎(MDCE),可以在高性能计算集群上扩展并行计算任务[^2]。 #### 2. 使用方法与示例教程 以下是几个常见的使用场景及其代码示例: ##### (1) 使用 `parfor` 加速循环计算 `parfor` 是一种并行化的 for 循环结构,适用于独立的迭代任务。以下是一个简单的示例,展示如何使用 `parfor` 来计算一组数字的平方根: ```matlab % 初始化一个空数组 n = 1000; results = zeros(1, n); % 使用 parfor 进行并行计算 parfor i = 1:n results(i) = sqrt(i); end disp(results); ``` ##### (2) 利用 GPU 加速矩阵运算 MATLAB并行计算工具箱支持 GPU 计算,可以通过 `gpuArray` 将数据传输到 GPU 上进行处理。以下是一个矩阵乘法的示例: ```matlab % 创建两个大矩阵 A = rand(1000); B = rand(1000); % 将矩阵传输到 GPU A_gpu = gpuArray(A); B_gpu = gpuArray(B); % 在 GPU 上执行矩阵乘法 C_gpu = A_gpu * B_gpu; % 将结果从 GPU 收回主机内存 C = gather(C_gpu); disp(C); ``` ##### (3) 使用分布式数组进行大规模数据处理 当需要处理无法完全加载到单个计算机内存中的数据时,可以使用分布式数组。以下是一个简单的示例: ```matlab % 创建一个分布式数组 D = distributed(magic(1000)); % 对分布式数组执行操作 E = D * 2; % 收集结果到本地 F = gather(E); disp(F); ``` #### 3. 配置与优化建议 为了充分利用并行计算工具箱的功能,用户需要注意以下几点: - **设置最大工作线程数**:通过 `parpool` 函数指定要使用的计算资源数量[^1]。 - **避免数据依赖性**:确保 `parfor` 循环中的每次迭代是独立的,否则可能导致错误或性能下降。 - **监控性能**:使用 MATLAB 的 Profiler 工具分析程序性能,识别瓶颈并优化代码[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值