收藏 分享(赏)

高性能计算.ppt

上传人:sjmd695 文档编号:9537618 上传时间:2019-08-13 格式:PPT 页数:16 大小:517KB
下载 相关 举报
高性能计算.ppt_第1页
第1页 / 共16页
高性能计算.ppt_第2页
第2页 / 共16页
高性能计算.ppt_第3页
第3页 / 共16页
高性能计算.ppt_第4页
第4页 / 共16页
高性能计算.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、Matlab并行计算之parfor介绍 及其在小孔衍射计算上的应用,内容提要,1 利用parfor对for循环进行并行介绍 1.1 循环 1.2 利用parfor并行for循环的基本原理 1.3 配置Matlab并行计算池 1.4 能够直接用parfor关键字改写的几类类串行for代码 2 方孔衍射图案计算程序设计 2.1 数学模型 2.2 程序分析与设计 2.3 总结,1.1 循环,循环分为两种:一种是固定次数的循环,另一种是非固定次数的循环。在Matlab程序中,提高循环的计算效率往往是提高程序设计效率的关键。,Matlab程序中,循环结构的一般形式如下:,for i=i_begin :

2、i_step : i_end计算模块 end,其中i为循环变量,i_begin、i_step 和i_end分别为循环变量的起始值、步长和终止界。,1.2 利用parfor并行for循环的基本原理,由for关键字表示的循环可以通过parfor关键字进行并行。parfor关键字主要是针对循环进行并行,其将循环分解为独立的部分,然后将各个部分并行执行,提高程序的执行效率。 Matlab并行执行parfor循环是采用client和worker模式。其中client指编写和启动并行代码的Matlab端,worker是指并行运行代码的Matlab端。 用户首先在client端编写并行代码,然后运行并行代码

3、。Client端在运行Matlab代码的过程中,如果发现摸个代码需要并行执行,Matlab client端根据并行代码的关键字及类型将并行代码分配到本机或网络上的其他Matlab进程执行,那些最终执行并行代码的Matlab进程即为worker。,parfor关键字并行执行for循环时,会将for循环划分为若干部分,每个部分交友不同的worker执行。假设worker数量为m,循环次数为n,则n/m如果能整除的话,则循环将会被均匀划分;如果不能整除的话,循环会被非均匀的划分,其中某些worker会执行较多的循环次数。其执行的基本步骤如下图所示:,默认的情况下,Matlab启动时只有一个进程,因此

4、默认的情况下Matlab执行parfor关键字标识的循环是串行的。Matlab并行执行parfor循环之前需要打开Matllab并行计算池。 Matlab并行计算池打开后,其中包含若干可以运行Matlab并行程序的Matlab进程(即worker),通过多个Matlab worker并行执行parfor循环。 Matlab并行计算池管理若干个worker,每个worker都可执行分配的并行计算任务,其对应的物理单元即处理器或处理器核。对于某个处理单元,如果其上运行一个worker,则此处的处理单位便可被用于执行循环的某一部分。只有启动了并行计算池,parfor关键字在执行的时候,才能达到并行执

5、行循环的目的。,1.3 配置Matlab并行计算池,1.4 能够直接用parfor关键字改写的几类类串行for代码,各次循环对应的循环体操作相互独立的串行代码:,从上面的代码,可以看出直接将for替换成parfor,就可将并行循环变为并行循环。,循环体内并不独立,但循环执行的结果与执行的顺序无关。此类操作被成为简约操作,上述代码执行后,for循环体依次执行,单次循环操作依赖上次执行的结果,但循环的求和的结果与求和的顺序无关。Matlab对简约操作进行了处理,准许采用parfor关键字对简约操作对应的for循环进行并行执行,parfor循环执行的结果与for相同。,报错的信息如下:,2.1 数学

6、模型,屏上任意一点的光场公式:,为了便于编程计算,将上式改写成:,2.2 程序分析与设计,屏上任意一点的光场决定于方孔上所有点光场的叠加,所以要计算出屏上的一点的光场分布,就要遍历方孔上的所有点。遍历方孔上的所有点需要一个两重循环,而要计算出屏上所有接收点的光场分布,也需要一个两重循环,所以完成这个计算就要是一个四重循环。这样的计算的数据量是相当大的,如单单只用for循环进行计算就需要花费大量的时间。,由于屏上每点的光场是方孔上所有点光场的线性叠加,这与叠加的顺序无关,因此可以分别计算方孔上的点对屏上光场的贡献,之后再将结果相加就可以得到屏上光场的分布。据此,对应与parfor简约操作原理,可以将原先的串行程序改写为并行的程序,以加快计算速度,提高计算的效率。,运行结果,运行时间:for循环代码(一) 681.286710 sfor循环代码(二) 49.663763 sparfor改编代码 37.674767 s,2.3 总结,Matlab中for循环的运算效率要远远比矩阵运算的低,因此在数据就算量较大的情况下,可以考虑将循环运算矩阵化。用parfor关键字进行并行计算,在循环次数较多的情况下,可以提高计算效率,但由于并行计算是Matlab新推出的功能,还有很多不完善的地方,因此在编程的时候,可以编写一个简单的并行程序进行的简单验证,也可以以此来查找程序出错原因。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报