中尺度气象预报模式mm5并行计算与优化new

中尺度气象预报模式mm5并行计算与优化new

ID:34486560

大小:287.68 KB

页数:5页

时间:2019-03-06

中尺度气象预报模式mm5并行计算与优化new_第1页
中尺度气象预报模式mm5并行计算与优化new_第2页
中尺度气象预报模式mm5并行计算与优化new_第3页
中尺度气象预报模式mm5并行计算与优化new_第4页
中尺度气象预报模式mm5并行计算与优化new_第5页
资源描述:

《中尺度气象预报模式mm5并行计算与优化new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.paper.edu.cn中尺度气象预报模式MM5并行计算与优化彭小桐河海大学计信院计算机系,南京(210098)E-mail:flygirl2010@126.com摘要:MM5中尺度数值预报模式是一个开放源码项目,针对平台的性能研究与优化颇具现实意义。影响MM5并行计算效率的因素主要有两个,一个是CPU之间通信量的过大,另外一个是CPU之间的负载不平衡,解决了这两个问题,并行计算的效率和加速比将会获得更好的结果。关键词:MM5;并行计算;优化中图分类号:TP311.51.引言中尺度区域数值预报模式MM5是是美国恩卡NCAR实验室的研究成果,

2、它已成为目前气象领域应用最广泛的中尺度预报模式之一。从气象角度看,产生暴雨、造成洪涝的天气系[1]统均属于中、小尺度天气系统。MM5模式水平分辨率可达5KM,垂直分辨率可达40层,[2]网格嵌套层数最多可达10层,业务上使用MM5模式分辨率高,计算规模巨大。MM5以较高分辨率进行的未来24~48小时的短期数值天气预报,但随着精度的提高,计算复杂度的增加,就无法保证预报的实时性。因此研究MM5模式的并行模式及并行效率具有很大的价值。2.系统介绍2.1概述MM5V3的模式原代码包含了220多个子程序和大约55500行的原代码(包括注释)。为了使它可以用于多种平台,在

3、编写原代码时使用了通用的标准FORTRAN。而且这些代码[1]本身是独立的,这样就不需要运行额外的库。2.2向量化因为代码的开发原本是为了在Cray上运行地更有效,所以近可能地使它向量化。在这些机器上运行一个向量化的循环比运行一个非向量化的循环要快几倍。为了获得这种效果,内层的do循环通常是水平方向的。这样,不但可以最大化向量的长度,同时也能减少对下标依赖的可能性。对于非向量的小缓存机子这并不是很理想,因为这些循环被执行时其内层循环都很长,而这会导致更频繁的内存调用。即使大多数的物理效果都作用于垂直列上,这些物理过程仍采用整个南北向的切片(参见下一节)以使向量化

4、可以被作用于I方向(南北向)(图1)-1-http://www.paper.edu.cn图1MM5向量化方法2.3并行化又因为能共享内存的Cray并行处理器的发展,所以代码被结构化以有效地使用这个特性。以并行的方式来使用多个处理器可以加速完成任务,其实际加速的效果依赖于并行效率。通常对于MM5而言,8个处理器执行任务可以使效率提高6倍。虽然这会花费更多的CPU时间,但是它能为快速地进行实时预报带来利益,而且收费算法对有效的并行任务有利,可以得到较低的收费队列。此代码也包括了用于SGI的并行指令,在理论上它们能在任何的多处理器工作站上并行运算。为了能够有效地获得并

5、行效果,我们的do循环通常分布于各处理器。比如,在SOLVE程序中有几个并行的J循环。J是东西方向的水平下标,通过对J下标的外层循环,物理计算在南北向的垂直切片上进行。当一个J循环是多任务时,每个J值进入一个不同的处理器,这样每个处理器就处理一个不同的南北向的垂直切片。当处理器结束了某个切片的计算以后,它就取用下一个可用的J片。很明显应该仔细地编写代码以实现并行运算,更重要地是每个J切片的计算必须独立于其他切片的计算结果。代码的多任务部分在共享和私有(或局部)内存之间有明显的区别。共享内存能够被所有的处理器使用,而私有内存只能被单个的处理器使用,因而每个处理器有

6、它自己的对这些数组的拷贝。通常多任务的预处理器可以决定哪些变量可以共享或私有,但是也需要有一些声明,尤其是对于在一个多任务循环中传入子程序的变量。通常在并行区域中(只读)为常值的标量和数组应该被共享,而那些其值会改变(写入)的变量应为私有。主要的一个例外是含有多任务下标的一个数组(比如在一个J多任务循环中的J下标)。这些数组必须被共享而且如果此数组被写入的话则要特别地小心。最安全的是避免在一个多任务的J循环中引用诸如J+1,J-1等元素。对J的循环是随机执行的,因此不应该存在对其他J切片的结果的依赖。2.4分布式内存形式分布式内存的机器正越来越普及。这种机器通过

7、把格点分布到许多个独立的处理器上来运行格点场。这些处理器仅计算和存储格点的子区域(sub-area)信息。计算过程中的多个点上需要有处理器间的通讯。但是编码必须尽量减少这些通讯过程以保持效率。1998年,在2.8版中为MM5加入了一个功能使它可以在拥有分布式内存的机器上运行。这涉及到了代码的预编译步骤。它使用大多数与标准MM5相同的代码,并使用了“ifdefMPP”来分离不同之处。预编译器涉及到了两个阶段。当首先使用FLIC(FortranLoopandIndexConverter)时,将会用普通的FLIC指令来替换DO循环,同时代码的其他部分将被修改以适应分布

8、式-2-http://w

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。