并行式matlab平台搭建,并行式matlab平台搭建

摘要:本次论文首先对并行计算进行了基础性的分析,主要包括软、硬件体系结构、编程模型、算法等,涉及了并行计算中的新技术,也包含了传统的算法。在比较了MPI、PVM和OpenMP作为编程模型的利弊之后,选择了MPI作为并行计算环境,最后在搭建好的并行式Matlab平台中运行了几个例子,初步展现了并行计算的高效与快捷。

关键词:并行计算;Matlab;信息传递接口

中图法分类号:TP316文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c

化工过程系统通常采用基于过程机理和严格物性计算的精确数学模型,需要耗费大量的计算时间才能求解。尽管目前计算机的硬件和和处理能力已经有了极大的提升,但单纯依赖单机直接进行大规模化工过程系统优化尚有许多困难。采用个人计算机机群系统的分布式并行计算技术为大规模、非线性的化工系统优化问题提供了一个扩展性好、易于实现的解决方案。并行计算机和并行计算环境的研究一直是高性能计算研究领域的热点之一。

1 集群简介

集群(cluster)就是向用户提供网络资源的一组计算机,其中的每个计算机系统就是集群的节点(node)。集群就是一个系统,而非多个计算机系统.并且集群系统的管理员可以随意增加和删改集群系统的节点。对集群的研究起源于集群系统的良好的性能可扩展性。提高CPU主频和总线带宽是最初提供计算机性能的主要手段。但是这一手段对系统性能的提供是有限的。接着人们通过增加CPU个数和内存容量来提高性能,于是出现了向量机,对称多处理机(SMP)等。但是当CPU的个数超过某一阈值,像SMP这些多处理机系统的可扩展性就变的极差。主要瓶颈在于CPU访问内存的带宽并不能随着CPU个数的增加而有效增长。与SMP相反,集群系统的性能随着CPU个数的增加几乎是线性变化的。如下图

图1 集群系统的性能与CPU关系

2 MPI、PVM和OpenMP的介绍

由于消息传递并行编程模型的广泛应用,目前已经出现了许多基于该模型的并行编程语言,其中最流行的是PVM(Parallel Virtual Machine)、MPI(Message Process Interface)和OpenMP。第一个将工作站集群作为并行计算平台并被广泛接受的并行编程语言是PVM。它由美国的Oak Ridge国家实验室、Tennessean大学、Emorg大学、CMU大学等联合开发而成,能够将异构的Unix计算机通过异构网络连接成一个"虚拟"的并行计算系统,为其上运行的应用程序提供分布式并行计算环境。

PVM是一种基于局域网的并行计算环境。它通过将多个异构的计算机有机地组织起来,形成一个易于管理、易于编程、并且具有很好的可扩展性的并行计算环境。MPI是为开发基于消息传递模型的并行程序而制定的工业标准,其目的是为了提高并行程序的可移植性和易用性。 OpenMP起源于ANSI X3H5标准,它具有简单、移植性好和可扩展等优点,是共享存储系统编程的一个工业标准。实际上OpenMP并不是一门新的语言,它是对基本语言(如Fortan77、Fortan90、C、C++等)的扩展。

3 基于Matlab的分布式并行优化计算环境

现有的基于消息传递的并行计算平台如PVM、MPI,都是一种通用的消息传递环境,功能非常强大。但是由于其抽象层次较低,它们并未将程序员从低层的并行实现策略中解脱出来。发送端和接受端的通讯匹配、系统死锁的避免以及并行系统性能的预测等问题都对程序设计人员提出了很高的要求。

目前的常用仿真计算都是基于Matlab环境,因此,开发基于Matlab的并行计算平台也有很大的必要性。在本文讨论的设计中,并行优化平台的运行是在Matlab环境中进行的,由于Matlab是一种跨平台软件,因此整个并行计算环境也间接地实现了跨平台,满足了在Windows平台下并行计算的需要。在平台实现中,如果能有效地利用大粒度的分解计算,可以降低程序实现的复杂性。从机群系统的应用要求上来看,也需要大粒度的并行,以减少通讯开销,从而获得更高效率。因此,并行优化计算环境的设计是大粒度的。基于Matlab的并行优化计算平台的层次结构基本上可以由图2来表示,采用消息传递模式,消息传递时利用同步阻塞方式。

图2 并行优化计算平台层次结构

根据并行的基本原理,可以得出结论:并行计算无外乎任务的分解和综合。并行优化计算平台设计也应依照此原理来进行,同时采用共享文件作为并行的数据传输方式。Matlab下有很多的工具库函数,各类不同的计算往往通过不断调用工具库中的函数来实现。同样,也可以设计一个并行基础函数库,提供实现并行计算所需要的最基本函数。并行的函数,如果不涉及到平台的管理,基本上可以划分为初始化函数,发送接收任务函数、进行任务函数和回送并综合结果函数四大类。

4 并行式Matlab平台搭建

第一步:Matlab2007a的安装

第二步:联机

本次论文用的是由两台普通PC机(名为use1的华硕A8笔记本电脑和名为use2的清华同方台式机)连接构成的小集群,由于机器数目比较少,我们直接用交叉线把电脑连了起来,从而构成一个局域网就可以了。

第三步:在Windows上配置MDCE

第四步:用任务管理器测试已安装的MDCE

(1)检查网络连接

(2)执行一个分布式程序

(3)创建、定义、执行job

5 平台应用举例

(有公式输入 注意)

的数值计算

(1)介绍:我们已经知道有:,根据等式左边的 积分可以估算出 的值,下面将分别在单机和并行式Matlab平台中来计算 的值。

(2)单机计算:

程序如下

>>Format long

>>tic

F= @(x) 4./(1 + x.^2)

a=(labindex - 1)/numlabs;

b=labindex/numlabs;

[a,b]

myIntegral = quadl(F, a, b)

piApprox = gplus(myIntegral)

abs(pi - piApprox)

toc

e=toc

由上述结果可以看出:单机运行这个程序总共花了0.014315227214632秒时间

(3)并行计算

准备步骤:

(1)按照第五章各项步骤搭建好并行式Matlab平台

(2)输入程序如下

Format long

tic

F= @(x) 4./(1 + x.^2)

a=(labindex - 1)/numlabs;

b=labindex/numlabs;

[a,b]

myIntegral=quadl(F, a, b)

piApprox=gplus(myIntegral)

abs(pi-piApprox)

toc

e=toc

运行这个程序总共花了0.008894705891391秒时间

(4)小结:由上面的实验可得:串行运行时间 s,并行运行时间 s,如下图:

加速比: ,效率:

6 结束语

上面的实验可以表明:同样的任务在并行计算环境中的执行时间比单机下执行所需时间要稍长一些,这是由于电脑之间的信息传递需要损耗一些时间,此外还受到网络的影响等。如果允许的话,我们应尽可能使用更高配置的电脑、更高性能的其它硬件网络设施,这样的条件下来执行更庞大、复杂的任务,那么并行计算的效率将会是更高的,其高效、快捷的优势将显得更为突出。

参考文献:

[1]C.Connors and J.Upchurch.A forward modeling program for fault-bend folding.Geological Society of America Abstracts with Programs,v.34,2002.

[2]D.T.Kaplan. Introduction to Scientific Computing and Programming.Brooks/Cole,Belmont,California,2004.

[3]都志辉.高性能计算之并行编程技术―MPI并行程序设计.清华大学出版社,2001.8.

[4]张林波,迟学斌.并行计算导论.清华大学,2006.1.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中,可以使用并行计算工具箱(Parallel Computing Toolbox)来实现并行滤波。下面是一个示例代码,展示了如何使用MATLAB进行并行滤波: ```matlab % 假设有一个图像img,需要对其进行滤波 img = imread('image.jpg'); % 定义滤波器 filter = fspecial('gaussian', [3 3], 1); % 以高斯滤波为例 % 利用并行计算工具箱创建一个并行计算池(parpool) pool = parpool(); % 创建默认的并行计算池 % 将图像切分成多个块,并使用parfor循环进行并行处理 blockSize = 100; % 每个块的大小 [M, N, ~] = size(img); filteredImg = zeros(M, N, 'uint8'); % 初始化输出图像 parfor i = 1:blockSize:M for j = 1:blockSize:N % 处理每个块的像素 iEnd = min(i+blockSize-1, M); jEnd = min(j+blockSize-1, N); block = img(i:iEnd, j:jEnd, :); filteredBlock = imfilter(block, filter); filteredImg(i:iEnd, j:jEnd, :) = filteredBlock; end end % 关闭并行计算池 delete(pool); % 显示原始图像和滤波后的图像 figure; subplot(1, 2, 1); imshow(img); title('原始图像'); subplot(1, 2, 2); imshow(filteredImg); title('滤波后的图像'); ``` 在上述代码中,通过创建并行计算池(parpool)和使用parfor循环,可以实现对图像的并行处理。每个块都在独立的工作线程中进行滤波操作,然后将结果合并成最终的滤波图像。 需要注意的是,并行计算在处理较大图像时可能会占用较多的系统资源,因此需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值