System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种水声传播射线模型的MPI动态调度并行加速方法技术_技高网

一种水声传播射线模型的MPI动态调度并行加速方法技术

技术编号:41696156 阅读:2 留言:0更新日期:2024-06-19 12:31
本发明专利技术属于高性能计算与计算海洋声学技术领域,特别是涉及水声传播射线模型的MPI动态调度并行加速方法。包括如下步骤:对水声传播射线模型的串行代码开展并行性分析,建立MPI动态调度并行策略;分解静态任务和动态调度任务;完成射线计算,完成动态调度过程,当动态调度任务完成后;在全局通信域中,所有进程将声压矩阵进行相加规约,最终结果存储于主进程中,主进程将声压矩阵写入结果文件中。本发明专利技术相较于OpenMP并行,能够在多节点集群系统上运行,并行加速比上限极大提高,克服了MPI静态任务分配极易出现的负载不平衡问题,又极大地缩减了进程间的通信时间,保证了静态任务分配时的负载平衡。

【技术实现步骤摘要】

本专利技术属于高性能计算与计算海洋声学,特别是涉及水声传播射线模型的mpi动态调度并行加速方法。


技术介绍

1、由于声波具有在海洋水体中衰减缓慢、传播距离远的优势,广泛地应用于海洋水下目标探测和水下通信。为了对声波在海洋中的传播进行仿真模拟,学者们提出了不同的海洋声场计算模型,模型之间特点各异,分别适用于不同场景下的声场计算。常见的海洋声场计算模型有射线模型、简正波模型、波束积分模型、抛物模型。其中,射线模型适用于高频声源情况下的声场计算,具有计算速度快、物理意义清晰的优势。然而,在实际的海洋工程应用中,往往需要对海洋区域进行网格化的划分,并在网格化后的区域内分别进行声场计算。随着海洋再分析数据的分辨率的提升,需要进行声场计算的网格数量越来越多,计算量剧烈增长。以欧洲哥白尼海洋数据中心的海洋模式数据为例,可计算出精度为0.1°×0.1°的声速剖面数据,在计算三维声场时,如果每个中心点计算16个方位角,那么在100km×100km的范围内需要的声场环境数量为1600个,声场的串行计算时间超过一天,巨大的计算量极大地限制了声场信息在海洋工程中的应用。

2、并行计算是一种可以同时利用多种计算资源解决计算问题的有效方法。目前可以取得60%以上的并行的效率。然而基于openmp共享存储式编程模型的并行加速方法在线程级上能够实现良好的负载平衡,但其固有的共享存储式的并行模式使得其无法应用于多机集群系统,这限制了其加速比的提升上限。基于mpi分布存储式编程模型的并行加速方法得益于分布式并行模式,程序可拓展到多机集群系统中,但粗粒度的任务划分极易导致负载不平衡,进一步影响并行效率。


技术实现思路

1、本专利技术的目的在于,将水声传播射线模型拓展到多机集群系统上的同时克服负载不平衡的问题,基于分布式并行编程模型提高水声传播射线模型的计算速度。

2、为实现上述目的,本专利技术采用如下技术方案。

3、一种水声传播射线模型的mpi动态调度并行加速方法,包括如下步骤:

4、步骤1,对水声传播射线模型的串行代码开展并行性分析,基于集群多核cpu计算架构,建立mpi动态调度并行策略;

5、步骤2,并行环境初始化,确定进程数目,在每个进程中完成环境参数初始化,根据输入文件中总的射线数目,将其分解成静态任务和动态调度任务两部分;

6、步骤3,子进程完成静态任务中的射线计算,完成静态任务的子进程与主进程一同进入动态调度过程,当动态调度任务完成后,主进程向子进程发送完成指令,子进程停止射线计算;

7、步骤4,在全局通信域中,所有进程将声压矩阵进行相加规约,最终结果存储于主进程中,主进程将声压矩阵写入结果文件中。

8、对前述水声传播射线模型的mpi动态调度并行加速方法的进一步完善或者具体实施方式,所述步骤1具体包括:

9、步骤1.1,对水声传播射线模型的串行代码开展并行性分析,将水声传播射线模型的串行代码分解为环境读取与初始化、射线声场计算、结果存储三部分;其中,环境读取与初始化与结果存储两部分存在数据相关性,代码以非并行方式处理,射线声场计算是对所有的射线束进行遍历,逐条求解射线对最终声场的影响,该部分的射线束之间不存在数据相关性,代码以并行方式处理;

10、步骤1.2,基于集群多核cpu计算架构,建立mpi动态调度并行策略;根据给定的进程数目,设置一个主进程,负责分配计算任务,其余进程为子进程,负责声场的计算。

11、对前述水声传播射线模型的mpi动态调度并行加速方法的进一步完善或者具体实施方式,所属步骤2具体包括:

12、步骤2.1,并行环境初始化,确定进程数目n,若为单节点机器,设置最大进程数不超过实际核心数,若为多节点集群系统,设置最大进程数不超过节点数×单节点核心数;对n个进程进行编号,0号进程为主进程,1~n-1号进程为子进程;

13、步骤2.2,在每个进程中完成声场环境参数初始化,具体的环境参数包括声源频率、声源位置、海洋边界条件、声速剖面、声传播衰减系数、接收器范围、射线掠射角范围、射线数量、声场计算范围;射线数量设置为进程数目的整数倍;

14、步骤2.3,根据输入文件中总的射线数量nbeam,采用循环块划分的方式将射线分成n份子任务,其中第k、k+n、k+2n、……为第k份子任务;每份子任务中包含nbeam/n条射线,前n-1份子任务为静态任务,最后1份子任务为动态调度任务。

15、对前述水声传播射线模型的mpi动态调度并行加速方法的进一步完善或者具体实施方式,所述步骤3包括如下步骤:

16、步骤3.1,将静态任务中的n-1份子任务分别分配给n-1个子进程,每个子进程分别遍历各自需要计算的射线,在对单条射线进行计算时,首先计算出射线中心的相位和幅度,而后通过控制函数确定该条射线对总声场的贡献;其中,单条射线中心的相位和强度通过求解获得,其求解方程为:

17、

18、

19、步骤3.2,子进程完成静态任务的计算后,利用mpi_send函数向主进程发送标识tag=1的消息,主进程通过mpi_recv函数接收到消息后,进入动态调度过程,初始化变量nrecv=0,j=n,识别mpi_recv函数中的status.tag变量,若status.tag=1,更新变量nrecv=nrecv+nbeam/n,主进程利用mpi_send函数将第j条射线的计算任务发送给对应子进程,而后更新变量j=j+n;

20、步骤3.3,在动态调度过程中,每当子进程完成一条射线计算任务,子进程利用mpi_send函数发送标识tag=2的消息给主进程,主进程通过mpi_recv函数接收到消息后别mpi_recv函数中的status.tag变量,若status.tag=2,更新变量nrecv=nrecv+1,再利用mpi_send函数将需要计算的一条射线任务j给子进程,而后更新j=j+n,主进程返回消息接收状态,循环往复;

21、步骤3.4,当j大于或等于nbeam时,代表动态调度任务中的所有射线计算分配完成,由于此时射线的计算尚未被子进程完成,主进程保持消息接收状态,每接到一条消息,nrecv=nrecv+1,循环往复,直至nrecv大于或等于nbeam,子进程停止射线计算,主进程与子进程一同退出动态调度过程。

22、对前述水声传播射线模型的mpi动态调度并行加速方法的进一步完善或者具体实施方式,所述步骤4具体包括:

23、步骤4.1,将主进程中的声压矩阵的元素均赋值为0,在主进程与所有子进程组成的全局通信域中,使用mpi消息通信接口中的规约函数对每个进程中的声压矩阵进行相加规约,规约后的声压矩阵存储于主进程中;

24、步骤4.2,将主进程中的声压矩阵写入.shd格式的文件中。

25、对前述水声传播射线模型的mpi动态调度并行加速方法的进一步完善或者具体实施方式,所述步骤3.1中,对本文档来自技高网...

【技术保护点】

1.一种水声传播射线模型的MPI动态调度并行加速方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的水声传播射线模型的MPI动态调度并行加速方法,其特征在于,所述步骤1具体包括:

3.根据权利要求1所述的水声传播射线模型的MPI动态调度并行加速方法,其特征在于,所属步骤2具体包括:

4.根据权利要求1所述的水声传播射线模型的MPI动态调度并行加速方法,其特征在于,所述步骤3包括如下步骤:

5.根据权利要求1所述的水声传播射线模型的MPI动态调度并行加速方法,其特征在于,所述步骤4具体包括:

6.根据权利要求4所述的水声传播射线模型的MPI动态调度并行加速方法,其特征在于,所述步骤3.1中,对于高斯射线,单条声线对声场影响体现的高斯控制方程为:

【技术特征摘要】

1.一种水声传播射线模型的mpi动态调度并行加速方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的水声传播射线模型的mpi动态调度并行加速方法,其特征在于,所述步骤1具体包括:

3.根据权利要求1所述的水声传播射线模型的mpi动态调度并行加速方法,其特征在于,所属步骤2具体包括:

4.根据权利要求1所述的水声传播...

【专利技术属性】
技术研发人员:廖思远肖汶斌王勇献程兴华
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1